2016-08-13 4 views
2

Androidでキャプチャした画像からテキストを抽出しようとしています。そこで私はカメラにアクセスするための意図を作成し、startActivityForResultで開始しました。tesseractデータパスが存在しません

これは私のonActivityResultコードです:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     String state = Environment.getExternalStorageState(); 
     if (Environment.MEDIA_MOUNTED.equals(state)) { 
      Bundle extras = data.getExtras(); 
      Bitmap bitmap = (Bitmap) extras.get("data"); 
      TextView res = (TextView) findViewById(R.id.hello); 
      //imageView.setImageBitmap(imageBitmap); 
      //Image image = ImageIO.read(imageFile); 
      //BufferedImage buffimg = (BufferedImage) image; 
      //BufferedImage img = ImageHelper.convertImageToGrayscale(buffimg); 
      //ITesseract instance = new Tesseract(); // JNA Interface Mapping 
      //ITesseract instance = new Tesseract1(); // JNA Direct Mapping 

      //TessDataManager.initTessTrainedData(context); 
    if(isStoragePermissionGranted() == true) { 
TessBaseAPI tessBaseAPI = new TessBaseAPI(); 

String path = Environment.getExternalStorageDirectory() + "/"; 
//String path = "/mnt/sdcard/"; 

tessBaseAPI.setDebug(true); 
tessBaseAPI.init(path, "eng"); 


tessBaseAPI.setImage(bitmap); 

String text = tessBaseAPI.getUTF8Text(); 
tessBaseAPI.end(); 
res.setText(text); 
} 
     } 
     else 
     { 
      TextView res = (TextView) findViewById(R.id.hello); 
      res.setText("Well damn"); 
     } 


    } 


} 
public boolean isStoragePermissionGranted() { 
    if (Build.VERSION.SDK_INT >= 23) { 
     if (checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) 
       == PackageManager.PERMISSION_GRANTED) { 
      Log.v(TAG,"Permission is granted"); 
      return true; 
     } else { 

      Log.v(TAG,"Permission is revoked"); 
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); 
      return false; 
     } 
    } 
    else { //permission is automatically granted on sdk<23 upon installation 
     Log.v(TAG, "Permission is granted"); 
     return true; 
    } 


} 

私が受け取るエラーは次のとおりです。具体的

java.lang.RuntimeException: Unable to resume activity {com.example.abc.snaptravel/com.example.abc.snaptravel.MainActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data dat=content: (has extras) }} to activity {com.example.abc.snaptravel/com.example.abc.snaptravel.MainActivity}: java.lang.IllegalArgumentException: Data path does not exist! 

Data path does not exist 

私はこの問題について多くを読んでいると、多くの異なるソリューションを試しました。私はパス名に"/tessdata/"の有無にかかわらず試しました。

ご意見がありましたら、本当にありがとうございます。ありがとうございました!

答えて

0

まあ、私はEnvironment.getExternalStorageDirectory()が私のSDカードを指していると思っていましたが、そうではありません。私の内部ストレージを指しています。それが私が間違っていた場所です。私は自分の内部ストレージにtessdataフォルダをコピーし、今は完全に動作します。

関連する問題