Есть ли способ указать прогресс и отменить обратный вызов в Tesseract? Я использую Tesseract в Android, используя проект тэсс-два.
Уже есть предыдущий вопрос — Android Tesseract прогресс обратный вызов. Однако ответы там подразумевают, что это невозможно.
У меня есть еще одна важная деталь, чтобы добавить — я проверил исходный код и нашел класс под названием ETEXT_DESC
, похоже, это можно использовать только для этой цели.
Мой вопрос — может ETEXT_DESC
использоваться для выполнения и отмены обратных вызовов, и если это возможно, как я могу его использовать?
Да, вы можете получить обратные вызовы прогресса, реализовав ProgressNotifier
интерфейс и переопределение onProgressValues
метод. (За кулисами он использует ETEXT_DESC
класс, который вы упоминаете.) Предоставьте ваш объект уведомителя в качестве параметра для TessBaseAPI
конструктор.
Вы можете отменить OCR, который выполняется, используя stop
метод.
Я написал Сообщение блога об этом недавно. Если у вас возникнут проблемы, пожалуйста, откройте новый выпуск по проекту tess-two.
РЕДАКТИРОВАТЬ:
Из поста в блоге:
Процент прогресса может использоваться в термометре ProgressBar. Ограничительные рамки могут быть нарисованы в верхней части дисплея входного изображения во время распознавания.
Реализация этого обратного вызова требует использования альтернативного конструктора для объекта TessBaseAPI и реализации интерфейса ProgressNotifier:
Регистрация для получения обновлений:
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar1);
// Create the TessBaseAPI object, and register to receive OCR progress updates
TessBaseAPI baseApi = new TessBaseAPI(this);
baseApi.getHOCRText(myImage);
Получение обновлений:
@Override
public void onProgressValues(ProgressValues progressValues) {
progressBar.setProgress(progressValues.getPercent());
}