听说Tesseract但是世界排名第三的OCR神器,2010年又更新了3.0版本。Tesseract原先是HP写的,如今Open Source了。chrome
下面介绍怎么用Tesseract配合ImageMagick进行简单的数字图像识别。google
首先Tesseract只能识别bmp,tif,因此先拿ImageMagick转换一下图像。注意得无压缩转换,不然Tesseract报错。spa
convert -compress none ./pict.gif./in1.tifcode
而后将图片灰度化-colorspace Gray,或者直接二值化-monochrome成黑白,这样识别率会高一点。图片
接下来裁剪出想要进行精确识别的部分:-crop widthxheight+x+yget
好比-crop 320x40+0+1,从左上角开始坐标为(0,1)处,裁剪出320*40大小的图像。注意参数里是英文字母x,不是乘号*。效率
还有就是网上搜到的-depth 8和-alpha off参数,实践代表加不加效果不大。im
一步完成就像这样:英文
convert -compress none-depth 8 -alpha off -crop 535x24+2+2 -monochrome ./pict.gif ./in1.tifimg
预处理完以后最好再放大一下,此次的样例放大到500%~600%的识别效率就能使人满意。
convert ./in1.tif -scale600% ./in2.tif
而后就能够开始用Tesseract进行识别了。
tesseract ./in2.tif ./1-l eng -psm 7
-l eng是选择语言,-psm 7是说源图像是只在一行上的文字。具体说明看Tesseract的帮助。
下面就是一些实例。
原图以下:
下面是二值化以后的效果,能够看见仍是有些噪点的。
下面是灰度化以后的效果。
识别以后的结果是:
05093519038515450004738373775251263J91648J94318529731857
能够看到有些误报,针对这个问题又特殊处理一下误报字符,结果识别率在90%左右
参考资料:
ImageMagick: http://www.imagemagick.org
Tesseract: http://code.google.com/p/tesseract-ocr