Почему pdf_text из pdftools читает только первую страницу каждого элемента pdf в моем списке файлов pdf?

Я хотел бы создать фрейм данных со всем текстом и заголовком ech pdf из моего списка PDF-файлов. Я сделал один цикл for, но когда я открываю получившийся фрейм данных, я вижу, что не весь текст из каждого PDF-файла был преобразован в текст, а только последняя страница.

Вот код:

#folder
folder <- paste0(getwd(), "/data/pdfs/")

#QC
qc <- sample(1:length(pdf_list), size = 1, replace = F)

#Create a vector of all the files in the folder selected
file_vector <- list.files(all.files = T, path = folder, recursive = T)

#Apply a filter to the file vector of files
pdf_list <- file_vector[grepl(".pdf", file_vector)]

#make the data frame
corpus_raw <- data.frame("title" = c(),"text" = c())

#list of pdf files comprehensive of path
files <- paste0(folder,pdf_list)

#cycle for the text fetching: 
for (i in 1:length(pdf_list)){
    #print i so that I know the loop is working right
    print(i)
    #take the text
    text_from_pdf <- pdf_text(pdf = files[i])
    temp_store_data <- data.frame("title" = gsub(pattern = "\\d\\/", replacement = "", 
                                               x = pdf_list[i], ignore.case = T), 
                                  "text" = text_from_pdf, stringsAsFactors = F)
    # quality control
    if (i == qc[1]){
      print(temp_store_data[i,2])
      write(temp_store_data[i,2], "data/quality_control.txt")
    }
    colnames(temp_store_data) <- c("title", "text")
    corpus_raw <- rbind(corpus_raw, temp_store_data)
}

ты можешь помочь мне с этим? Спасибо!

1 ответ

Решение

pdf_textсоздает вектор с одной строкой на страницу, а не с одной текстовой строкой. Вы записываете только i-ю страницу своего списка в текстовый файл qc.

Вы можете попробовать это при чтении в формате pdf:

text_from_pdf <- paste(pdf_text(pdf = files[i]), collapse = "\n")

Это должно работать, если у вас нет целых романов в формате PDF для хранения.

Другие вопросы по тегам