0

我必须从视频流中识别图像中的数字,还有更多的东西应该使识别更容易:
1)它是固定字体 6x8,所有符号的宽度都相等
2)我知道数字的确切位置,它们总是矩形, 未旋转/倾斜/缩放,但由于空气传输故障,可能会出现一些失真。
3) 只有数字和 。
4) 数字背景为半黑色(50% 不透明)

我尝试过 tesseract v2 和 v3,但 .NET 包装器并不完美,识别错误非常大,即使我使用自定义字体进行了训练,据我所知,这是因为分辨率小。

我自己制作了非常简单的算法,将图像转换为黑白并计算原始字体图像和流中图像之间的匹配像素,它比 tesseract 表现更好,但我认为更复杂的算法会做得更好。

我尝试使用带有 BackPropagationLearning 的 ActivationNetwork 训练 AForge,但它无法收敛(本文第一部分,只要我不需要缩放和几种字体http://www.codeproject.com/Articles/11285/Neural- Network-OCR,据我了解,文章中的代码适用于旧版本的 AForge),不好的是,这个项目不再受支持,论坛已关闭,据我所知,谷歌群组也已关闭。

我知道 .NET 有 OpenCV 端口,据我所知,它具有与 AForge 不同的网络方法,所以问题是哪种方法最适合。

那么在这方面是否有任何 .NET 框架可以帮助我,如果它支持多个神经网络实现,那么哪种实现最适合?

4

3 回答 3

4

对于固定放大倍率的固定大小字体,您可能可以使用基于模板匹配的不太复杂的 OCR 方法。有关如何使用 OpenCV(不是 .NET,但希望足以让您入门)的示例,请参见此处。基本思想是为每个数字创建一个模板,然后尝试在目标位置匹配所有模板,选择匹配分数最高的那个。因为您知道数字的位置,所以您可以在非常小的区域内搜索每个数字。有关模板匹配背后理论的更多信息,请参阅这篇关于互相关的 wiki 文章。

这实际上是简化 OCR 应用程序的基础(通常用于识别特殊的 OCR 字体,例如用于在硅片上打印序列号的 SEMI 标准字体。)生产级算法还可以支持缩放、旋转和平移的容差,但是底层技术几乎相同。

于 2012-09-28T14:54:20.213 回答
2

试着看看这个项目这个项目。这两个项目都解释了 OCR 的工作原理,并向您展示了如何在 C# 和 .NET 中实现它。

于 2012-09-28T14:43:17.410 回答
0

如果您不是很着急,我建议您首先寻找解决问题的方法。我在WEKA方面取得了很好的经验。使用 WEKA,您可以非常快速地测试一堆算法。一旦找到解决问题的算法,您就可以将其移植到 .NET、构建包装器、寻找实现或(如果它是一个简单的算法)在 .NET 中重建它。

于 2012-10-18T17:29:06.910 回答