c# - 识别图像中的数字

标签 c# java image-recognition number-recognition

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

我有一张图片,里面有 5 个数字,不受干扰(没有验证码或类似的东西)。数字是白底黑字,以标准字体书写。

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

但现在我对数字的实际识别感到困惑。我不知道什么是猜测正确的最好方法。我不认为直接与字体进行比较是个好主意,因为如果数字仅相差一点点,它将不再起作用。

谁能告诉我这是如何完成的?

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

最佳答案

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

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

Tesseract 的 C# 包装器

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

Tesseract 的 Java 包装器

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

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

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

关于c# - 识别图像中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411893/

相关文章:

java - 为什么 Tomcat 的 LifyCycleSupport.java 使用数组而不是任何高级容器(ArrayList)来存储监听器?

tensorflow - Tensorflow 上带有回归输出的 CNN 图像识别

python - 我如何在 TensorFlow 中使用我自己的图像?

c# - 如何创建 wix 类型 35 自定义操作

c# - PrincipalContext Active Directory 验证容器中的用户

c# - 在C#中自动神奇地添加MySQL参数

java - 如何生成由函数支持的列表?

c# - 在 asp.net webforms 中的 url 路由后,js 文件和 css 文件未正确加载

java - 在没有文件处理的情况下计算java中的空格、制表符和新行

c# - 如何以编程方式读取扫描的文档或图像