2013-04-24 57 views
1

所以我正在學習下面的教程,下面是我的代碼。我一直在試圖弄清楚我需要的數據路徑。有沒有人有關於如何拍攝我拍攝的位圖照片並將其加載到tesseract中進行分析的示例或建議?所有幫助讚賞。Android tesseract數據路徑

package com.example.cameraocr; 

import java.io.File; 

import com.googlecode.tesseract.android.TessBaseAPI; 

import android.os.Bundle; 
import android.os.Environment; 
import android.app.Activity; 
import android.view.Menu; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 
private static final int CAMERA_REQUEST = 1888; 
    private static ImageView imageView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    this.imageView = (ImageView)this.findViewById(R.id.imageView1); 
    Button photoButton = (Button) this.findViewById(R.id.button1); 
    photoButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent cameraIntent = new  Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_REQUEST); 
     } 
    }); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 
     Bitmap photo = (Bitmap) data.getExtras().get("data"); 
     imageView.setImageBitmap(photo); 
    } 
} 
protected static void identifyunicode() { 
    // DATA_PATH = Path to the storage 
    // lang for which the language data exists, usually "eng" 

    File myDir = getExternalFilesDir(Environment.MEDIA_MOUNTED); 
    TessBaseAPI baseApi = new TessBaseAPI(); 
    baseApi.init(myDir, "eng"); 
} 
} 

回答

2

在我的例子看看:

https://github.com/akiwarheit/plug-notes-android/blob/master/src/com/plug/note/NoteEditorActivity.java

我所做的就是調用攝像頭,拍攝照片,讓照片並把它傳遞給我的OCRTask類(一個的AsyncTask)的調用TessBaseAPI

public void callCamera() { 
    Log.d(TAG, "Starting camera..."); 
    Intent cameraIntent = new Intent(
     android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraIntent, REQUEST_OCR); 
    } 

https://github.com/akiwarheit/plug-notes-android/blob/master/src/com/plug/note/OCRTask.java

(有點長,如果我張貼在這裏的整個OCRTask類代碼,所以剛讀它在Github上,也許?)

而且事後

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    /* bunch of other codes */ 
    if (requestCode == REQUEST_OCR) { 
     if (resultCode == RESULT_OK) { 
     Bitmap x = (Bitmap) data.getExtras().get("data");    
     new OCRTask(this, x, this).execute();    
     } 
    } 
    } 

我只是增加了它認識到文字處理結果我EditText

@Override 
    public void onFinishRecognition(String recognizedText) { 
    noteView.setText(noteView.getText() + " " + recognizedText); 
    } 

這裏是類

NoteEditor (calls the Camera intent)

OCRTask (calls the TessBaseApi, this is your main concern)

OCRCallback (Adds the text to my EditText after OCRTask finishes)

FileManager (util method)

希望它能幫助。