在过去的几个小时里,我一直在与 Google 和 PDFMiner 的有限文档作斗争,虽然我感觉很接近,但我只是没有得到我需要的东西。我已经经历过http://www.unixuser.org/~euske/python/pdfminer/ http://www.unixuser.org/~euske/python/pdfminer/以及所有三个 YouTube 视频,以便更好地了解 PDF,并且我能够很好地输出原始文本。
我正在编写一个脚本来解析多个 PDF 页面。不幸的是,对于这个项目,我处理的是质量较差的 PDF 文件,我看到的唯一可靠的常量是文本字符串的物理位置完全相同。尽管我已经阅读过可以通过物理坐标提取文本字符串的提示,但我还没有看到一个有效的示例。
有没有人可以阐明如何使用 PDFMiner 完成此操作?如果有明显更好的选择,我愿意接受其他模块,但我需要坚持使用 Python 来编写脚本。
此外,我也尝试过 PyPdf 但没有成功(除了基本文本输出)。
Thanks!
我一直在写一个库来尝试简化这个过程,pdfquery https://github.com/jcushman/pdfquery。要从特定页面的特定位置提取文本,您可以执行以下操作:
pdf = pdfquery.PDFQuery(file)
# load first, third, fourth pages
pdf.load(0, 2, 3)
# find text between 100 and 300 points from left bottom corner of first page
text = pdf.pq('LTPage[page_index=0] :in_bbox("100,100,300,300")').text()
# save tree as XML to try to figure out why the last line didn't work the way you expected :)
pdf.tree.write(filename, pretty_print=True)
如果您想在该框中查找单个字符,而不是完全在该框中查找文本行,请将 merge_tags=None 传递给 PDFQuery (默认情况下,它将连续字符合并到单个元素中,以使树不那么荒谬,因此整行将具有位于盒子内)。如果您想查找与框部分重叠的任何内容,请使用 :overlaps_bbox 而不是 :in_bbox。
这基本上是使用 PyQuery 选择器语法从 PDFMiner 布局中获取文本,因此,如果您的文档对于 PDFMiner 来说太混乱,那么它对此也可能太混乱,但至少使用起来会更快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)