Ошибка при использовании tesseract для извлечения текста на изображении с помощью Android - PullRequest
2 голосов
/ 26 апреля 2011

Я собрал tesseract ocr для Android с помощью инструмента android tesseract, и все прошло нормально.Я также получил файлы библиотеки.Когда я пытался использовать Java-оболочки для доступа к нативным методам, устройство зависало.Я использую тессеракт непосредственно в обратном вызове камеры.

Код выглядит примерно так:

public class AndroidCamera extends Activity implements SurfaceHolder.Callback {

    TessBaseAPI tba;

    PictureCallback myPictureCallback_JPG = new PictureCallback() {

        public void onPictureTaken(byte[] data, Camera arg1) {
            Bitmap bitmapPicture = BitmapFactory.decodeByteArray(data, 0, data.length);
            tba = new TessBaseAPI();
            tba.setImage(bitmapPicture);
            String result = tba.getUTF8Text();
            Log.i("text: "+result);

            Toast.makeText(AndroidCamera.this,result,Toast.LENGTH_LONG).show();
        }
        camera.startPreview();
    };
}

Я проверил в журнале cat все еще setimage, он работает нормально, в tba.getUTF8Text()устройство выходит из строя.

1 Ответ

3 голосов
/ 20 июля 2011

Я не вижу кода инициализации движка с нужным языком. Это делается путем вызова метода init с каталогом language /.

    // if trained data is /mnt/sdcard/tessdata/eng.traineddata then 
    // the tesseractDirectory should be /mnt/sdcard/
    String tesseractDirectory ="path to tessdata dir";
    TessBaseAPI api = new TessBaseAPI();

    // eng - english language
    api.init(tesseractDirectory, "eng");
    // you may want to provide a grayscale/high contrast image for better results

Обученные данные можно скачать здесь: http://code.google.com/p/tesseract-ocr/downloads/list

...