Мне нужно извлечь определенные c части большого корпуса PDF-документов. PDF-файлы представляют собой большие и беспорядочные отчеты, содержащие всевозможную цифровую, буквенную c и другую информацию. Файлы имеют разную длину, но имеют единое содержимое и разделы. В документах есть Оглавление с названиями разделов в них. Например,
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...........
У меня нет проблем с их чтением и анализом в целом, но мне нужно вытащить только текст между «Элемент 1A. Факторы риска» и «Пункт 1B. Нерешенные комментарии сотрудников» . Я использовал 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
После этого я go создаю функцию, которая извлекает имена файлов.
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)
, но это мне никак не помогло.