50

这还可以吗!?!

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

这些报告是用 excel 制作的,然后是 pdf 的,所以它们有规则的结构,但有很多空白的“单元格”。

4

5 回答 5

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)
于 2012-02-08T00:43:49.220 回答
22

只是对可能希望提取数据的其他人的警告:PDF 是一种容器,而不是一种格式。如果原始文档不包含实际文本,而不是文本的位图图像,或者可能比我想象的更丑陋的东西,那么 OCR 可以帮助您。

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

让几个研究生为你转录数据可能会更好。它们很便宜:-)

于 2012-02-08T02:28:12.877 回答
13

当前用于从 PDF 中获取文本的当前软件包是( Rpopplerpdftools的继任者,如上所述),在 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])
于 2016-09-07T06:42:49.057 回答
6

您还可以(现在)使用新的(2015-07)包Rpoppler

Rpoppler::PDF_text(file)

它包括 3 个功能(实际上是 4 个,但一个只是让您获得 PDF 对象的指针):

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

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

于 2015-10-20T11:26:15.113 回答
4

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")   
于 2015-06-26T13:18:26.783 回答