识别图像中的数字

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

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

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

但现在我被困在对数字的实际识别上。我不知道猜对的最好方法是什么。我不认为直接与字体进行比较是一个好主意,因为如果数字只有一点点不同,它将不再起作用。

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

这个问题并不重要,但我将在C#或Java中实现它。我找到了一些可以完成这项工作的库,但我想自己实现它,学习一些东西。


答案 1

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

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

C# Wrapper for Tesseract

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

Java Wrapper for Tesseract

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

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

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


答案 2

推荐