Вопрос по ms-word, r – прочитать файл MSWord в R

8

Можно ли прочитать файл MSWord 2010 в R? У меня Windows 7 и компьютер Dell.

Я использую строку:

my.data <- readLines('c:/users/mark w miller/simple R programs/test_for_r.docx')

попытаться прочитать файл MSWord, содержащий следующий текст:

A   20  1000    AA
B   30  1001    BB
C   10  1500    CC

Я получаю предупреждающее сообщение:

Предупреждающее сообщение: В readLines (& quot; c: / users / mark w miller / simple R Programs / test_for_r.docx & quot;):   найдена неполная последняя строка в & quot; c: / users / mark w miller / simple R Programs / test_for_r.docx & apos;

а такжеmy.data кажется бредом:

# [1] "PK\003\004\024" "¤l"             "ÈFÃË‹Átí"

На этом простом примере я знаю, что могу легко преобразовать файл MSWord в другой формат. Однако мои настоящие файлы данных состоят из сложных таблиц, которые были напечатаны десятилетия назад, а затем отсканированы в PDF-документы. Возраст оригинального бумажного документа и, возможно, недостатки в оригинальной бумаге, процесс печати и / или сканирования привели к тому, что некоторые буквы и цифры были не очень четкими. Пока что преобразование PDF-файлов в MSWord представляется наиболее успешным при правильном переводе таблиц. Преобразование файлов MSWord в Excel или форматированный текст и т. Д. Не было очень успешным. Даже после преобразования в MSWord полученные файлы очень сложны и содержат многочисленные ошибки. Я подумал, что если бы я мог прочитать файлы MSWord в R, это могло бы быть наиболее эффективным способом их редактирования и исправления.

Мне известно о «пакете тм» Я думаю, что он может читать файлы MSWord в R, но я немного обеспокоен его использованием, потому что, кажется, требует установки стороннего программного обеспечения.

Спасибо за любые предложения.

Спасибо за предложения. Я никогда не занимался очисткой веб-страниц, хотя это есть в моем списке вещей, которые нужно изучить. Возможно, это побуждает меня учиться этому. Mark Miller
Что если вы сохраните слово document какhtml а затем используйте пакет для очистки (например,XML или жеRCurl) извлечь текст? mnel
Пакет tm предоставляет функцию readDOC (). Это требует установки внешнего (не R) инструмента с именем antiword. Тем не менее, я считаю, что пакет / инструмент читает только файлы Word до версии 2003 и не будет обрабатывать файлы .docx. readLines () также не является правильным решением; это требует простого текста ASCII в качестве ввода. neilfws
Насколько я знаю, чтение файлов MS Word потребует установки какого-либо пакета из CRAN. Почему вы обеспокоены установкой стороннего программного обеспечения? Jason Morgan
Вы пробовали OCR оригинальных PDF-файлов с Google Docs? Существуют и другие бесплатные онлайн-услуги распознавания текста, которые не требуют установки программного обеспечения. tim riffe

Ваш Ответ

3   ответа
0

Вы можете сделать это с помощью RDCOMClient очень легко. При этом некоторые персонажи не будут правильно читать.

require(RDCOMClient)
# Create the connection
wordApp <- COMCreate("Word.Application")
# Let's set visible to true so you can see it run
wordApp[["Visible"]] <- TRUE

# Define the file we want to open
wordFileName <- "c:/path/to/word/doc.docx"
# Open the file
doc <- wordApp[["Documents"]]$Open(wordFileName)
# Print the text
print(doc$range()$text()) 
Марк, ты уверен, что правильно понял местоположение файла? Я могу эмулировать проблему только путем определения неверного расположения файла.
Когда я пытаюсь этот код, я получаю сообщение об ошибкеException occurred а такжеobject doc not found. setwd('C:/Users/markm/simple R programs'); require(RDCOMClient); wordApp <- COMCreate("Word.Application"); wordApp[["Visible"]] <- TRUE; wordFileName <- "C:/Users/markm/simple R programs/My_test_MSWord_file.docx"; doc <- wordApp[["Documents"]]$Open(wordFileName); print(doc$range()$text()); Mark Miller
6

Первый,readLines() не является правильным решением, поскольку файл Word не является текстовым (то есть простым ASCII-текстом) файлом.

Связанная со словом функция вtm пакет называетсяreadDOC() но и он, и необходимый сторонний инструмент (Antiword) предназначены для более старых файлов Word (до Word 2003) и не будут работать с более новыми файлами .docx.

Лучшее, что я могу предложить, это попробоватьreadPDF()также найден вtm пакет. Примечание: требуется, чтобы инструментpdftotext установлен в вашей системе. Легко для Linux, понятия не имею о Windows. Кроме того, найдите инструмент Windows, который преобразует PDF в простые текстовые файлы ASCII (not Файлы Word) - они должны открываться и правильно отображаться с помощью Блокнота в Windows - затем попробуйтеreadLines() снова. Однако, учитывая, что ваши файлы PDF устарели и поступают со сканера, преобразование в текст может быть затруднено.

Наконец: я понимаю, что вы не приняли первоначальное решение в этом случае, но для кого-то еще - Word и PDF не являются подходящими форматами для хранения данных, которые вы хотите проанализировать.

Я думаю, что это разумный ответ, хотя я думаю, что последнее предложение достаточно важно, чтобы я поставил его первым.
Почему эти люди делают это со мной ???
Я бы перефразировал последнее предложение следующим образом: «Word и PDFnot соответствующие форматы для хранения чего-либо. . Когда-либо & Quot; Microsoft печально известна выпуском версий Office, которые не могут читать более старые форматы файлов (Excel4.0, кто-нибудь?), А PDF - просто. ASCII и epub (это просто zip-файл XML) - гораздо лучший выбор.
1

Я не понял, как прочитать файл MSWord в R, но я получил содержимое в формате, который R может читать.

  1. I converted a pdf to MSWord with Acrobat X Pro

  2. The original tables had solid vertical lines separating columns. It turns out these vertical lines were disrupting the format of the data when I converted an MSWord file to a text file, but I was able to delete the lines from an MSWord file before creating a text file.

  3. Convert the MSWord file to a text file after deleting vertical lines in Step 2.

  4. Resulting text files still require extensive editing, but at least the data are largely present in a format R can read and I will not have to re-enter all data in the pdfs by hand, saving many hours of work.

Еще лучшая альтернатива: пусть один из ваших аспирантов сделает это за вас. Конечно, это работает, только если вы профессор, а не студент :-)

Похожие вопросы