PDFminer空输出

时间:2017-05-07 14:10:28

标签: python pdf pdfminer pdf-parsing

使用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>

2 个答案:

答案 0 :(得分:4)

现在我用/OneByteIdentityH修复了问题,类似于双字节unicode映射/Identity-H的代码。该补丁位于PR #179

答案 1 :(得分:2)

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

如果您在STRICT=1中执行pdfminer切换psparser.py的自定义构建,则会收到类似这样的错误:

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}>

我对代码并不十分熟悉,但即使允许这样做也无济于事,因为它无法识别映射(即使我将名称硬编码为{{1}并要求它看起来那样)。最终结果是CMap不包含映射,因此它将PDF中的每个字符转换为空字符串(如果我挑剔的话,那么OneByteIdentityH就好了。)

修复可能是为这个CMap创建一个映射,它只返回传递的字符,类似于None中已实现的其他Identity映射