Ограничение символов Тессеракт ищет


можно ли ограничить набор символов, которые Тессеракт ищет (например, поиск только для букв a-z)? Это значительно улучшило бы мои результаты.

4 53

4 ответа:

создайте файл конфигурации (например, "буквы") в каталоге tessdata/configs - обычно /usr/share/tesseract/tessdata/configs
или
/usr/share/tesseract-ocr/tessdata/configs

и добавить эту строку в конфигурационный файл:

tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz  

...или, может быть, [a-z] работает.. не знаю : -)
Затем вызовите Тессеракт, подобный этому:

tesseract input.tif output nobatch letters  

это ограничит Тессеракт распознавать только нужные символы

в дополнение к конфигурационному файлу, это -c флаг:

tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6

использовать белый список в файле config или с помощью -c tessedit_char_whitelist=... переключатель командной строки, в новейшей версии 4.0 вам нужно будет установить режим OCR Engine в "Original Tesseract only". Это связано с тем, что новый режим "нейронные сети LSTM" не учитывает настройки белого списка. Пример правильной командной строки в версии 4.0:

tesseract input_file output_file --oem 0-c tessedit_char_whitelist=abc123

просто добавив Это для тех, кто использует tesseract на Android. В вашей функции readOCR, где вы устанавливаете язык и т. д. добавить следующую строку;

tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");

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