2016-11-15 5 views
1

настоящее время я использую следующий код:OCR (распознавание текста) результат от OpenCV 3,1 + 3,04 тессеракт варьируется в зависимости от порядка признания

https://github.com/opencv/opencv_contrib/blob/master/modules/text/samples/textdetection.cpp


Странная вещь, казалось бы, OCR результат может варьироваться в зависимости от порядка изображений, которые я передал модулю ocr.

например), если есть 100 кадров изображений с текстом, и признанный результат может отличаться от - я прохожу каждые кадры последовательно в модуль Тессеракта (всего 100 кадров) и - Я проходит каждый кадров не в последовательном (до 100 шт.)


В идеале оба вышеуказанных случая должны иметь одинаковый результат.

Я уже подтвердил, что это не вызвано деталями erFilter. Результат, исходящий от erFilter, точно такой же. Эта разница, по-видимому, происходит внутри оболочки tesseract или tesseract в openCV.

Разница также может варьироваться от значения достоверности, имеет небольшую разницу, а распознанный текст отличается.

Я чувствую, что OpenCV или tesseract запоминают что-то и влияют на результат OCR нового кадра, но я не мог найти никаких спецификаций, рассказывающих об этом.

Пожалуйста, дайте мне знать, если это нормально, как поведение OpenCV/Tesseract.

ответ

2

Постарайтесь, чтобы очистить адаптивные данные с ClearAdaptiveClassifier() или отключить адаптивную классификатор с конфигурационными переменными:

classify_enable_learning 0 
classify_enable_adaptive_matcher 0 

См Tesseract FAQ.

+0

Большое спасибо! Проблема решена! ;) Похоже, что оболочка tesseract от OpenCV не раскрывает метод или такую ​​конфигурацию, поэтому мне нужно было его модифицировать, чтобы сделать это. – Aki24x

+0

Обновление: казалось бы, очистка адаптивных данных уменьшит коэффициент OCR в моем случае. Я думаю, что это потому, что: 1. Я пытаюсь сделать OCR против видео с текстом. 2. Первый кадр и следующий кадр имеют корреляцию. 3. Очистка адаптивных данных отбрасывает преимущество, полученное из предыдущего кадра, против неоднозначных букв. Но это означает, что в моем случае нет решения для колебаний. Единственным способом может быть сериализация OCR, что означает, что я не могу использовать многопоточную оптимизацию. Хм ... – Aki24x