1. 程式人生 > >淺析Android OCR文字識別

淺析Android OCR文字識別

(原創文章,轉載請註明作者與出處)

這學期有門課程老師要求用JAVA實現一個OCR文字識別的程式,所以就花了一些時間研究了一下在安卓端如何實現

自己嘗試做了拍照識別和從相簿選擇圖片識別

但是手機運算能力太差,圖片太大、解析度太高的話,識別時間會很長,所以在選取圖片的時候呼叫了系統裁剪功能,並且另開執行緒來處理識別。

推薦測試的時候不要用太大的圖片。

同組的隊友用java寫了圖片的預處理,所以拿過來試試能否提高識別成功率

無奈安卓無法使用java.awt裡面的包,所以還費了一些時間替換成android.graphics中的一些類實現相同功能。

測試發現灰度化後是能提高一些識別率,在電腦上灰度化後再用三個演算法二值化後還能進一步提高識別率

但在手機上用大津法、最大熵法進行二值化花費時間太久(幾乎沒算成功),所以後來這兩個方法就沒有呼叫,而只用迭代法二值化效果不理想。

識別需要用到語言包,需要放置在SD卡根目錄。(我只下載了簡體中文和英文的語言包)

下面是幾張識別截圖(前兩張是識別的手機照片,後一張是識別的示例圖片):

    

 

最後的效果是,能識別一些比較規整的文字,照片的話最好只裁剪文字部分去識別(而且要照的比較清晰)。

也能識別一些簡單的英文、數字驗證碼。

識別有待提高,速度也有待提高。

下面是原始碼,語言包等下載地址:

tessdata是語言包 需要放到手機SD卡根目錄
tess-two是OCR引擎(是基於3.01版編譯的,現在已經有3.02版本了),需要匯入到專案中(專案中已經匯入)