我有多个PDF,我想从第一页中提取某个地区的文字。 因此,如果我有PDF中文本的边界框的坐标,我如何使用命令行提取该文本。
我研究了一下,发现PDFMiner和PDFBox可以做到这一点。但是PDFMiner的记录非常糟糕。
有人可以告诉我如何使用PDFMiner执行此操作吗?或者,如果你可以建议其他解决方案?
PS:我在Linux终端上。
答案 0 :(得分: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。 / p>
答案 1 :(得分: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" ) );
这里rectange是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);