Я работаю с tabulizer, чтобы попытаться обработать некоторые отчеты с архивированными данными. В качестве воспроизводимого примера я использую тот, который доступен как в формате PDF, так и в формате CSV, но в течение нескольких месяцев у меня есть только PDF-файлы, поэтому мне нужно извлечь текст.
Когда я запускаю extract_tables в pdf, некоторые страницы извлекаются, а некоторые нет. Я могу получить данные, но только обходным путем, используя extract_area
Воспроизводимый пример:
library(tabulizer)
#only need tabulizer
#download csv for June 2019 from the AER site
download.file("https://www.aer.ca/data/facilities/LLR_Report_06.pdf",destfile = "LLR_Report_test.pdf",mode = "wb")
#set file name equal to temp file location
f <- "LLR_Report_test.pdf"
# extract all the tables from pages 2 through 17 in a list - reveals the issue
table_list<-list()
i<-1
pages<-seq(2,17,1)
#scrape all the pages
for(page in pages){
print(paste("working on page ",page))
llr_table<-data.frame(extract_tables(f,pages = page),stringsAsFactors = F)
table_list[[i]]<-llr_table
i<-i+1
}
Если вы проверите список, вы увидите, что только некоторые из элементов имеют полный набор наблюдений со страницы, а некоторые нет. На страницах, которые должны вызвать эту проблему, я не вижу никакой информации.
В качестве теста, изолировать на двух страницах, 3 и 4. Страница 3 работает, страница 4 не
#testing - page 3
llr_table_3<-data.frame(extract_tables(f,pages = 3,method = "decide"),stringsAsFactors = F)
#testing - page 3 works with stream
llr_table_3<-data.frame(extract_tables(f,pages = 3,method = "stream"),stringsAsFactors = F)
#testing - page 3 doesn't work with lattice
llr_table_3<-data.frame(extract_tables(f,pages = 3,method = "lattice"),stringsAsFactors = F)
#testing page 4 can't get anything
llr_tables_4<-data.frame(extract_tables(f,pages = 4),stringsAsFactors = F,method = "lattice")
Я пробовал с и без параметров решетки и потока. Единственным потенциальным признаком проблемы является то, что страница 3 не работает с параметром решетки, но работает с потоком.
Я могу получить данные, представленные на странице 4, двумя другими способами. Во-первых, если я использую извлечение текста, текст там, и записи для страницы 3 и страницы 4 выглядят примерно так:
llr_text_3<-data.frame(extract_text(f,pages = 3),stringsAsFactors = F)
llr_text_4<-data.frame(extract_text(f,pages = 4),stringsAsFactors = F)
Я могу получить данные, используя область выбора, включая или не включая заголовки в выборе пользовательского интерфейса.
llr_area_4<-data.frame(extract_areas(f,pages = 4),stringsAsFactors = F)
Любая помощь высоко ценится. В противном случае я стою в очереди для большого количества копий и вставок!