我目前正在使用PDF Box来解析pdf,我正在试图找出如何检索有关文本的数据,例如字体(粗体,大小等)和字体的位置。
有什么建议吗?
答案 0 :(得分:5)
从PDF 中提取文本的最佳内容之一是TET, the text extraction toolkit。 TET是PDFlib.com系列产品的一部分。
PDFlib.com是Thomas Merz(“PostScript和PDF Bible”)公司的作者。
TET的第一个化身是a library。那个人可以做你想做的一切,包括关于页面上每个文本元素的位置信息。哦,它也可以提取图像。它重新组合+合并碎片成片的图像。
pdflib.com还提供了该技术的另一个版本,TET plugin for Acrobat。显然你也需要Acrobat才能使用它。
第三个化身是PDFlib TET iFilter。这是用户工作站的独立工具。这两种都是免费的(如在啤酒中)用于私人,非商业目的。
最后,TET还附带一个命令行界面。
TET非常强大。比Adobe自己的文本提取方式更好。它为我提取了文本,其他工具(包括Adobe的)只会吐出垃圾。
几个月前,我测试了他们的桌面独立工具,他们在网页上的说法是正确的。它有一个非常好的命令行。我工作的一些“有问题”的PDF测试文件让我完全满意。
这是我对每个复杂且具有挑战性的PDF文本提取要求的建议。
TET简直太棒了。它检测表格。在表格中,它标识跨越多列的单元格。它分别标识每个表格单元格的表格行和内容。它可以很好地处理连字符:它删除连字符并恢复完整的单词。它支持非ASCII语言(包括CJK,阿拉伯语和希伯来语)。遇到连字时,它会恢复原始字符......
试一试。
答案 1 :(得分:4)
在找到(很难找到)PDFBox文档后,我找到了this little gem。
显然其中一个例子显示了如何做你所要求的一切。基本上,您将PdfTextStripper
子类化并覆盖processTextPosition
方法。在那里,您可以查询TextPosition
以获取所需的任何信息。
为了将来参考,您可以在这里找到javaDoc:http://pdfbox.apache.org/apidocs/index.html
编辑2018-04-02 :原始链接已失效,但可以在SVN repo here中找到示例。
答案 2 :(得分:1)
GetPageText中带有提取选项3或4的Quick PDF Library函数会返回所选页面的CSV字符串,其中包含文本(单个字词或一段文字)和相关字体名称,文本颜色,文本大小和页面上的坐标。
注意:这是一个商业图书馆,我为销售它的公司工作。
答案 3 :(得分:0)
可以使用tabula-py或tabula-java解析PDF文件。
我制作了完整的教程,介绍如何在this article上使用tabula-py。只要安装了Java,您就可以在网络浏览器中建立表格。