识别图像中的数字

时间:2010-03-09 19:23:10

标签: c# java image-recognition number-recognition

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

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

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

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

有人能给我一个暗示这是怎么做的吗?

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

1 个答案:

答案 0 :(得分: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