2014-02-23 119 views
0

上個月,我開始研究我的閒暇時間,通過Tesseract庫瞭解關於Android OCR的一些知識。我下載了tess-two項目& android ndk。然後,我在Ubuntu機器上創建了這個tess-two項目來創建(.so)文件,併成功地獲得了這個。我只是用(.so)庫作爲我的android項目庫的tess-two項目。 (我正在開發我的項目在Windows 8中)。Tessseract在android中返回null

現在我有一個android項目和tess-two項目作爲我的項目庫引用。然後,我完成了編碼以獲取Image並將其傳遞給TessBaseAPI對象,並獲得轉換結果getUTF8Text()函數但轉換需要太多時間,但每次都返回null。

這是採取我會把這裏的圖片路徑

public class Task extends AsyncTask<String, String, String> 
{ 
    private Context mcontext; 
    TessBaseAPI baseAPI=new TessBaseAPI(); 

    @Override 
    protected String doInBackground(String... params) 
    { 
     File externalStorageDirectory = Environment 
       .getExternalStorageDirectory(); 
       baseAPI.init(externalStorageDirectory.getAbsolutePath()+ 
       "/ocrsample/tesseract/", "eng",TessBaseAPI.OEM_TESSERACT_ONLY); 
     inspectFromImagePath(picturePath); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     Intent i = new Intent(mcontext, ReadActivity.class); 
     i.putExtra("result", result); 
     mcontext.startActivity(i); 
     baseAPI.clear(); 
    } 

    private void inspectFromImagePath(String picturePath) 
    { 
     baseAPI.setPageSegMode(PageSegMode.PSM_SINGLE_BLOCK); 
     baseAPI.setImage(new File(picturePath)); 
     String text = baseAPI.getUTF8Text(); 
     bitmap.recycle(); 
    } 
} 

回答

1

你試試我的AsyncTask.After圖片來自onPostExecute()發送resultReadActivity類,因爲你從doInBackground返回null爲null。因此將返回值更改爲一個值或初始化結果onPostExecute()

+0

不小心的錯誤..現在它工作..感謝 – Ram

+0

歡迎@Ram,很高興幫助 –