聽說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