Чтение данных из PDF-файлов в R - PullRequest
49 голосов
/ 08 февраля 2012

Это вообще возможно!?!

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

Отчеты были сделаны в Excel, а затем в формате PDF, поэтому они имеют регулярную структуру, но много пустых «ячеек».

Ответы [ 5 ]

31 голосов
/ 08 февраля 2012

Итак ... это сближает меня даже на довольно сложном столе.

Загрузить образец файла в формате 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)
21 голосов
/ 08 февраля 2012

Просто предупреждение для тех, кто может надеяться извлечь данные: PDF - это контейнер, а не формат. Если исходный документ не содержит фактического текста, в отличие от растровых изображений текста или, возможно, даже более уродливых вещей, чем я могу себе представить, ничто, кроме распознавания текста, не может вам помочь.

Кроме того, по моему печальному опыту, нет никакой гарантии, что все приложения, создающие документы в формате PDF, ведут себя одинаково, поэтому данные в вашей таблице могут или не могут быть прочитаны в нужном порядке (в результате док был построен). Будь осторожен.

Возможно, лучше, чтобы пара аспирантов расшифровывала данные для вас. Они дешевые: -)

9 голосов
/ 07 сентября 2016

Текущий пакет 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])
6 голосов
/ 20 октября 2015

Вы также можете (сейчас) использовать новый (2015-07) Rpoppler pacakge:

Rpoppler::PDF_text(file)

Включает в себя 3 функции (на самом деле 4, но одна просто дает вам ptr для объекта PDF):

  • PDF_fonts Информация о шрифте PDF
  • PDF_info Информация о документе PDF
  • PDF_text Извлечение PDF-текста

(публикация в качестве ответа, чтобы помочь новым поисковикам найти пакет).

3 голосов
/ 26 июня 2015

за zx8754 ... в Win7 работает следующий файл с pdftotext.exe в рабочем каталоге:

library(tm)
uri = 'bmi_tbl.pdf'
pdf = readPDF(control = list(text = "-layout"))(elem = list(uri = uri),
                                                language = "en", id = "id1")   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...