Чтение данных из PDF-файлов в R
Это вообще возможно!?!
У меня есть несколько устаревших отчетов, которые мне нужно импортировать в базу данных. Тем не менее, они все в формате PDF. Есть ли R
пакеты, которые могут читать в формате pdf? Или я должен оставить это инструменту командной строки?
Отчеты были сделаны в Excel, а затем в формате PDF, поэтому они имеют регулярную структуру, но много пустых "ячеек".
5 ответов
Просто предупреждение для тех, кто может надеяться извлечь данные: PDF - это контейнер, а не формат. Если исходный документ не содержит фактического текста, в отличие от растровых изображений текста или, возможно, даже более уродливых вещей, чем я могу себе представить, ничто, кроме распознавания текста, не может вам помочь.
Вдобавок ко всему, по моему печальному опыту, нет никакой гарантии, что все приложения, которые создают документы PDF, ведут себя одинаково, поэтому данные в вашей таблице могут или не могут быть прочитаны в желаемом порядке (в результате того, как документ был встроенный). Будь осторожен.
Возможно, лучше, чтобы пара аспирантов расшифровывала данные для вас. Они дешевые:-)
Итак... это сближает меня даже на довольно сложном столе.
Скачать образец 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)
Текущий пакет 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])
Вы также можете (сейчас) использовать новый (2015-07) Rpoppler
Pacakge:
Rpoppler::PDF_text(file)
Он включает в себя 3 функции (на самом деле 4, но одна просто дает вам ptr к объекту PDF):
PDF_fonts
Информация о шрифте PDFPDF_info
PDF документ информацияPDF_text
PDF извлечение текста
(размещение в качестве ответа, чтобы помочь новым искателям найти пакет).
per zx8754 ... в Win7 работает следующий файл с pdftotext.exe в рабочем каталоге:
library(tm)
uri = 'bmi_tbl.pdf'
pdf = readPDF(control = list(text = "-layout"))(elem = list(uri = uri),
language = "en", id = "id1")