将边界框内的 pdf 文本直接提取到 python

Extract pdf text within bounding box directly into python

我正在尝试在给定的边界矩形内提取 pdf 文本。我知道有 pdf 抓取工具,例如 pdfminer、pypdf 和 pdftotext。我已经对所有 3 个进行了试验,到目前为止,我只获得了 pdftotext 的代码以从给定的边界框内提取文本。该代码看起来像这样:

s = "pdftotext -x %d -y %d -w %d -h %d"
s = s%(<various inputs into my function>)
cmd = [s, pdf_path,
           text_out]
subprocess.call(cmd)

不过,这个outputs/writes是一个文本文件。我想立即使用该文本,这意味着我不想去打开一个文本文件来检索该边界框中的任何单词,因为我将对 10,000 多个文档执行此操作并打开那么多文件可能是一种痛苦。我基本上是 运行 来自我的 python 脚本的命令行提示符,所以我认为实际上没有办法解决这个问题,但我不确定。由于 pdfminer 和 pypdf 是实际的 python 包,我可以得到它们的文本,但它们似乎没有任何方法可以在给定的像素限制内提取文本。

进一步说明 - 我希望在 python 中具体执行此操作,因为我有大量其他代码用于同一个总体项目。

您可以使用 text=open(text_out,'r').read() 打开文本文件,这会将文本文件中的所有文本放入一个字符串中。然后,您可以使用 text.split('your_delimiter') 根据您选择的分隔符将该字符串解析为字符串列表。

PyMuPDF/Fitz 包适用于此。他们在以下位置提供脚本和文档: https://github.com/pymupdf/PyMuPDF-Utilities/tree/master/textbox-extraction

他们的脚本通过查找边界词来工作,您可以通过简单地执行 rect = fitz.Rect(x0, y0, x1, y1) 而不是他们的 rect = ~他们的东西~ .如果不清楚,pno 也是您要从中提取的页码。