Python:在PDF中搜索文本
我想写一个这样的函数:
输入:一个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语言。
我提到的这些内容大部分已经在很多产品中实现了,比如itext和GhostScript等,你可以把它们当作参考实现来阅读。
我个人没有使用过基于Python的PDF库,你需要自己去研究一下这个。