我正在使用PDFMiner Python库,使用这个SO答案中提供的代码片段,将PDF文件转换为文本。问题是PDF是三列格式的,我需要阅读每一行。然而,我得到的文本是无序的:有时混合第一列和第二列,有时混合第三列。。。由于文本没有遵循任何逻辑顺序,我无法解析每一行。那么,有什么方法可以使用PDFMiner获取PDF文件的每一行吗?
编辑:
PDFMiner附带了一个命令行工具pdf2txt.py
,用于将PDF转换为文本。使用它并将0.05
设置为单词边距,我可以获得格式更好的文本,但无法达到目的。
我在解析表*时也有类似的情况。对我有效的是排除HTML。然后,您可以解析HTML表并将表标记考虑在内(请参阅HTMLParser的python文档)。
我的两美分:)
*将单词中的表格复制到QT TextEdit小部件中。小部件接受富文本,但如果将表导出为文本,则会将其搞砸。导出为HTML,解析HTML,获取数据:)这是在工作中完成的,这里没有代码。
在处理类似的问题时,我偶然发现了这个问题的某种解决方案。您可以按如下方式设置extract_text的LAParams:
from pdfminer.layout import LAParams
laparams = LAParams(boxes_flow=None)
然后通过使用extract_text的地方:
text = extract_text(filename, laparams= laparams)
通过这种方式,我得到的文本更能代表实际PDF页面的水平和垂直布局。