是否有任何库可以帮助从可以与PHP一起使用的矩形区域中从pdf中提取文本

时间:2012-05-23 07:57:30

标签: php pdf pdftotext pdf-to-html

我正在寻找一些(最好是免费的)库,它可以帮助从指定的矩形区域中提取PDF文本,该区域由left,top,width和height参数指定。它应该可以在Linux系统上与PHP一起使用。你能建议这样一个图书馆和一个工作实例吗?

1 个答案:

答案 0 :(得分:4)

命令行

PHP也可以使用外部命令行工具。所以如果这是你的选择......

如果您使用命令行pdftotext - 但只使用Poppler版本,而不是XPDF版本! - 您有以下可选的CLI参数:< / p>

  -x   : x-coordinate of the crop area top left corner
  -y   : y-coordinate of the crop area top left corner
  -W   : width of crop area in pixels (default is 0)
  -H   : height of crop area in pixels 

一个工作示例:

首先,让我们使用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 -

 a conformant implementation of the Shell and Ut
 andard 1003.1). Bash can be configured to be POS

 acter shell options documented in the description
 the shell is invoked. In addition, bash interprets

 option is present, then commands are read from s

请注意我对-f f 第一页)和-l l ast页面)的使用情况。如果您不使用此功能,pdftotext将为多页PDF的每一页打印相应的文本区域。

与此截图相比:

Screenshot of PDF with Bash man page, selected rectangle being highlighted

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

poppler的

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

TET

如果找不到满足您要求的免费图书馆,那么请查看PDF文本提取的最佳内容:TET, the text extraction toolkit。 TET是PDFlib.com系列产品的一部分。

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

TET的第一个化身是a library。那个人可能会做你想做的一切,包括关于页面上每个元素的位置信息。

pdflib.com还提供了该技术的另一个版本,TET plugin for Acrobat。第三个化身是PDFlib TET iFilter。这是Windows桌面的独立工具。 这些都是免费的(如在啤酒中)用于私人,非商业目的。

TET比Adobe自己的文本提取更好。它为我提取了文本,其他工具(包括Adobe的)只吐了垃圾。

试一试。