将PDF文件中的数据读入R中

时间:2012-02-07 23:46:48

标签: linux r pdf scrape pdf-scraping

这是否可能!?!

我有一堆遗留报告需要导入数据库。但是,它们都是pdf格式。是否有可以阅读pdf的R个软件包?或者我应该将其留给命令行工具?

报告是在excel中制作的,然后是pdfed,所以它们有规则的结构,但很多空白的“细胞”。

5 个答案:

答案 0 :(得分:31)

所以......即使在相当复杂的桌子上也能让我接近。

bmi pdf

下载示例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)

答案 1 :(得分:21)

向可能希望提取数据的其他人发出警告:PDF是容器,而不是格式。如果原始文档不包含实际文本,而不是文本的位图图像,或者甚至可能是比我想象的更丑陋的东西,除了OCR之外什么都不能帮助你。

最重要的是,在我的悲伤经历中,无法保证创建PDF文档的应用程序的行为都相同,因此表中的数据可能会或可能不会按所需顺序读出(由于这种方式该文件已建成)。要小心。

可能会让一对研究生为您转录数据。它们很便宜: - )

答案 2 :(得分:9)

用于从PDF中获取文本的当前包 du jour 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])

答案 3 :(得分:6)

您也可以(现在)使用新的(2015-07)Rpoppler pacakge:

Rpoppler::PDF_text(file)

它包含3个函数(4个,真的,但只有一个只能让你获得PDF对象的ptr):

  • PDF_fonts PDF字体信息
  • PDF_info PDF文档信息
  • PDF_text PDF文字提取

(发布作为帮助新搜索者找到包裹的答案)。

答案 4 :(得分:3)

每个zx8754 ...以下工作目录在Win7中使用pdftotext.exe:

library(tm)
uri = 'bmi_tbl.pdf'
pdf = readPDF(control = list(text = "-layout"))(elem = list(uri = uri),
                                                language = "en", id = "id1")