Android文字識別之tesseract的使用


關於tesseract識別工具有Google提供的版本有tesseract-android-tools,不過還有一個tesseract-two也是非常好用的,這里我們使用的是tesseract-two。tesseract是用c++實現的,需要封裝Java API用於Android平台的調用。所以在使用tesseract-two之前得下載Android-NDK ,下載NDK之后,解壓到自己電腦的一個文件夾下,配置eclipse引用下載來的NDK。

 

解壓下載來的NDK,因為要使用ndk-build該命令又為了方便起見,不用CD來CD去的~配置一下環境變量,在path中追加ndk所解壓的目錄。

 

tesseract-two其實是Tesseract Tools for Android的一個git分支,選擇它是由於操作簡單,並且集成了leptonica,一個圖形處理工具。所以可以在gitbub上下載來

https://github.com/rmtheis/tess-two

也可以通過git來獲取想要的資源。

http://git-scm.com/download/win

資源都准備好了,然后我們使用NDK編譯(Windows下的cmd進入),敲入如下的命令(編譯的時間會有點久)

cd tess-two  
ndk-build  
android update project -t 1 --path .  
ant release  
    
cd ..  
cd eyes-two  
ndk-build  
android update project -t 1 --path .  
ant release  

 

eclipse里面的Android項目中導入編譯好的類庫,共三個項目,tess-two,tess-two-test 以及eyes-two。其中tess-two和eyes-two為android lib項目,供其它項目引用。

 

然后編寫Java代碼,但是發現會出錯。主要由於在/mnt/sdcard/目錄下缺少語言包,將tessdata下面的兩個語言包放到sd卡的根目錄下面就可以了~

import com.googlecode.tesseract.android.TessBaseAPI;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {
    
    private static final String TESSBASE_PATH = "/mnt/sdcard/";  
    private static final String DEFAULT_LANGUAGE = "eng";  
    private static final String CHINESE_LANGUAGE = "chi_sim";  
    private static final String TAG = "tesseract";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        TessBaseAPI baseApi=new TessBaseAPI();
        baseApi.init(TESSBASE_PATH, DEFAULT_LANGUAGE);  
        baseApi.setPageSegMode(TessBaseAPI.PSM_AUTO); 
        
        //從資源里獲取一張圖片
        Bitmap  bitmap = BitmapFactory.decodeResource(MainActivity.this.getResources(), R.drawable.ocr);
        baseApi.setImage(bitmap);         
        
        final String outputText = baseApi.getUTF8Text(); 
        Log.i(TAG, "識別結果:" + outputText);
        baseApi.end();
} }

 

原圖:

識別結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM