(免责声明:我是pText 的作者,此答案中使用的库。)
我们将首先加载Document
with open("input.pdf", "rb") as pdf_file_handle:
l = RegularExpressionTextExtraction("[sS]orbitol")
doc = PDF.loads(pdf_file_handle, [l])
语法非常简单。 PDF.loads 尝试读取输入流,并将其作为 PDF 处理。您可以选择指定EventListener 对象的数组。每当呈现文本、图像、页面时,EventListener 都会在解析期间得到通知。
在这个例子中,我们传递了一个RegularExpressionTextExtraction。 EventListener 的这个实现监控所有传入的文本渲染命令,并尝试将它们与正则表达式进行匹配。
最后,一旦Document 被加载,我们就可以提取所有匹配项。在本例中,我将它们输出为 json 数组。
# export matches
with open("output.json", "w") as json_file_handle:
obj = [
{
"text": x.text,
"x0": int(x.get_baseline().x),
"y0": int(x.get_baseline().y),
"width": int(x.get_baseline().width),
"height": int(x.get_baseline().height),
}
for x in l.get_matched_chunk_of_text_render_events_per_page(0)
]
json_file_handle.write(json.dumps(obj, indent=4))
我还举了一个例子,在 PDF 中标记匹配的字母。
您可以在GitHub 或使用PyPi 获取pText
还有很多 examples,请查看它们以了解有关处理文本的更多信息。