【问题标题】:Java OCR implementation [closed]Java OCR 实现 [关闭]
【发布时间】:2026-01-01 18:10:01
【问题描述】:

这主要是出于好奇,但是纯 Java 中是否有任何 OCR 实现?我很好奇这将如何纯粹在 Java 中执行,而 OCR 通常让我感兴趣,所以我很想看看它是如何用我完全理解的语言实现的。当然,这需要实现是开源的,但我仍然对专有解决方案感兴趣,因为我至少可以检查一下这种情况下的性能。

我见过一些可以在 Java 中使用的(如Asprise),但似乎这些不是纯 Java 实现......有吗?

【问题讨论】:

  • @Robik 首先,当您使用它时,您还应该删除不必要的感谢等。其次,您不应该在这样的假设下进行编辑,特别是如果 OP 仍然处于活动状态并且您可以简单评论 - 尽管在这种情况下可能是真的......@ rat 澄清一下,你的意思是 asprise 吗?
  • 如果您不搜索纯 Java 方法,那么构建 JNI 桥(如 Tess4J)可能是有意义的。我的感觉是 OCR 库在 C++ 世界中表现得更好(OCRAD、GOCR、Cuneiform - 查看全部here)。
  • @rat - 你是对的 - Asprise OCR SDK for Java 不是纯 Java 的。事实上,在幕后使用的是原生代码,因为 OCR 是一个计算量非常大的过程。

标签: java ocr


【解决方案1】:

我建议尝试 sourceforge.net 上的 Java OCR 项目。我最初开发的,我有a blog posting on it

自从我把它放到 sourceforge 上后,它的功能在志愿者研究人员/开发人员的出色工作下得到了扩展和改进。

试一试,如果你不喜欢它,你可以随时改进它!

【讨论】:

  • @Ron 我也看过这个项目。我没有找到演示,GUI 执行各种图形操作,但没有关于如何进行实际字符识别的说明。
  • @Ron 当我点击你博客的链接时,我看到一个空白页面。
【解决方案2】:

我们已经使用 Java 测试了一些 OCR 引擎,例如 Tesseract、Asprise、Abbyy 等。在我们的分析中,Abbyy 给出了最好的结果。

【讨论】:

  • Java API 或 Java 实现..?
  • 都没有,但有一个命令行版本,您可以使用ProcessBuilder 与之交谈。
  • Tesseract 和 Abbyy 都不是基于 Java 的。他们只是有 Java 的 API。
【解决方案3】:

如果您正在寻找一个非常可扩展的选项或有一个特定的问题域,您可以考虑使用Java Object Oriented Neural Engine 自行开发。另一个JOONE 参考。

我在个人项目中成功使用它来识别图像中的字母,例如this,您可以在github上找到我的应用程序的OCR组件的所有源代码here

【讨论】:

  • 大部分链接都失效了。
【解决方案4】:

那里有各种各样的 OCR 库。然而,我的经验是,主要的商业实现,ABBYY、Omnipage 和 ReadIris,远远超过了开源或其他次要实现。这些商业库并非主要设计用于与 Java 一起使用,尽管这当然是可能的。

当然,如果您的兴趣是学习代码,那么开源实现就可以了。

【讨论】:

    【解决方案5】:

    刚找到这个(不知道,没测试,自己查)

    Ron Cemer Java OCR


    由于您只是出于好奇才需要它,您可以查看这个小程序的源代码。

    它使用神经网络对手写字符进行 OCR

    Java OCR: Handwriting Recognition

    【讨论】: