【问题标题】:PDFminer empty outputPDFminer 空输出
【发布时间】:2017-05-07 14:10:28
【问题描述】:

在使用 pdfminer (pdf2txt.py) 处理 file 时,我收到了空输出:

dan@work:~/project$ pdf2txt.py  docs/homericaeast.pdf 

dan@work:~/project$ 

谁能说出这个文件有什么问题以及我可以做些什么来从中获取数据?

这是dumppdf.py docs/homericaeast.pdf 输出:

<trailer>
<dict size="4">
<key>Info</key>
<value><ref id="2" /></value>
<key>Root</key>
<value><ref id="1" /></value>
<key>ID</key>
<value><list size="2">
<string size="16">on&#10;&#164;&#181;F&#164;5&#193;&#62;&#243;_&#253;v&#172;`</string>
<string size="16">on&#10;&#164;&#181;F&#164;5&#193;&#62;&#243;_&#253;v&#172;`</string>
</list></value>
<key>Size</key>
<value><number>27</number></value>
</dict>
</trailer>

<trailer>
<dict size="4">
<key>Info</key>
<value><ref id="2" /></value>
<key>Root</key>
<value><ref id="1" /></value>
<key>ID</key>
<value><list size="2">
<string size="16">on&#10;&#164;&#181;F&#164;5&#193;&#62;&#243;_&#253;v&#172;`</string>
<string size="16">on&#10;&#164;&#181;F&#164;5&#193;&#62;&#243;_&#253;v&#172;`</string>
</list></value>
<key>Size</key>
<value><number>27</number></value>
</dict>
</trailer>

【问题讨论】:

  • This question/answer 可能会有所帮助
  • @Daniel 以防万一,如果您想要替代 pdftotext 实用程序,通过保持布局也可以提供良好的结果dpaste.com/3EV77FE
  • @J.Hollom pdf2txt.py -d homericaeast.pdf 也给了我空的结果
  • @AamirAdnan 我更喜欢使用 pdfminer,因为我已经有一个使用 pdfminer 的大项目,我必须将新代码集成到其中。但是我会看看pdftotext,谢谢
  • @DanielM 道歉,-d 标志不相关,因此已删除该评论。通过在 Mac 上使用 Preview 将原始文件导出为 pdf 然后运行 ​​pdf2txt.py

标签: python pdf pdfminer pdf-parsing


【解决方案1】:

现在我已经解决了 /OneByteIdentityH 的问题,类似于两字节 unicode 映射 /Identity-H 的代码。补丁在PR #179

【讨论】:

  • 是的 - 这正是我的意思。不错的工作!一面令人愉悦的镜子,记录了我们上次穿越时的情景。
【解决方案2】:

问题是pdfminer 不理解您在此 PDF 中使用的 CMap。

如果您在psparser.py 中打开STRICT=1 的pdfminer 的自定义构建,您将收到类似这样的错误:

pdfminer.psparser.PSTypeError: Literal required: <PDFStream(21): raw=267, {u'Filter': /'FlateDecode', u'CMapName': /u'OneByteIdentityH', u'Type': /u'CMap', u'CIDSystemInfo': <PDFObjRef:20>, u'Length': 266}>

我对代码不是很熟悉,但即使允许它通过也无济于事,因为它无法识别映射(即使我将名称硬编码为 OneByteIdentityH 并要求它查找) )。最终结果是 CMap 不包含任何映射,因此它将 PDF 中的每个字符转换为空字符串(如果我很挑剔的话,None)。

修复可能是为此 CMap 创建一个映射,该映射仅返回传入的字符,类似于 cmapdb.py 中已经实现的其他身份映射

【讨论】:

  • 我很高兴地记得,我们俩几乎都没有完全参与过关于 pdfminer 的两个问题:这里和 struct.error: unpack requires...,你又在那里写了一个补丁。
猜你喜欢
  • 1970-01-01
  • 2017-02-12
  • 2018-01-10
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 2018-08-25
相关资源
最近更新 更多