Python读取PDF文件[重复]
Posted
技术标签:
【中文标题】Python读取PDF文件[重复]【英文标题】:Python to read PDF files [duplicate] 【发布时间】:2011-08-22 04:36:44 【问题描述】:我发现很多帖子都提出了阅读 PDF 的解决方案。我想逐字阅读PDF文件并对其进行一些处理。人们建议使用 pdfMiner 将整个 PDF 文件转换为文本文件。但我想要的是逐字阅读PDF。谁能推荐一个这样做的图书馆?
【问题讨论】:
【参考方案1】:可能最快的方法是首先使用 pdftotext 将您的 pdf 转换为文本文件(在 pdfMiner 的网站上,有一个声明说 pdfMiner 比 pdftotext 慢 20 倍),然后像往常一样解析文本文件。
另外,当您说“我想逐字读取 pdf 文件并对其进行一些处理”时,您没有指定是否要根据 pdf 文件中的单词进行处理,或者您实际上是想修改pdf文件本身。如果是第二种情况,那么你手上的问题就完全不同了。
【讨论】:
处理意味着我想在它上面使用正则表达式,如果它通过了所有正则表达式,我将把它放入数据库......我正在构建一个搜索所有 pdf 的搜索引擎..【参考方案2】:我正在使用 pdfminer,它是一个出色的库,特别是如果您习惯使用 python 编程的话。它读取 PDF 并提取每个字符,并将其边界框作为元组 (x0,y0,x1,y1) 提供。 Pdfminer 将提取矩形、线条和一些图像,并尝试检测单词。它有一个令人不快的 O(N^3) 例程来分析边界框以合并它们,因此在某些文件上它可能会变得非常慢。尝试转换您的典型文件 - 可能对您来说很快,或者可能需要 1 小时,具体取决于文件。
您可以轻松地将 pdf 作为文本转储,这是您应该为您的应用程序尝试的第一件事。您也可以转储 XML(见下文),但不能修改 PDF。 XML 是您可以从中获得的最完整的 PDF 表示形式。
您必须通读示例才能在您的 python 代码中使用它,它没有太多文档。
PdfMiner 附带的将 PDF 转换为 xml 的示例展示了如何在代码中使用 lib。它还向您展示了以人类可读(就 xml 而言)形式提取的内容。
您可以使用参数调用它,告诉它“分析”pdf。如果你这样做,它会将字母合并成文本块(单词和句子;句子会有空格,因此很容易在 python 中标记为单词)。
【讨论】:
【参考方案3】:虽然我真的很喜欢 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 子目录中有开始。以上是关于Python读取PDF文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Q 及以上版本中保存/读取文件(即 txt、mht、pdf 等),因为 getExternalStoragePublicDirectory() 已弃用 [重复]