python - 使用 Python 在 PDF 中搜索文本?

标签 python parsing pdf text

问题
我正在尝试通过搜索其文本来确定文档的类型(例如诉状、通信、传票等),最好使用 python。所有 PDF 都是可搜索的,但我还没有找到用 python 解析它并应用脚本来搜索它的解决方案(没有先将其转换为文本文件,但这对于 n 个文档可能是资源密集型的)。

到目前为止我做了什么
我查看了 pypdf、pdfminer、adobe pdf 文档以及我能找到的任何问题(尽管似乎没有一个问题可以直接解决这个问题)。 PDFminer 似乎最有潜力,但在阅读完文档后,我什至不确定从哪里开始。

是否有一种简单、有效的方法来阅读 PDF 文本,无论是按页、行还是整个文档?还是有其他解决方法?

最佳答案

这称为PDF挖掘,非常困难,因为:

  • PDF 是一种设计用于打印而非解析的文档格式。在 PDF 文档中, 大多数时候,文本没有特定的顺序(除非顺序对打印很重要) 原始文本结构丢失(字母可能未分组 因为单词和单词可能不会在句子中分组,并且它们的放置顺序 论文通常是随机的)。
  • 生成 PDF 的软件有很多,其中很多都有缺陷。

PDFminer 等工具使用启发式方法根据字母和单词在页面中的位置再次对它们进行分组。我同意,界面相当低级,但当你知道时它更有意义 他们试图解决什么问题(最后,重要的是选择一个字母/单词/行必须与邻居多近才能被视为段落的一部分)。

一个昂贵的替代方案(在时间/计算机能力方面)是为每个页面生成图像并将它们提供给 OCR,如果您有一个非常好的 OCR,可能值得一试。

所以我的回答是否定的,没有从 PDF 文件中提取文本的简单有效的方法——如果您的文档具有已知的结构,您可以微调规则并获得良好的结果,但它是总是赌博。

我真的很想被证明是错误的。

[更新]

答案没有改变,但最近我参与了两个项目:其中一个是使用计算机视觉从扫描的医院表格中提取数据。另一个从法庭记录中提取数据。我学到的是:

  1. 计算机视觉在 2018 年将触手可及。如果你有一个很好的已分类文档样本,你可以使用 OpenCV 或 SciKit-Image 来提取特征并训练机器学习分类器来确定什么类型一个文件。

  2. 如果您正在分析的 PDF 是“可搜索的”,您可以使用 pdftotext 等软件提取所有文本。和贝叶斯过滤器(用于分类垃圾邮件的同一类算法)。

因此,没有可靠有效的方法从 PDF 文件中提取文本,但您可能不需要一种方法来解决手头的问题(文档类型分类)。

关于python - 使用 Python 在 PDF 中搜索文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17098675/

相关文章:

python - 如何将字符串按数字拆分为列表?

java - 创建 pdf 并与 pdfbox 合并

php - 如何使用CSS3更改PDF文档的字体

java - 如何使用 PDFBox 从 HTML 创建 PDF 文件?

python - 用随机生成的数字替换字符串的一部分

Python 选择带有 * 的列加上另一列

java - 如何使用 Univocity 例程验证 CSV header ?

linux - 使用 Awk 比较两个文件

c++ - 生产中可选的非终端

python - 将主键添加到 alembic 中的现有 MySQL 表