2014-02-23 3 views
0

지난 달 필자는 여가 시간에 Tesseract 라이브러리를 사용하여 Android OCR에 대한 지식을 얻기 시작했습니다. 나는 tess-two 프로젝트 & android ndk를 다운로드했다. 그런 다음 우분투 컴퓨터에서 tess-two 프로젝트를 만들어 (.so) 파일을 만들고 성공적으로 가져 왔습니다. 나는 그 안드로이드 프로젝트를위한 라이브러리로서 (.so) libs를 가진 tess-two 프로젝트를 사용한다. (윈도우 8에서 프로젝트를 개발 중입니다.)Tessseract가 android에서 null을 반환합니다.

이제 프로젝트에 대한 라이브러리로 안드로이드 프로젝트와 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 사진 당신이 doInBackground에서 null를 반환하기 때문에이 null의 ReadActivity 클래스에 onPostExecute()에서 result을 보낼 수 있습니다. 그래서 반환 값을 하나의 값으로 바꾸거나 결과를 초기화하십시오. onPostExecute()

+0

부주의 한 실수 .. 이제 작동합니다. 감사합니다. – Ram

+0

환영합니다 @ 램, 도와주게되어 기쁘다. –

관련 문제