首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R将PDF中的结构化数据转换为excel,代码可以工作,但需要改进

使用R将PDF中的结构化数据转换为excel,代码可以工作,但需要改进
EN

Stack Overflow用户
提问于 2018-12-21 07:31:47
回答 1查看 577关注 0票数 0

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

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

我更愿意说,“输出介于”这个单词“和”那个单词“之间的文本。我将需要为大约9个输出添加代码。我假设我可以使用rm_between函数,但我不确定如何合并。

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

您建议如何升级此代码?

代码语言:javascript
复制
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")
EN

回答 1

Stack Overflow用户

发布于 2018-12-21 22:38:44

我喜欢使用stringr-package来提取文本的各个部分,我想这正是您正在寻找的。我还提供了一些示例-数据,这能满足您的需求吗?

代码语言:javascript
复制
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。

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

  • 以"This word“开头,
  • 后跟任何空格,
  • 后跟任何空格(但如果以空格结尾,则将它们留到下一部分),
  • 后跟任何空格,
  • 后跟"That word"

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53877413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档