【问题标题】:pdftools: Embeded NUL in stringpdftools:在字符串中嵌入 NUL
【发布时间】:2018-11-14 04:16:46
【问题描述】:

我正在尝试从以下链接下载文件并自动读取其信息:

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上手动下载,成功了! :(

我怀疑这与我下载文件的方式有关。但是,我不知道我应该尝试什么替代方案。

【问题讨论】:

    标签: r poppler


    【解决方案1】:

    所以,这根本行不通。除了分页符之外,该文档中没有任何文本。都是图像。

    如果 rJava 在您的系统上运行,并且您可以并且愿意从不受信任的来源(例如 GitHub)安装软件包,您可以安装 pdfbox (请注意那里的安全警告,因为我没有更新 @987654324 @JARs 但唯一的漏洞是潜在的拒绝服务进程) 来验证这一点,因为它不像 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"
    

    繁荣:没有文字。

    您需要使用一些 rOpenSci 图像到文本 OCR 工具从该文档中获取任何有意义的内容。

    【讨论】:

    • 我确实在使用 OCR。但是,tesseract 在通过 ocr 例程之前对文档调用 pdf_info(),可能是因为它需要知道文档中有多少页。我将问题简化为这个特定错误,因为我认为它与我的下载方式有关(鉴于它是间歇性的)
    • 不,我 99% 确定是pdftools。如果你能让rJava 工作pdfbox 是def 一个替代方案。
    • Embedded NUL in string 错误已在 pdftools 2.0 中得到修复。
    猜你喜欢
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多