Java OCR实现

166

我主要是出于好奇,想知道是否有纯Java实现的OCR。我很好奇它在Java中的表现如何,而且OCR总体上也让我很感兴趣,所以我很想看看它在我彻底理解的语言中是如何实现的。当然,这需要实现是开源的,但即使是专有解决方案,我仍然对其性能很感兴趣,因为我至少可以检查一下。

我已经看过一些可以在Java中使用的OCR(比如Asprise),但似乎它们都不是纯Java实现...有没有?


@Robik 首先,在你这样做的时候,你应该删除不必要的感谢等内容。其次,你不应该编辑这样的假设,特别是如果 OP 仍然活跃,你可以简单地发表评论——尽管在这种情况下很可能是真的... @rat 为了澄清,你是指 asprise 吗? - Tobias Kienzler
如果您不寻求纯Java方法,那么建立JNI桥接(例如Tess4J)可能是有意义的。我的感觉是OCR库在C++世界中更好地表示(OCRAD,GOCR,Cuneiform-请参见此处)。 - dma_k
@rat - 你是对的 - Asprise OCR SDK for Java 不是纯Java编写的。实际上,在幕后,使用了本地代码,因为OCR是一个非常计算密集型的过程。 - Scanner.js Receipt Invoice OCR
5个回答

86
我建议在sourceforge.net上尝试Java OCR项目。我最初开发了它,并在博客文章中介绍了它。
自从我把它放在sourceforge上后,一位志愿研究员/开发人员通过出色的工作扩展和改进了它的功能。
试试看,如果你不喜欢它,你总是可以改进它!

18
@Ron,我也看了一下这个项目。我没有找到演示文稿,GUI可以执行各种图形操作,但没有关于如何启动实际字符识别的说明。 - James P.
1
@Ron 当我点击你的博客链接时,我看到一个空白页面。 - neoneye

11
如果你正在寻找一种非常可扩展的选项或者有特定的问题领域,可以考虑使用Java面向对象神经引擎自己开发。另一个JOONE参考资料。
我在个人项目中成功地使用它来识别图像中的字母,例如这个,你可以在Github上找到我应用程序OCR组件的所有源代码,在这里

4
大多数链接失效了。 - Erik

11

我们使用Java测试了几个OCR引擎,比如Tesseract、Asprise、Abbyy等。在我们的分析中,Abbyy获得了最佳结果。


1
Java API还是Java实现..? - Ewoks
没有,但是你可以使用ProcessBuilder来与命令行版本进行交互。 - Aaron Digulla
1
Tesseract和Abbyy都不是基于Java的,它们只是具有Java API。 - krispy

6

有许多OCR库可供选择。然而,我的经验是,主要的商业实现ABBYY、Omnipage和ReadIris远胜于开源或其他次要实现。这些商业库并不是专门为Java设计的,尽管当然也可以。

当然,如果您的兴趣在于学习代码,则开源实现就足够了。


3

我刚发现了这个(不熟悉,未经过测试,请自行检查)

Ron Cemer Java OCR


如果您只是出于好奇想使用它,您可以查看此小应用程序的源代码。

它使用神经网络进行手写字符OCR识别。

Java OCR:手写识别


@Matthieu 你知道吗?我在 Ron 发布这个问题之前回答了7个月。 - jitter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接