首页 文章

从PDF文件中提取文本数据

提问于
浏览
41

是否可以从R中解析PDF文件中的文本数据?有does not appear to be a relevant package for such extraction,但有没有人在R中尝试或看到这样做?

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

有什么建议?

7 回答

  • 26

    这是一个非常旧的线程,但供将来参考:pdftools R包从PDF中提取文本 .

  • 29
    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])
    
  • 9

    Linux系统有 pdftotext ,我有合理的成功 . 默认情况下,它从给 foo.pdf 创建 foo.txt .

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

  • 5

    一个纯粹的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行 .

  • 2

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

  • 9

    tabula PDF表提取器应用程序基于基于Java JAR包tabula-extractor的命令行应用程序 .

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

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

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

    有关示例用例,请参阅:When Documents Become Databases – Tabulizer R Wrapper for Tabula PDF Table Extractor .

  • 4

    我使用外部实用程序进行转换并从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)
    }
    

相关问题