Чтение данных из файлов PDF в R
Это даже возможно!?!
У меня есть куча устаревших отчетов, которые мне нужно импортировать в базу данных. Тем не менее, они все в формате pdf. Есть ли R
пакеты, которые могут читать pdf? Или я должен оставить это для инструмента командной строки?
Отчеты были сделаны в excel, а затем в pdfed, поэтому они имеют регулярную структуру, но много пустых "ячеек".
Ответы
Ответ 1
Просто предупреждение для других, которые могут надеяться извлечь данные: PDF - это контейнер, а не формат. Если исходный документ не содержит фактического текста, в отличие от растровых изображений текста или, возможно, даже более уродливых вещей, чем я могу себе представить, ничего, кроме OCR, может вам помочь.
Кроме того, в моем печальном опыте нет гарантии, что приложения, которые создают документы PDF, ведут себя одинаково, поэтому данные в вашей таблице могут быть или не быть считаны в желаемом порядке (в результате документ был построен). Будь осторожен.
Вероятно, лучше сделать пару студентов-градиентов, которые транскрибируют данные для вас. Они дешевые: -)
Ответ 2
Итак... это закрывает меня даже на довольно сложной таблице.
Загрузить образец pdf из bmi pdf
library(tm)
pdf <- readPDF(PdftotextOptions = "-layout")
dat <- pdf(elem = list(uri='bmi_tbl.pdf'), language='en', id='id1')
dat <- gsub(' +', ',', dat)
out <- read.csv(textConnection(dat), header=FALSE)
Ответ 3
Текущий пакет du jour для получения текста из PDF файлов pdftools
(преемник Rpoppler, отмеченный выше) отлично работает на Linux, Windows и OSX:
install.packages("pdftools")
library(pdftools)
download.file("http://arxiv.org/pdf/1403.2805.pdf", "1403.2805.pdf", mode = "wb")
txt <- pdf_text("1403.2805.pdf")
# first page text
cat(txt[1])
# second page text
cat(txt[2])
Ответ 4
Вы также можете (теперь) использовать новый (2015-07) Rpoppler
pacakge:
Rpoppler::PDF_text(file)
Он включает в себя 3 функции (4, на самом деле, но вы просто получаете ptr для объекта PDF):
-
PDF_fonts
Информация о шрифте PDF
-
PDF_info
Информация о документе PDF
-
PDF_text
извлечение PDF-текста
(размещение в качестве ответа, чтобы помочь новым поисковым машинам найти пакет).
Ответ 5
за zx8754... в Win7 работает с pdftotext.exe в рабочем каталоге:
library(tm)
uri = 'bmi_tbl.pdf'
pdf = readPDF(control = list(text = "-layout"))(elem = list(uri = uri),
language = "en", id = "id1")