Android OCR之tesseract章

weixin_34185560發表於2016-05-20

Android OCR之tesseract


1. 開源工具簡介


tesseract是非常有名的開源OCR工具,但是要將它配置到Android開發環境中可能要費點功夫,別擔心,github上面有好人幫助我們封裝了Android開發環境的tesseract配置,這就是Android平臺上OCR開源專案tess-two

2. 環境配置


利用tess-two配置OCR環境非常簡單。

  • 首先,設定工程的ndk路徑。
  • 其次,在模組中新增依賴:compile 'com.rmtheis:tess-two:6.0.0'

3. 資料準備


要進行OCR還要獲取訓練資料tessdata,下載該訓練資料,到時候將訓練資料弄到自己的Android裝置上就行了。

注意:不要把所有訓練資料都弄到Android裝置上,因為訓練資料比較大,需要用到什麼語言的資料就只把這些語言對應的資料弄到Android裝置上。

比如,我一般識別只用到識別英文與簡體中文,因此只需要將eng.traineddata,chi_sim.traineddata弄到Android裝置上就行了。

4. 開始Android OCR之旅


相關常量設定:

    //訓練資料路徑,必須包含tesseract資料夾
    static final String TESSBASE_PATH = "/storage/emulated/0/Download/tesseract/";
    //識別語言英文
    static final String DEFAULT_LANGUAGE = "eng";
    //識別語言簡體中文
    static final String CHINESE_LANGUAGE = "chi_sim";  

英文識別:

     public void EnglishOCR(){
        //設定圖片可以快取
        english.setDrawingCacheEnabled(true);
        //獲取快取的bitmap
        final Bitmap bmp = english.getDrawingCache();
        final TessBaseAPI baseApi = new TessBaseAPI();
        //初始化OCR的訓練資料路徑與語言
        baseApi.init(TESSBASE_PATH, DEFAULT_LANGUAGE);
        //設定識別模式
        baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_LINE);
        //設定要識別的圖片
        baseApi.setImage(bmp);
        english.setImageBitmap(bmp);
        englishtext.setText(baseApi.getUTF8Text());
        baseApi.clear();
        baseApi.end();
     }  

簡體中文識別與英文識別類似。

5. 程式介面


1736058-b0655beb68d02e77.png
1736058-2d9b0947d82866e8.png

程式原始碼下載:https://github.com/lavor-zl/FunctionsDemo

相關文章