【问题标题】:Python: searching text inside PDFPython:在 PDF 中搜索文本
【发布时间】:2014-06-25 14:35:17
【问题描述】:

我想写一个这样的函数:

输入:一个 PDF 文件,一个字符串(PDF 是可搜索的 - 例如,它是由 MS Word 创建的) 输出:PDF文件中字符串的页面和位置(坐标:x和y),如果有的话。

你能给我一些提示(什么库,方法,...)用 Python 做吗?

非常感谢

【问题讨论】:

  • 非常感谢您的参考,但恐怕不是我想要的。我不想从 PDF 中提取文本,但我想在 PDF 中找到文本的位置。

标签: python pdf


【解决方案1】:

您可能需要检查PDF specification 7.7 文档结构和 9. 文本以至少对文本在 PDF 中的存储方式有一点想象。

方法:

使用 Page Tree 遍历每个页面包含 Page Objects,我们在其中搜索其 Contents 字段。该字段的内容基本上是Postscript语言描述的页面元素。


示例:

文本 ABC 放置在距页面底部 10 英寸和距左边缘 4 英寸处,使用 12 点 Helvetica。

BT
    /F13 12 Tf
    288 720 Td
    (ABC) Tj
ET 

里面的字符串可以表示为:

文字字符串 (7.3.4.2) - 这非常简单,因为您只需遍历 "(.*?)" 的数据

十六进制字符串 (7.3.4.3) - 这是一个棘手的问题,因为我们必须先对数据进行解码,然后才能与要搜索的字符串进行比较。

在我们匹配字符串之后,剩下的最后一件事就是找出它的位置。这基本上需要解析 Postscript 语言。

我提到的大部分内容已经在许多产品中实现(itextGhostScript、...),您可以轻松地阅读它们作为参考实现。

我个人对基于 python 的 PDF 库没有任何经验,你应该自己解决这个问题。

【讨论】:

  • 文字字符串 (7.3.4.2) - 这非常简单,因为您只需遍历 "(.?)"* 的数据 - 这仅适用于使用标准字体编码的简单示例。同时,嵌入字体的自定义编码已经变得非常普遍。
猜你喜欢
  • 2013-06-10
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多