将 pdf 文件转换为 data.frames

Converting pdf files into data.frames

我目前正在尝试创建一个将许多 pdf 文件读取到数据框中的函数。我的最终目标是让它从 pdf 文件中读取特定信息并将它们转换为 data.frame,每行中包含保险计划名称,列中包含我需要的信息,例如个人计划价格、家庭计划价格等.我一直在关注answer given by someone for a similar question in the past. However, I keep getting an error. Here is a link to two different files I am practicing on(1 and 2).

下面是我的代码和错误:

PDFtoDF = function(file) {

  dat = readPDF(control=list(text="-layout"))(elem=list(uri=file), 
                                              language="en", id="id1") 
  dat = c(as.character(dat))

  dat = gsub("^ ?([0-9]{1,3}) ?", "\1|", dat)

  dat = gsub("(, HVOL )","\1 ", dat)
  dat = gsub(" {2,100}", "|", dat)

  excludeRows = lapply(gregexpr("\|", dat), function(x) length(x)) != 6
  write(dat[excludeRows], "rowsToCheck.txt", append=TRUE)

  dat = dat[!excludeRows]

  dat = read.table(text=dat, sep="", quote="", stringsAsFactors=FALSE)
  names(dat) = c("Plan", "Individual", "Family")
  return(dat)
}

files <- list.files(pattern = "pdf$")

df = do.call("rbind", lapply(files, PDFtoDF))


    Error in read.table(text = dat, sep = "", quote = "", stringsAsFactors = 
    FALSE) : no lines available in input 

在这种方法之前,我一直在使用 pdftools 包和正则表达式。除了难以阐明文档某些部分(例如顶部的计划名称)的模式外,这种方法很有效。我希望我现在尝试的方法会有所帮助,因为它会为我将文本提取到单独的字符串中。

这是最佳答案:

require(readtext)
df <- readtext("*.pdf")

是的,就是这么简单,使用 readtext 包!