Python读取PDF文件

11

我发现许多帖子提出了读取PDF文件的解决方案。我想逐字逐句地阅读PDF文件并对其进行处理。人们建议使用pdfMiner将整个PDF文件转换为文本文件。但是我想要逐字逐句地读取PDF文件。有人可以推荐一个能够实现这一点的库吗?

3个回答

9
可能最快的方法是先使用pdftotext将您的pdf文件转换为文本文件(在pdfMiner网站上,有一份声明称pdfMiner比pdftotext慢20倍),然后像往常一样解析文本文件。
此外,当您说“我想逐字阅读pdf文件并对其进行处理”时,您没有说明是否要根据pdf文件中的单词进行处理,还是实际上要修改pdf文件本身。如果是后者,则您面临完全不同的问题。

1
处理意味着我想在其上使用正则表达式,如果它通过了所有的正则表达式,我会将其放入数据库中...我正在构建一个搜索所有PDF文件的搜索引擎。 - nikhil

6
我正在使用pdfminer这个库,特别适合那些舒适地使用Python编程的人。它可以读取PDF并提取每个字符,并以元组(x0,y0,x1,y1)的形式提供其边界框。Pdfminer将提取矩形、线条和一些图像,并尝试检测单词。它有一个不愉快的O(N ^ 3)例程,用于分析边界框以使它们合并在一起,因此在某些文件上可能会变得非常缓慢。尝试转换您的典型文件-也许对您来说速度很快,或者可能需要1小时,这取决于文件。

您可以轻松地将pdf转储为文本,这是您应该尝试的第一件事情。您还可以转储XML(见下文),但无法修改PDF。 XML是从中获得PDF的最完整表示。

您必须阅读示例以在Python代码中使用它,它没有太多文档。

PdfMiner附带的示例可以将PDF转换为xml,最好显示如何在代码中使用该库。它还以可读性较高的(就xml而言)形式显示提取出的内容。

您可以使用参数调用它,告诉它“分析”PDF。如果这样做,它将把字母汇聚成文本块(单词和句子;句子将具有空格,因此很容易在Python中将其标记化为单词)。


1
虽然我很喜欢pdfminer的答案,但是随着时间的推移,软件包并不相同。目前pdfminer仍不支持Python3,可能需要更新。因此,为了更新主题 -即使已经有一个被投票的答案- 我提议使用pdfrw,来自网站:
版本0.3在Python 2.6、2.7、3.3、3.4和3.5上经过测试并且可以正常工作,操作包括子集、合并、旋转、修改元数据等。
  • 最快的纯Python PDF解析器,多年来一直被印刷厂在印前生产中使用
  • 可以与rst2pdf一起使用,以忠实地再现矢量图像
  • 可以独立使用,也可以与reportlab结合使用,以在新的PDF文件中重用现有的PDF文件
  • 许可证宽松

pdfrw并没有完全拥有挖掘文本流所需的全部功能,尽管在examples/rl2子目录中已经有了一些开端。 - Patrick Maupin

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