Интеллектуальный анализ текста при сканировании: ошибка EOF в строке с кавычками

Мне нужно преобразовать 24 файла PDF в папке в файлы txt, чтобы я мог выполнить их семантический анализ. Я взглянул на это вопрос, оттуда и исходил. Однако после того, как код заработал в первый раз, я изменил некоторые вещи, и теперь я получаю следующую ошибку:

In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  :
  EOF within quoted string

Из-за этого то, что сохраняется в переменной bodies в приведенном ниже коде, представляет собой просто список из 24 пробелов, и я получаю 24 пустых текстовых файла (в дополнение к 24 текстовым файлам, которые создаются путем преобразования PDF-файлов в txt) . Я не уверен, что я сделал неправильно - в какой-то момент этот код работал!

Я уже просмотрел, что смог найти по этой ошибке, но те связаны с read.csv, и предложенные ими исправления (настройка white.space=TRUE и quote="") не сработали.

Вот код (ошибка в строке 20-23):

# folder with journal articles
PDFfolder_path <- "~/Dropbox/The Egoist PDFs/PDFs"
# vector of PDF file names
PDFfiles <- list.files(path=PDFfolder_path, pattern="*.pdf", full.names=TRUE)
# location of pdftotext.exe file
converter <- "~/Widgets/PDFConverter/bin64/pdftotext"
# folder with text files
textfolder_path <- "~/Dropbox/The Egoist PDFs/textfiles"

# convert PDFs in origin folder into txt files
lapply(PDFfiles, function(i) {
  system(paste(converter, paste0('"', i, '"')), wait=FALSE)
})
# it takes DropBox a bit of time to catch all of the folders
# without this we only end up with 23 txt files for some reason
Sys.sleep(.5)
txtfiles_in_PDFfolder_path <- list.files(path=PDFfolder_path, pattern="*.txt", full.names=TRUE)

# extracting only the Bodies of the articles
bodies <- lapply(txtfiles_in_PDFfolder_path, function(i){
  j <- paste0(scan(i, what = character()),  collapse = " ")
  regmatches(j, gregexpr("(?<=Published).*?(?=Prepaid Advertisements)", j, perl=TRUE))
})

# write article-bodies into txt files
lapply(1:length(bodies), function(i){
  write.table(bodies[i], file=paste(txtfiles_in_PDFfolder_path[i], "body", "txt", sep="."), quote=FALSE, row.names=FALSE, col.names=FALSE, eol=" ")
})

РЕДАКТИРОВАТЬ: Еще немного о результате переменной bodies: результатом является список из 24, который принимает следующую форму (на консоли R Studio я не уверен, что это фактическое имя): bodys: list of 24 :Список из 1 ..$ : chr(0) :Список из 1 ..$ : chr(0) (повторяется 24 раза)

Но я не могу понять, почему это chr(0) - я думаю, что это как-то связано с теми же вещами, которые происходят здесь - я точно не улавливаю все строки.

Я перепробовал все, что мог придумать, даже поменял readLines() на scan(), и посмотрел, не поможет ли это. Я даже поменял scan() на read.table(), но оказывается, что read.table() сам полагается на scan! Итак... Я застрял, и я просто работаю по кругу.


person mlinegar    schedule 06.07.2015    source источник
comment
Это происходит с одним PDF в частности? (попробуйте каждую по отдельности). Вы проверили содержимое ваших преобразованных файлов? Без воспроизводимого примера будет очень сложно помочь тебе.   -  person MrFlick    schedule 07.07.2015
comment
Это происходит для каждого PDF. И я просмотрел содержимое преобразованных файлов, но они относительно длинные, и я не уверен, что искать. Но я сделал pastebin для одного из преобразованных документов, надеюсь, это поможет! pastebin.com/dDfzJC91   -  person mlinegar    schedule 07.07.2015
comment
Ну, похоже, что в преобразованных текстовых файлах есть неверные данные. Если вы не можете выделить часть, воспроизводящую такое поведение, очень сложно точно сказать, что не так.   -  person MrFlick    schedule 07.07.2015
comment
Вы уверены, что вам нужно scan(), а не readLines()? (Обратите внимание, что они возвращают разные векторы, но не похоже, что вам нужно разбивать по словам)   -  person MrFlick    schedule 07.07.2015
comment
Хм, хорошо. Я постараюсь найти часть, из-за которой это происходит. Однако в какой-то момент это работало нормально — когда код шел хорошо, R прекрасно преобразовывал и вырезал txt-файлы (и очень быстро). Но потом я что-то изменил (вообще не знаю что) и для каждого файла R начал говорить что-то вроде Read 10648 items, и стало занимать заметно больше времени.   -  person mlinegar    schedule 07.07.2015
comment
Прогресс! Когда я изменил на readLines( ), я получил Warning message: In readLines(i) : incomplete final line found on '/Users/mlinegar/Dropbox/The Egoist PDFs/PDFs/The Egoist 2.1.1914.txt'. Но я не уверен, что может привести к неполной финальной строке... есть идеи?   -  person mlinegar    schedule 07.07.2015