2013-04-24 3 views
1

Итак, я следую учебным пособиям, а ниже - мой код. Я застреваю, пытаясь понять, что мне нужно, с помощью пути данных. У кого-нибудь есть пример или предложение о том, как взять растровое фото, которое я взял, и загрузить его в tesseract для анализа? Вся помощь была оценена.Путь данных tesseract Android

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)

Надеется, что это помогает.

Смежные вопросы