使用OCR的PDF文本提取方法

有人试图使用OCR库和Java从PDF中提取文本吗? 你发现什么是最可靠的文本提取库。 我见过的大多数方法(tesseract,GOCR)都是需要编写一些JNI代码的C库。

我熟悉pdfbox,它现在是0.8.x版本的Apache孵化器项目,但它的文本提取并不总是准确的。 我正在寻找一种更可靠的替代方法。

我还没有尝试过Asprise JavaPDF,在尝试这个过程中,但想了解更多有关OCR方法的信息(如果可能的话)。

任何帮助,将不胜感激。

如果您有基于文本的PDF,我强烈建议您使用PDFTextStream 。 这不是免费的,但许可是合理的,而且它比PDFBox好得多。 PDFBox扼杀了许多由较新工具生成的PDF文件,并且对于它可以处理的PDF不太一致。 PDFTextStream处理我抛出的任何PDF,包括带有嵌入式PNG图像的PDF,PDFBox无法做到这一点。

如果你诅咒PDFTextStream人员添加OCR,他们可能会听。

我们使用ABBYY FineReader Engine 11.他们有java包装器。

优点:

  • 它适用于所有语言(英语,俄语,乌兹别克语等)和真正的OCR(即使你有没有OCR的pdf,他们首先执行渲染和OCRing)。

缺点:

  • 它的成本。 您必须购买开发人员许可证和最终用户许可证。

  • 它非常慢。

如果要从基于文本的PDF中提取OCR,可能必须先将其转换为图像。

您可以使用Tesseract – tesjeract或Tess4J的Java包装器来执行OCR。 但是,对于PDF,在将其提供给OCR引擎之前,您需要先转换为图像(PNG或TIFF)。

VietOCR调用Tesseract可执行文件来执行文本提取。 它使用GhostScript进行PDF到图像转换。