Заставить Tesseract дать какой-то ответ

Я пытаюсь распознать одну строку рукописных цифр. В настоящее время я выполняю некоторую предварительную обработку с помощью Python и OpenCV, разделяю изображение на связанные компоненты и передаю эти компоненты в Tesseract с PSM = 10 (режим сегментации страницы, 10 означает «обращаться с изображением как с одним символом»), а белый список символов ограничен «0123456789». ". Я ожидаю, что Tesseract вернет мусор, когда моя сегментация подключенного компонента не удалась, и вернет ровно одну цифру, когда моя сегментация будет успешной. Tesseract часто вообще ничего не возвращает.

Я пробовал как pytesseract, так и python-tesseract в качестве интерфейса Tesseract для Python. Pytesseract работает, находя исполняемый файл tesseract.exe, запуская его с подходящими параметрами из оболочки и собирая ответ. Так я узнал о своей проблеме. После этого я попробовал python-tesseract, который реализует полноценный C API. Естественно, результат был тот же.

Ниже приведен образец из 5 изображений, которые я загружал в Tesseract по отдельности (я также загрузил те же изображения в виде отдельных файлов здесь):

образец изображения

На этих изображениях я получаю 1,*,4,*,*, что означает, что Tesseract возвращает только пробелы.

С другими режимами сегментации страниц я получаю следующее:

PSM_SINGLE_CHAR: 1*4**
PSM_SINGLE_BLOCK_VERT_TEXT: **43*
PSM_CIRCLE_WORD: 11***
PSM_SINGLE_LINE: 11491
PSM_AUTO: *****
PSM_SPARSE_TEXT: *****
PSM_SINGLE_WORD: 11499
PSM_AUTO_ONLY: *****
PSM_SINGLE_COLUMN: *****
PSM_SPARSE_TEXT_OS: *****
PSM_SINGLE_BLOCK: 11499
PSM_OSD_ONLY: *****
PSM_AUTO_OSD: *****
PSM_COUNT: 11499

Как ни странно, когда я запускаю tesseract image.png image -l eng -psm 10 digits-only для этих изображений, он возвращает *,*,4,9,*. (digits-only это tessedit_char_whitelist 0123456789)

Как заставить Tesseract дать мне какой-то ответ, а не вообще ничего?


person Pastafarianist    schedule 05.12.2014    source источник
comment
Какую версию тессеракта вы используете? Можете ли вы показать примеры для изображений? У вас такой же результат для прогона без psm 10?   -  person tobltobs    schedule 05.12.2014
comment
@tobltobs, спасибо за ответ. Я точно не знаю, какую версию Tesseract я использую, поскольку python-tesseract, похоже, поставляется с предварительно упакованным Tesseract. Однако я предполагаю, что, поскольку последний раз Tesseract обновлялся в 2012 году, а python-tesseract последний раз обновлялся в августе 2014 года, я использую версию 3.02. Однако мои tessdata взяты из «официальной» установки. Я также добавил несколько изображений в пост.   -  person Pastafarianist    schedule 06.12.2014
comment
Я не знаю ни о каком программном обеспечении, которое могло бы читать приведенные выше изображения как числа. Я могу расшифровать только два последних.   -  person tobltobs    schedule 06.12.2014
comment
@tobltobs, я надеялся, что Tesseract реализовал нечто похожее на победителей вызова MNIST. Эти алгоритмы способны расшифровывать изображения, подобные тем, которые я предоставил.   -  person Pastafarianist    schedule 07.12.2014