【问题标题】:PDF Text Extraction Approach Using OCR [closed]使用 OCR 的 PDF 文本提取方法 [关闭]
【发布时间】:2009-04-22 16:38:31
【问题描述】:

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

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

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

任何帮助将不胜感激。

【问题讨论】:

  • 您使用的是结构化 PDF 吗?如果您有能力在 JAVA 中从 PDF 元数据中获取文本。
  • 不,不是所有的 PDF 都是结构化的。

标签: java pdf text-parsing


【解决方案1】:

如果您有基于文本的 PDF,我强烈推荐 PDFTextStream。它不是免费的,但许可是合理的,而且比 PDFBox 好得多。 PDFBox 阻塞了许多由较新工具生成的 PDF 文件,并且对于它可以处理的 PDF 并不太一致。 PDFTextStream 可以处理我扔给它的任何 PDF,包括嵌入了 PNG 图像的 PDF,这是 PDFBox 无法做到的。

如果您要求 PDFTextStream 人员添加 OCR,他们可能会听。

【讨论】:

  • 谢谢,听起来不错,可惜价格太贵了……
  • 几年后,但现在 PDFTextStream 有一个免费版本(带 1 个胎面帽)
  • 如果 PDF 已经是基于文本的,为什么还要讨论 OCR?只需使用 PDFBox、iText、PDFTextStream 或其他任何工具来解析文本。 OCR 适用于 PDF 是图像的时候,比如来自扫描仪。如果 PDF 是扫描图像,PDFBox、iText 和 PDFTextStream 都不会为您提供帮助。
  • 我有一个基于文本的 PDF,语言不是英语。当我使用 PDFBox 阅读文本时,所有字符都搞砸了。因此,唯一可以尝试的选择是 OCR。因此我们需要讨论 OCR。
【解决方案2】:

我们使用 ABBYY FineReader Engine 11。他们有 java wrapper。

优点:

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

缺点:

  • 需要花费。您必须购买开发者许可和最终用户许可。

  • 而且速度非常慢。

【讨论】:

  • 感谢您对产品的回答和诚实。多年来,要求推荐工具的问题是题外话,回答这些问题被认为是“未完成”。 (其实这个问题没有用就应该删掉)
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多