从PDF中提取数据的最简单方法是什么?

我需要从一些PDF文档中提取数据(使用Java)。 我需要知道最简单的方法是什么。

我试过iText。 这对我的需求来说相当复杂。 此外,我猜它不适用于商业项目。 所以这不是一个选择。 我还试了一下PDFBox,并遇到了各种NoClassDefFoundError错误。

我用Google搜索并遇到了其他几个选项,比如PDF Clown,jPod,但我没时间试验所有这些库。 我依靠社区通过Java阅读PDF的经验。

请注意,我不需要创建或操作PDF文档。 我只需要从中等级别的布局复杂性中提取PDF文档中的文本数据。

请建议从PDF文档中提取文本的最快捷,最简单的方法。 谢谢。

我建议尝试Apache Tika 。 Apache Tika基本上是一个工具包,可以从许多类型的文档中提取数据,包括PDF。

Tika(除了免费)的好处是,它曾经是Apache Lucene的一个子项目,它是一个非常强大的开源搜索引擎。 Tika包含一个内置的PDF解析器,它使用SAX内容处理程序将PDF数据传递给您的应用程序。 它还可以从加密的PDF中提取数据,并允许您创建或子类化现有的解析器以自定义行为。

代码很简单。 要从PDF中提取数据,您需要做的就是创建一个实现Parser接口的Parser类并定义一个parse()方法:

 public void parse( InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) throws IOException, SAXException, TikaException { metadata.set(Metadata.CONTENT_TYPE, HELLO_MIME_TYPE); metadata.set("Hello", "World"); XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata); xhtml.startDocument(); xhtml.endDocument(); } 

然后,要运行解析器,您可以执行以下操作:

 InputStream input = new FileInputStream(new File(resourceLocation)); ContentHandler textHandler = new BodyContentHandler(); Metadata metadata = new Metadata(); PDFParser parser = new PDFParser(); parser.parse(input, textHandler, metadata); input.close(); out.println("Title: " + metadata.get("title")); out.println("Author: " + metadata.get("Author")); out.println("content: " + textHandler.toString()); 

我正在使用JPedal ,我对结果非常满意。 它不是免费的,但它的质量很高,从pdfs或文本提取生成图像的输出非常好。

作为付费图书馆,我们始终可以提供支持。

我使用PDFBox为Lucene索引提取文本而没有太多问题。 如果我没记错的话,它的错误/警告记录非常详细 – 你收到这些错误的原因是什么?

我理解这篇文章已经很老了,但我建议从这里使用itext: http : //sourceforge.net/projects/itext/如果你正在使用maven,你可以从maven中心拉入jars: http : //mvnrepository.com /artifact/com.itextpdf/itextpdf

我无法理解如何使用它可能很困难:

  PdfReader pdf = new PdfReader("path to your pdf file"); PdfTextExtractor parser = new PdfTextExtractor(); String output = parser.getTextFromPage(pdf, pageNumber); assert output.contains("whatever you want to validate on that page");