使用 R 将结构化数据从 PDF 转换为 excel,代码有效,但需要优化



我有一堆HICF表格(医疗保健),我想自动拉取某些字段。 目前,我可以在一个目录中有一堆pdf。 代码引用它们,并获取所有数据并将每行分隔到有 的地方。

然后,它将所有数据集合并到一个文件中。 问题是,数据还是有点乱,而且行也不同。

我宁愿能够说,"输出介于"这个词"和"那个词"之间的文本。 我需要为此添加大约 9 个输出的代码。我以为我可以使用rm_between功能,但我不确定如何合并。

我希望输出在选择单词之间找到文本并将此数据导出到 csv 文件。

您建议如何升级此代码?

install.packages("pdftools")
install.packages("tesseract")
install.packages("plyr")
install.packages("qpcR")
library(pdftools)
library(tesseract)
library (plyr)
library(qpcR)
text <- ocr("POC File 12.20 (3).pdf")
test2<-strsplit(text,"n")
df <- ldply (test2, data.frame)
compile<-df

file_list <- list.files()
for (file in file_list){
 text <- ocr(file)
 test2<-strsplit(text,"n")
 df <- ldply (test2, data.frame)
 compile<-qpcR:::cbind.na(compile,df)
}
write.csv(compile,"compiled.csv")
我喜欢

stringr包来提取文本的一部分,我认为这就是你正在寻找的。我还包含了一些示例数据,这能满足您的需求吗?

library(stringr)
mytextlines <- c("somedata_This word WantedData That word",
                 "NothingToExtractHere",
                 "somedata_other word WantedOtherData other close")
LookFor <- c(Tag1="This word *(.*?) *That word",
             Tag2="Other word *(.*?) *Other close")
found <- sapply(LookFor, function(look) {
  gsub(look, '\1', str_extract(mytextlines, pattern=regex(look, ignore_case = TRUE)), ignore.case = TRUE)
})

它将输出一个矩阵,每行文本都有一行,您要查找的每个标签都有一列,如果此行中未找到任何内容,则输出 NA。

正则表达式正在寻找一些东西:

  • 从"这个词"开始,
  • 后跟任何空格,
  • 后跟任何内容(但如果它以空格结尾,则将它们留到下一部分),
  • 后跟任何空格,
  • 后跟"那个词"

gsub仅用第 3 项(括号之间的部分)替换这 5 个元素

相关内容

  • 没有找到相关文章

最新更新