用于识别等宽数字的工具应该使用什么?

我需要从视频流中的图像中识别数字,并且有几个因素可以使识别过程更容易:
1) 使用的是固定字体6×8,所有符号宽度相同
2) 我知道数字的确切位置,它们始终是矩形的,不会旋转/倾斜/缩放,但由于空气传输故障可能会有一些失真。
3) 只有数字和点号。
4) 数字的背景是半黑色(50%不透明)

我尝试过使用Tesseract v2和v3,但.NET的包装器并不完美,识别错误率非常高,即使我使用自定义字体进行训练,根据我的理解,这是因为分辨率较低所致。

我自己开发了一个非常简单的算法,通过将图像转换为黑白并计算原始字体图像与流中图像的匹配像素数,它的表现比Tesseract好,但我认为更复杂的算法会做得更好。

我尝试使用AForge进行训练,使用ActivationNetwork和BackPropagationLearning,但它无法收敛(这篇文章的第一部分,因为我不需要缩放和多种字体 http://www.codeproject.com/Articles/11285/Neural-Network-OCR,据我所知,文章中的代码适用于AForge的旧版本),糟糕的是,这个项目不再得到支持,论坛已经关闭,我认为Google Groups也是如此。

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

那么,有没有.NET框架可以帮助我解决这个问题,如果它支持多种神经网络实现,哪种实现最适合?


回答:

对于固定大小和固定放大的字体,你可能可以使用基于模板匹配的较不复杂的OCR方法。请参见这里,了解如何使用OpenCV(不是.NET,但希望能帮助你开始)进行模板匹配的示例。基本思路是为每个数字创建一个模板,然后在目标位置尝试匹配所有模板,选择匹配得分最高的一个。因为你知道数字的位置,你可以针对每个数字在非常小的区域内进行搜索。有关模板匹配背后的理论的更多信息,请参见这篇维基文章,了解交叉相关性。

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注