1

我有多个 PDF,我想从它们的第一页中提取某个区域的文本。因此,鉴于我有 PDF 中文本的边界框坐标,如何使用命令行提取该文本。

我研究了一下,发现 PDFMiner 和 PDFBox 可以做到这一点。但是 PDFMiner 的文档记录很差。

有人可以告诉我如何使用 PDFMiner 做到这一点吗?或者您是否可以提出其他解决方案?

PS:我在 Linux 终端上。

4

2 回答 2

4

pdftotext(采用基于 Poppler 的最新版本之一)确实允许您定义一个页面区域以从中提取文本。

尝试这个:

pdftotext    \
  -f 5       \
  -l 7       \
  -x 200     \
  -y 700     \
  -W 144     \
  -H 80      \
   input.pdf \
   output.txt

它选择页面范围 5-7,以及一个宽度 = 144 点 ( 72 points == 1 inch)、高度 = 80 点的矩形,其中左上角位于 x 坐标 200 和 y 坐标 700。

于 2015-03-30T18:09:38.853 回答
2

您可以使用 PDFBox。https://pdfbox.apache.org/apidocs/org/apache/pdfbox/util/PDFTextStripperByArea.html

PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition( true );
List allPages = document.getDocumentCatalog().getAllPages();
PDPage firstPage = (PDPage)allPages.get( 0 );
stripper.extractRegions( firstPage );
stripper.addRegion( "class1", rectangle );
System.out.println( "Text in the area:" + rectangle );
System.out.println( "Text: " + stripper.getTextForRegion( "class1" ) );

这里的矩形是 java.awt 包的 Rectangle 类的对象。http://docs.oracle.com/javase/7/docs/api/java/awt/Rectangle.html

Rectangle rectange = new Rectangle(int x, int y, int width, int height);
于 2015-03-30T10:11:01.517 回答