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

StackOverflow https://stackoverflow.com/questions/2363490

  •  23-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Создайте файл конфигурации (например, «буквы») в каталоге 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 tessedit_char_whitelist=... Переключатель командной строки, в новейшей версии 4.0 вам нужно будет установить режим OCR Engine на «Только исходный Tesseract».Это связано с тем, что новый режим «Нейронные сети LSTM» не учитывает настройку белого списка.Пример правильной командной строки для версии 4.0:

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

ОБНОВЛЯТЬ:В более новых версиях (4.0) повреждены eng.traineddata файл, установленный по умолчанию Windows и некоторыми установщиками Linux.Временное решение — замена. tessdata\eng.traineddata файл с файлом из более старой версии.Этот файл должен иметь размер около 30 МБ.В противном случае вы получите ошибку:"Tesseract не мог загрузить языки!" или похожие.

Помимо файла конфигурации, есть -c флаг:

tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6

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

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

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

В Tesseract версии 4.00 это сделать невозможно.Вы можете только точно настроить свою модель или использовать регулярное выражение, чтобы удалить лишние символы из прогноза.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top