识别图像中的数字

我一直在寻找网上图像中数字识别的资源。 我发现许多链接提供了关于该主题的大量资源。 但不幸的是,它比帮助更令人困惑,我不知道从哪里开始。

我有一个包含5个数字的图像,没有受到干扰(没有validation码或类似的东西)。 这些数字在白色背景上是黑色的,用标准字体书写。

我的第一步是分开数字。 我目前使用的算法非常简单,它只检查列是否完全是白色,因此是空格。 然后它修剪每个角色,使其周围没有白色边框。 这非常有效。

但是现在我对这个数字的实际识别感到困惑。 我不知道猜测正确方法的最佳方法是什么。 我不认为直接比较字体是一个好主意,因为如果数字只有一点点差异,那就没有更多的工作了。

任何人都可以给我一个如何做到这一点的暗示吗?

这个问题无关紧要,但我将用C#或Java实现它。 我找到了一些可以完成这项工作的图书馆,但我想自己实施,以便学习一些东西。

为什么不考虑使用Tesseract等开源OCR引擎?

http://code.google.com/p/tesseract-ocr/

用于Tesseract的C#包装器

http://www.pixel-technology.com/freeware/tessnet2/

Tesseract的Java Wrapper

http://sourceforge.net/projects/tessocrinjava/

虽然您可能不会考虑使用第三方库来实现它,但是只需集成第三方工具就可以完成大量的工作。 还要记住,看似简单的事情(识别数字5与数字6)通常非常复杂; 我们谈论成千上万行代码复杂。 至少,看一下tesseract的源代码,它会给你一个很好的理由想要利用第三方库。

这是另一个问题,它会给你一些关于所涉及的算法的想法: https ://stackoverflow.com/questions/850717/what-are-some-popular-ocr-algorithms