Извлечение текстовых данных из файлов PDF - PullRequest
41 голосов
/ 04 октября 2010

Можно ли анализировать текстовые данные из файлов PDF в R? Там , похоже, не подходит для такого извлечения , но кто-нибудь пытался или видел это в R?

В Python есть PDFMiner , но я бы хотел сохранить этот анализ в R, если это возможно.

Есть предложения?

Ответы [ 8 ]

29 голосов
/ 04 октября 2010

Linux-системы имеют pdftotext, с которым я имел достаточный успех.По умолчанию он создает foo.txt из заданного значения foo.pdf.

Тем не менее, пакеты для анализа текста могут иметь конвертеры. быстрый поиск по rseek.org похоже совпадает с вашим потрясающим поиском.

26 голосов
/ 06 июля 2016

Это очень старая тема, но для дальнейшего использования: пакет pdftools R извлекает текст из PDF-файлов.

9 голосов
/ 07 июня 2016

Чисто R решение может быть:

library('tm')
file <- 'namefile.pdf'
Rpdf <- readPDF(control = list(text = "-layout"))
corpus <- VCorpus(URISource(file), 
      readerControl = list(reader = Rpdf))
corpus.array <- content(content(corpus)[[1]])

тогда у вас будут pdf строки в массиве.

9 голосов
/ 05 августа 2013

Коллега включил меня в этот удобный инструмент с открытым исходным кодом: http://tabula.nerdpower.org/. Установите, загрузите PDF и выберите таблицу в PDF, которая требует данных.Не прямое решение в R, но, безусловно, лучше, чем ручной труд.

5 голосов
/ 30 мая 2017
install.packages("pdftools")
library(pdftools)


download.file("http://www.nfl.com/liveupdate/gamecenter/56901/DEN_Gamebook.pdf", 
              "56901.DEN.Gamebook", mode = "wb")

txt <- pdf_text("56901.DEN.Gamebook")
cat(txt[1])
5 голосов
/ 02 мая 2016

Приложение tabula PDF Table Extractor базируется на приложении командной строки на основе пакета JAR Java, tabula-extractor .

RПакет tabulizer предоставляет оболочку R, которая позволяет легко передавать путь к файлу PDF и извлекать данные, извлеченные из таблиц данных.

Табула хорошо угадает, где находятся таблицы,но вы также можете указать, на какую часть страницы смотреть, указав целевую область страницы.

Данные могут быть извлечены из нескольких страниц, и для каждой страницы, если требуется, может быть указана отдельная область.

Пример использования см. В: Когда документы становятся базами данных -Упаковщик Tabulizer R для Tabula PDF Table Extractor .

2 голосов
/ 08 марта 2016

Я использовал внешнюю утилиту, чтобы сделать преобразование, и вызвал ее из R. Все файлы имели ведущую таблицу с нужной информацией

Установить путь к pdftotxt.exe и преобразовать pdf в текст

exeFile <- "C:/Projects/xpdfbin-win-3.04/bin64/pdftotext.exe"

for(i in 1:length(pdfFracList)){
    fileNumber <- str_sub(pdfFracList[i], start = 1, end = -5)
    pdfSource <- paste0(reportDir,"/", fileNumber, ".pdf")
    txtDestination <- paste0(reportDir,"/", fileNumber, ".txt")
    print(paste0("File number ", i, ", Processing file ", pdfSource))
    system(paste(exeFile, "-table" , pdfSource, txtDestination, sep = " "), wait = TRUE)
}
0 голосов
/ 11 июля 2019

Здесь есть пакет, извлекающий данные из PDF-файлов с использованием R и API.Нет ограничений на количество PDF-файлов, которые можно конвертировать за один раз: https://github.com/expersso/pdftables

...