我有一堆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 个元素