Подтвердить что ты не робот

Используйте R для преобразования файлов PDF в текстовые файлы для интеллектуального анализа текста

У меня есть около тысячи статей в формате pdf в папке. Мне нужно написать текст по всем статьям из всей папки. Теперь я делаю следующее:

dest <- "~/A1.pdf"

# set path to pdftotxt.exe and convert pdf to text
exe <- "C:/Program Files (x86)/xpdfbin-win-3.03/bin32/pdftotext.exe"
system(paste("\"", exe, "\" \"", dest, "\"", sep = ""), wait = F)

# get txt-file name and open it
filetxt <- sub(".pdf", ".txt", dest)
shell.exec(filetxt)

Таким образом, я конвертирую один файл pdf в один .txt файл, а затем копирую реферат в другой .txt файл и компилирую его вручную. Эта работа хлопотная.

Мне нужен код, который может читать все отдельные статьи из папки и преобразовывать их в файл .txt, который содержит только тезисы из каждой статьи. Это может быть сделано путем ограничения содержания между АБСТРАКТОМ и ВВЕДЕНИЕ в каждой статье; но я не могу этого сделать. Любая помощь приветствуется.

4b9b3361

Ответ 1

Да, не совсем вопрос R как заметки IShouldBuyABoat, но что-то, что R может делать только с небольшими искажениями...

Используйте R для преобразования файлов PDF в файлы txt...

# folder with 1000s of PDFs
dest <- "C:\\Users\\Desktop"

# make a vector of PDF file names
myfiles <- list.files(path = dest, pattern = "pdf",  full.names = TRUE)

# convert each PDF file that is named in the vector into a text file 
# text file is created in the same directory as the PDFs
# note that my pdftotext.exe is in a different location to yours
lapply(myfiles, function(i) system(paste('"C:/Program Files/xpdf/bin64/pdftotext.exe"', 
             paste0('"', i, '"')), wait = FALSE) )

Извлечь только тезисы из txt файлов...

# if you just want the abstracts, we can use regex to extract that part of
# each txt file, Assumes that the abstract is always between the words 'Abstract'
# and 'Introduction'
mytxtfiles <- list.files(path = dest, pattern = "txt",  full.names = TRUE)
abstracts <- lapply(mytxtfiles, function(i) {
  j <- paste0(scan(i, what = character()), collapse = " ")
  regmatches(j, gregexpr("(?<=Abstract).*?(?=Introduction)", j, perl=TRUE))
})

Напишите тезисы в отдельные файлы txt...

# write abstracts as txt files 
# (or use them in the list for whatever you want to do next)
lapply(1:length(abstracts),  function(i) write.table(abstracts[i], file=paste(mytxtfiles[i], "abstract", "txt", sep="."), quote = FALSE, row.names = FALSE, col.names = FALSE, eol = " " ))

И теперь вы готовы сделать текстовый поиск на тезисах.