从PDF文件中提取文本数据

时间:2010-10-04 01:44:33

标签: pdf r parser-generator

是否可以解析R中PDF文件的文本数据?有does not appear to be a relevant package for such extraction,但有没有人在R?

中尝试或看到过这种情况

Python there is PDFMiner中,但如果可能的话,我想将此分析保留在R中。

有什么建议吗?

8 个答案:

答案 0 :(得分:29)

Linux系统有pdftotext,我取得了合理的成功。默认情况下,它会从商品foo.txt创建foo.pdf

也就是说,文本挖掘包可能有转换器。 quick rseek.org search似乎与您的搜索结果一致。

答案 1 :(得分:26)

这是一个非常旧的主题,但为了将来参考:pdftools R包从PDF中提取文本。

答案 2 :(得分:9)

一位同事让我接触到这个方便的开源工具:http://tabula.nerdpower.org/。安装,上载PDF,然后在PDF中选择需要数据化的表格。不是R的直接解决方案,但肯定比手工劳动更好。

答案 3 :(得分:9)

纯粹的R解决方案可能是:

library('tm')
file <- 'namefile.pdf'
Rpdf <- readPDF(control = list(text = "-layout"))
corpus <- VCorpus(URISource(file), 
      readerControl = list(reader = Rpdf))
corpus.array <- content(content(corpus)[[1]])

然后你将在一个数组中有pdf行。

答案 4 :(得分:5)

tabula PDF表格提取器应用程序基于基于Java JAR包{4}的命令行应用程序。

tabula-extractor提供了一个R包装器,可以很容易地将路径传递到PDF文件并从数据表中提取数据。

Tabula可以很好地猜测表格的位置,但您也可以通过指定页面的目标区域来判断页面的哪个部分。

可以从多个页面中提取数据,如果需要,可以为每个页面指定不同的区域。

有关示例用例,请参阅:R tabulizer package

答案 5 :(得分:4)

install.packages("pdftools")
library(pdftools)


download.file("http://www.nfl.com/liveupdate/gamecenter/56901/DEN_Gamebook.pdf", 
              "56901.DEN.Gamebook", mode = "wb")

txt <- pdf_text("56901.DEN.Gamebook")
cat(txt[1])

答案 6 :(得分:2)

我使用外部实用程序进行转换并从R调用它。所有文件都有一个带有所需信息的前导表

将路径设置为pdftotxt.exe并将pdf转换为文本

exeFile <- "C:/Projects/xpdfbin-win-3.04/bin64/pdftotext.exe"

for(i in 1:length(pdfFracList)){
    fileNumber <- str_sub(pdfFracList[i], start = 1, end = -5)
    pdfSource <- paste0(reportDir,"/", fileNumber, ".pdf")
    txtDestination <- paste0(reportDir,"/", fileNumber, ".txt")
    print(paste0("File number ", i, ", Processing file ", pdfSource))
    system(paste(exeFile, "-table" , pdfSource, txtDestination, sep = " "), wait = TRUE)
}

答案 7 :(得分:0)

这里有一个使用R和API从PDF提取数据的程序包。一次可以转换的PDF数量没有限制:https://github.com/expersso/pdftables