Изменения и модификации Tesseract-Android-Tools скомпилированы успешно (я думаю), но без вывода - PullRequest
0 голосов
/ 26 февраля 2012

В настоящее время я пытаюсь заставить работать инструменты Android для Tesseract

http://code.google.com/p/tesseract-android-tools/

для меня на Android.Я занимался этим около недели, но безрезультатно.

Я использую 64-разрядную версию Win 7 с Cygwin.

Я следовал инструкциям в файле readme и внес много изменений в файлы Android.mk.По сути, это добавление косой черты к пути, поэтому мне пришлось вручную жестко кодировать пути к отдельным файлам или переходить к расположению файлов в 3 пакетах, чтобы получить его для сборки.Однако в конце сборки я не получил уведомление «Build Sucessful», но были созданы файлы .so.

Я портировал его на затмение как есть и использовал следующий код для получения извлеченного текста.

private static final String TESSBASE_PATH = "/mnt/sdcard/";

Bitmap imageFile = BitmapFactory.decodeFile(image.getAbsolutePath());

        TessBaseAPI baseApi = new TessBaseAPI();

        if(baseApi.init(TESSBASE_PATH, "eng")){
            System.out.println("Tessbase initialized");
            baseApi.setDebug(true);
            baseApi.setImage(bmp);
            String recognizedText = baseApi.getUTF8Text();
            System.out.println("---------------------output-------------------");
            System.out.println("recognizedText<"+recognizedText+">");
        }
        else{
            System.out.println("Tessbase initialization failure.");
        }

Сначала я получил сообщение об ошибке

«Растровые функции недоступны; библиотека должна быть скомпилирована в Android-8 NDK»

После просмотра файла tessbaseapi.cpp я понял, что для компиляции правильной функции нужен специальный флаг компилятора.Этот флаг был -DHAS_JNIGRAPHICS.Я думаю, это означает, что библиотека JNI Graphics должна присутствовать.

Тем не менее, программа все равно не будет компилироваться, так как не удалось найти функцию memcpy () во вновь скомпилированном методе.Я исправил это, изменив фактический код C ++, чтобы он включал

. Наконец, программа полностью скомпилировалась (хотя все еще не получала уведомления BUILD SUCCESSFUL), и когда я ее запустил, я вообще ничего не получил.Это может быть проблема с файлом eng.traineddata или проблема в реальном коде.

Что-то я сделал не так?Может кто-нибудь связать меня с файлом eng.traineddata, который, как он знает, работает, и изображение, которое работает с ним?

Заранее спасибо!

1 Ответ

2 голосов
/ 04 июня 2012

Прошло несколько месяцев с тех пор, как вы опубликовали этот вопрос, однако, если вы все еще ищете ответы, я бы настоятельно рекомендовал вам взглянуть на проект tess-two на github.

Хотя это не решит ошибку, которую вы опубликовали, это тактическое решение проблемы / альтернативное решение.

Это вилка инструментов tesseract-android-tools, и вы невероятно просты в использовании.Он будет запущен в течение часа.

Если вы получаете плохие результаты, убедитесь, что файл обученных данных есть, используйте проводник DDMS, чтобы проверить его там, а не 0 байтов (это случилось со мнойнесколько раз).

Кроме того, убедитесь, что вы установили символы белого и черного списков, это очень хорошо улучшит результаты.

Удачи

...