0

我正在寻找一些(最好是免费的)库,它可以帮助从指定的矩形区域中提取 PDF 文本,该矩形区域由左、上、宽和高参数指定。它应该可以在 linux 系统上与 PHP 一起使用。您能否建议这样一个库和一个工作示例?

4

1 回答 1

5

命令行

PHP 也可以使用外部命令行工具。因此,如果这是您的选择...

如果您使用命令行pdftotext——但只有 Poppler 版本,而不是 XPDF 版本!-- 你有这些可选的 CLI 参数:

  -x : 裁剪区域左上角的 x 坐标
  -y : 裁剪区域左上角的 y 坐标
  -W:裁剪区域的宽度(以像素为单位)(默认为 0)
  -H:裁剪区域的高度(以像素为单位)

一个工作示例:

首先,让我们使用 Ghostscript 从 Bash 手册页创建一个 PDF:

man -t bash | gs -o man-bash.pdf -sDEVICE=pdfwrite -

接下来,让我们从中提取一些文本。使用宽度 200、高度 100 和左上角(200,200){你在这里从左上角计算为定位在(0,0)}:

kp@mbp:~$ pdftotext -f 1 -l 1 -x 200 -y 200 -W 200 -H 100 man-bash.pdf -
 
 Shell 和 Ut 的一致实现
 标准 1003.1)。Bash 可以配置为 POS
 
 描述中记录的演员外壳选项
 外壳被调用。另外,bash 解释
 
 存在选项,然后从 s 读取命令

请注意我-f对(for first page) 和-l(for last page)的用法。如果您不使用它,将为多页 PDF 的每一页打印相应的文本区域。pdftotext

与此屏幕截图比较:

带有 Bash 手册页的 PDF 屏幕截图,选中的矩形被突出显示

看起来它按预期工作,不是吗?

图书馆

波普勒

Poppler 也可以用作库。但是我对这种方法没有任何经验(对 PHP 也没有太多经验)。

TET

如果您找不到满足您要求的免费库,请查看从 PDF 中提取文本的最佳工具:TET,文本提取工具包。TET 是PDFlib.com产品系列的一部分。

PDFlib.com 是 Thomas Merz 的公司。如果您不认识他的名字:Thomas Merz 是“PostScript and PDF Bible”的作者之一。

TET 的第一个化身是图书馆。那个可能可以做任何你想做的事情,包括页面上每个元素的位置信息。

pdflib.com 还提供了该技术的另一个化身,即Acrobat 的 TET 插件。第三个化身是PDFlib TET iFilter。这是适用于 Windows 桌面的独立工具。两者都是免费的(如啤酒),可用于私人、非商业目的。

TET 比 Adob​​e 自己的文本提取要好得多。它为我提取了其他工具(包括 Adob​​e 的)只吐出垃圾的文本。

试试看。

于 2012-07-29T15:38:36.947 回答