pdftools: вставил NUL в строку - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь загрузить файл и автоматически прочитать его информацию по следующей ссылке:

http://www.leyes.congreso.gob.pe/Documentos/2016_2021/Proyectos_de_Ley_y_de_Resoluciones_Legislativas/PL0361420181108.pdf

Проблема заключается в том, что при попытке прочитать информацию наpdf, я получаю ошибку.Кажется, это происходит время от времени, я не вижу веской причины, почему.Ошибка, кажется, только для Linux.

library(pdftools)
link = "http://www.leyes.congreso.gob.pe/Documentos/2016_2021/Proyectos_de_Ley_y_de_Resoluciones_Legislativas/PL0361420181108.pdf"
download.file(link, "somefile.pdf")
pdf_info("somefile.pdf")
Error in poppler_pdf_info(loadfile(pdf), opw, upw) : 
  Embedded NUL in string.

Что еще я пробовал:

  • Пробная загрузка с использованием mode = "wb"
  • Пробная загрузка с использованием httr с помощью метода write_disk
  • Пробовал скачивать вручную на windows и все работает!:(

Я подозреваю, что это связано с тем, как я загружаю файл. Но я не знаю, какие альтернативы мне следует попробовать.

1 Ответ

0 голосов
/ 14 ноября 2018

Итак, это не сработает вообще.В этом документе нет текста, за исключением символов разрыва страницы.Это все изображения.

Если rJava работает в вашей системе, и вы можете и удобно устанавливать пакеты из ненадежных источников, таких как GitHub, вы можете установить pdfbox (обратите внимание на предупреждение системы безопасности)поскольку я не обновил pdfbox JAR-файлов, но единственная уязвимость - это потенциальный процесс отказа в обслуживании) для проверки этого, поскольку он менее хрупок, чем pdftools.

Когда я использую httr::write_disk() или curl::curl_download() методы, чтобы получить PDF (парень, который тоже требует много времени в США). Затем я сделал:

pdfbox::extract_text("~/Downloads/ill-bet-this-is-all-images.pdf")
## # A tibble: 14 x 2
##     page text 
##    <int> <chr>
##  1     1 "\n" 
##  2     2 "\n" 
##  3     3 "\n" 
##  4     4 "\n" 
##  5     5 "\n" 
##  6     6 "\n" 
##  7     7 "\n" 
##  8     8 "\n" 
##  9     9 "\n" 
## 10    10 "\n" 
## 11    11 "\n" 
## 12    12 "\n" 
## 13    13 "\n" 
## 14    14 "\n"

Boom: без текста.

Вам понадобитсяиспользовать некоторые инструменты распознавания изображений в текст rOpenSci, чтобы получить что-то значимое из этого документа.

...