我需要提取大量 PDF 文档的特定部分。PDF 是包含各种数字、字母和其他信息的大而杂乱的报告。这些文件的长度不同,但它们之间具有统一的内容和部分。这些文档有一个目录,其中包含部分名称。例如
Table of Content:
Item 1. Business 1
Item 1A. Risk Factors 2
Item 1B. Unresolved Staff Comments 5
Item 2. Properties 10
Item N........
..........text I do not care about...........
Item 1A. Risk Factors
.....text I am interested in getting.......
(section ends)
Item 1B. Unresolved Staff Comments
..........text I do not care about...........
我可以毫无问题地阅读它们并对其进行整体分析,但我只需要提取"Item 1A. Risk Factors"和"Item 1B. Unresolved Staff Comments"之间的文本。我使用了 pdftools、tm、quanteda 和 readtext 包 这是我用来读入文档的代码部分。我创建了一个放置我的 PDF 的目录并将其命名为“PDF”和另一个目录,R 将在其中放置转换为“.txt”文件的位置。
pdf_directory <- paste0(getwd(), "/PDF")
txt_directory <- paste0(getwd(), "/Texts")
然后我使用“list.files”函数创建一个文件列表。
files <- list.files(pdf_directory, pattern = ".pdf", recursive = FALSE,
full.names = TRUE)
files
之后,我继续创建一个提取文件名的函数。
extract <- function(filename) {
print(filename)
try({
text <- pdf_text(filename)
})
f <- gsub("(.*)/([^/]*).pdf", "\\2", filename)
write(text, file.path(txt_directory, paste0(f, ".txt")))
}
for (file in files) {
extract(file)
}
在这一步之后,我卡住了,不知道如何继续。我不确定在读取数据时是否应该尝试提取感兴趣的部分,因此,我想我将不得不与我创建函数的块搏斗—— f <- gsub("(.*)/([^/]*).pdf", "\\2", filename)
?我为这些问题道歉,但我是在自学。我还尝试在一个文件而不是语料库上使用以下代码:
start <- grep("^\\*\\*\\* ITEM 1A. RISK FACTORS", text_df$text) + 1
stop <- grep("^ITEM 1B. UNRESOLVED STAFF COMMENTS", text_df$text) - 1
lines <- raw[start:stop]
scd <- paste0(".*",start,"(.*)","\n",stop,".*")
gsub(scd,"\\1", name_of_file)
但这对我没有任何帮助。