使用Python进行PDF解析 - 提取格式化和纯文本

84
我正在寻找一款PDF库,它可以让我从PDF文档中提取文本。我已经看过了PyPDF这个库,它可以很好地从PDF文档中提取文本。但是问题在于,如果文档中有表格,则表格中的文本将与其余部分的文本内联提取。这可能会产生一些无用且杂乱的文本部分(例如,许多数字混在一起)。
我想从PDF文档中提取文本,并排除任何表格和特殊格式。是否存在这样的库?
2个回答

63
您还可以查看 PDFMiner (或对于较旧版本的Python,请参见PDFMinerPDFMiner)。
PDFMiner的一个特别有趣的功能是,您可以控制在提取文本部分时如何重新组合它们。您可以通过指定行,单词,字符等之间的空格来实现这一点。所以,也许通过调整这个,您可以实现您想要的效果(这取决于您的文档变量性)。PDFMiner也可以给您文本在页面上的位置,它可以通过对象ID和其他材料提取数据。所以挖掘PDFMiner并发挥创造力吧!
但是您的问题确实不容易解决,因为在PDF中,文本不是连续的,而是由大量小组成的字母集合,绝对地放置在页面上。 PDF的重点是保持布局完好无损。它不是内容导向的,而是演示导向的。

2
PDFMiner看起来很有趣。我可以使用它的XML输出,然后解析它以忽略我不想要的内容。这仍然需要大量的后处理,但现在这可能是最好的解决方案。谢谢。 - Mike Cialowicz
如果您正在寻找更好的性能和Py3,请查看此链接http://zderadicka.eu/parsing-pdf-for-fun-and-profit-indeed-in-python/,带有Python绑定的libpoppler比PDFminer快10倍。 - Ivan
1
pdfminer.six是PDFMiner的Python 3版本,对我来说运行良好。 - hamish
2
从版本20191010开始,PDFMiner仅支持Python 3。 - fantabolous
警告:截至2020年,PDFMiner已不再得到积极维护。代码仍然可以运行,但该项目基本处于休眠状态。如需了解活跃的项目,请查看其分支pdfminer.six。 - Semnodime
显示剩余3条评论

2
这是一个难以解决的问题,因为外观相似的PDF文件可能会根据它们的生成方式而具有完全不同的结构。在最糟糕的情况下,图书馆需要像OCR一样工作。另一方面,PDF文件可能包含足够的结构和元数据,使得表格和图形易于删除,这取决于库能否适应它们。
我相信没有开源工具可以针对各种PDF文件解决您的问题,但我记得听说过商业软件声称可以做到您所要求的。我相信在谷歌中搜索时,你会遇到它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接