Python:在PDF中搜索文本

0 投票
1 回答
2989 浏览
提问于 2025-04-18 11:02

我想写一个这样的函数:

输入:一个PDF文件,一个字符串(这个PDF是可以搜索的,比如说是用MS Word创建的)

输出:这个字符串在PDF文件中的页码和位置(坐标:x和y),如果有的话。

你能给我一些建议吗(比如用什么库,怎么做等等)?

非常感谢!

1 个回答

0

你可能需要查看一下PDF规范中的第7.7节文档结构和第9节文本,这样可以让你对PDF中文本是如何存储的有个大概念。

方法:

我们需要遍历每一页,这些页面通过一个叫做页面树的结构连接在一起,里面包含了页面对象,我们要在这里查找它的内容字段。这个字段的内容基本上是用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库,你需要自己去研究一下这个。

撰写回答