我有多个 PDF,我想从它们的第一页中提取某个区域的文本。因此,鉴于我有 PDF 中文本的边界框坐标,如何使用命令行提取该文本。
我研究了一下,发现 PDFMiner 和 PDFBox 可以做到这一点。但是 PDFMiner 的文档记录很差。
有人可以告诉我如何使用 PDFMiner 做到这一点吗?或者您是否可以提出其他解决方案?
PS:我在 Linux 终端上。
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。
您可以使用 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);