【问题标题】:Text extraction from PDF returns strange results in R从 PDF 中提取文本在 R 中返回奇怪的结果
【发布时间】:2018-08-11 10:42:13
【问题描述】:

我正在尝试从一堆 PDF 中挖掘文本,但是当我使用 pdftools 包中的 pdf_text 将它们读入 R 时,它产生的文本很奇怪,与 PDF 文件中的实际内容完全不同. Onedrive 链接:https://1drv.ms/b/s!AlTtlgN0WIa3s2qeq4yrv9fUu-Z6。 这是我使用的示例代码:

library(pdftools)
pdf1 <- pdf_text("https://dl.dropboxusercontent.com/s/308gpdijvnw18mf/2018REQ118030709.pdf?dl=0")
pdf1   

     ## c("(’-*)&&$(&’-’’’’)*,&’$)’&/.\r\n     itiCHMON&\\     4Q\\a WN BQKPUWVL
     ##FQZOQVQI                                          )’(/ 7QZ[\\ 9ITN BMIT
     ##6[\\I\\M DI‘ 3QTT\r\n                    5Q^Q[QWV WN 4WTTMK\\QWV[\r\n                   
     ##FE 8_h -10+0\r\n                    HYSX]_^T’ L7 -.-1,(10+0                                                 
     ##3QTT >]UJMZ (/’*’.’0\r\n   IBKHHO F7L;HI ?D9                                                        
     ##@TMI[M ZMKWZL 3QTT >]UJMZ QV UMUW [MK\\QWV WN KPMKS\r\n   ,0+, L7BB;O H:\r\n  
     ##H?9>CED: L7 -.---(0/+1                                                         
     ##IVL QVKT]LM QV ITT WVTQVM JIVSQVO \\ZIV[IK\\QWV[\r\n                                
     ##@ZWXMZ\\a :VNWZUI\\QWV                                                          
     ##DI‘ :VNWZUI\\QWV\r\n     JQh OUQb5                                                          
     ##-+,3 J_dQ\\ 7TZecdUT 7^^eQ\\ 9XQbWUc5                                     
     ##!,+’/+/)++\r\n     3QTT >]UJMZ1                                .
     ##.. <truncated>

我对 R 很陌生,知道我可能做错了什么吗? 请提供任何帮助。

编辑:我已将 url 替换为有效的 url,并且还包含了我得到的结果。

【问题讨论】:

  • 我们无法重现您的问题,因为我们无权访问您的 pdf 文档。尝试制作reproducible example
  • 我已经编辑了 pdf 的 url,这个现在工作正常并且 100% 可重现。谢谢
  • 不。无法访问该文件。
  • 有问题的字体既不包含 Encoding 也不包含 ToUnicode 条目。因此,从您的 pdf 中提取文本充其量只是有根据的猜测。显然pdf_text 没有猜对。
  • @phiver 请再试一次,现在真的很好用

标签: r pdf text-mining


【解决方案1】:

你的 pdf 是一个 pdf 图像。它看起来像扫描。 pdftools 无法将其直接转换为文本。您可以使用包tesseract 获取数据并使用pdftools 将其转换为png。

下面的代码会将第一页转换为文本。我会让你做剩下的页面。请记住,文本的 OCR 并不完美。你需要检查结果。

library(pdftools)
library(tesseract)
pdf_convert("https://dl.dropboxusercontent.com/s/308gpdijvnw18mf/2018REQ118030709.pdf?dl=0", 
                       pages = 1, 
                       dpi = 600, 
                       filenames = "page1.png")
text <- ocr("page1.png")
cat(text)

更多信息可在 tesseract 小插图中找到。

您可能还想删除对此 pdf 的访问权限。我不确定这些数据是否应该公开

【讨论】:

  • “您的 pdf 是 pdf 图像” - 这是不正确的。只有背景是图像。文字就是文字。尽管如此,由于缺少 pdf 字体编码,渲染为图像和 ocr'ing 可能会比文本提取更好地返回内容。
  • 非常感谢您的回答。但由于某种原因,这会使我的 RStudio 和 RGui 崩溃。但是当我在本地阅读pdf时,它没有。此外,pdf_convert 似乎没有正确地将 pdf 渲染为“png”,因此,ocr 没有具体的工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 2012-12-09
相关资源
最近更新 更多