據說Tesseract可是世界排名第三的OCR神器,2010年又更新了3.0版本。Tesseract原先是HP寫的,現在Open Source了。
下面介紹怎麼用Tesseract配合ImageMagick進行簡單的數字圖像識別。
首先Tesseract只能識別bmp,tif,所以先拿ImageMagick轉換一下圖像。注意得無壓縮轉換,否則Tesseract報錯。
convert -compress none ./pict.gif./in1.tif
然後將圖片灰度化-colorspace Gray,或者直接二值化-monochrome成黑白,這樣識別率會高一點。
接下來裁剪出想要進行精確識別的部分:-crop widthxheight+x+y
比如-crop 320x40+0+1,從左上角開始座標爲(0,1)處,裁剪出320*40大小的圖像。注意參數裏是英文字母x,不是乘號*。
還有就是網上搜到的-depth 8和-alpha off參數,實踐表明加不加效果不大。
一步完成就像這樣:
convert -compress none-depth 8 -alpha off -crop 535x24+2+2 -monochrome ./pict.gif ./in1.tif
預處理完之後最好再放大一下,這次的樣例放大到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