这还可以吗!?!
我有一堆需要导入数据库的遗留报告。但是,它们都是pdf格式的。有没有R
可以阅读pdf的软件包?或者我应该把它留给命令行工具吗?
这些报告是用 excel 制作的,然后是 pdf 的,所以它们有规则的结构,但有很多空白的“单元格”。
这还可以吗!?!
我有一堆需要导入数据库的遗留报告。但是,它们都是pdf格式的。有没有R
可以阅读pdf的软件包?或者我应该把它留给命令行工具吗?
这些报告是用 excel 制作的,然后是 pdf 的,所以它们有规则的结构,但有很多空白的“单元格”。
所以......即使在相当复杂的桌子上,这也让我接近。
从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)
只是对可能希望提取数据的其他人的警告:PDF 是一种容器,而不是一种格式。如果原始文档不包含实际文本,而不是文本的位图图像,或者可能比我想象的更丑陋的东西,那么 OCR 可以帮助您。
最重要的是,在我悲惨的经历中,不能保证创建 PDF 文档的应用程序的行为都相同,因此表中的数据可能会或可能不会按所需顺序读出(由于文档的方式建)。要小心。
让几个研究生为你转录数据可能会更好。它们很便宜:-)
当前用于从 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])
您还可以(现在)使用新的(2015-07)包Rpoppler
:
Rpoppler::PDF_text(file)
它包括 3 个功能(实际上是 4 个,但一个只是让您获得 PDF 对象的指针):
PDF_fonts
PDF字体信息PDF_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")