我正在使用OpenCV 2.4和Tesseract 3
我正在尝试通过网络摄像头在14段显示器上进行OCR。
问题在于,当我训练Tesseract时,我必须做足够的侵蚀/扩张来填补每个部分的空白。但是,我从网络摄像头读取的图像需要进行预处理以消除噪音。要做到这一点,我使用糜烂和扩张,结果图片没有链接的部分:
我训练的是什么(这是“V”字母):http://i.imgur.com/NbmVqkb.png(片段都是链接的)
我向tesseract提供的内容:http://i.imgur.com/0E4iXXk.png(某些细分已关联,有些细分未关联)
OCR的结果总是不同的,可以是“OVO”以及“EB”。我想也许如果我训练tesseract与我实际阅读的更相似的版本(非链接段)它可以更好地工作但是Tesseract不能用这样的空白空间训练(它说“空页”)。
有没有人知道如何解决这个问题?
我试图增加侵蚀/扩张的大小但是其他字母不被识别(B和D令人困惑)并且总体结果较低。
谢谢!
编辑:基本上,我需要的是一种将片段链接在一起的方法,以便使tesseract更容易阅读角色或训练具有未链接片段的tesseract的方式(从我所看到的,可以'发生)
答案 0 :(得分:0)
不能为此跳过tessaract吗?看起来您已经有了将图像分割成单独字符的方法。然后,您可以对显示的片段进行编号,也许就像在http://www.randomdata.nl/wiki/index.php/Adruino_14_segment_LED_board显示的那样,并确定当前哪些片段正在点亮。然后你可以将它与已知的所有字符组合相匹配,并使用某种形式的最近距离算法来找到最佳匹配。
坚持你V上面链接的方案可能编码如下:
segment number: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
switched on: 0 1 1 0 0 0 1 0 1 0 0 0 0 0