识别图像中的数字

sve*_*ens 17 c# java image-recognition number-recognition

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

我有一个带有5个数字的图像,没有受到干扰(没有验证码或类似的东西).数字在白色背景上是黑色的,用标准字体书写.

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

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

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

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

Kei*_*ler 14

为什么不考虑使用像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的源代码,它会给你一个很好的理由想要利用第三方库.

这是另一个SO问题,它将为您提供有关所涉及的算法的一些想法:https://stackoverflow.com/questions/850717/what-are-some-popular-ocr-algorithms