Search
Write a publication
Pull to refresh

Comments 6

Несколько лет назад пробовал дообучить тессеракт на распознание довольно специфичного текста, результаты не порадовали. У меня очень базовое понимание всей этой области, но возникло ощущение, что тессеракт остановился в своём развитии много лет назад и лучше использовать что-то более современное.

  1. Непосредственно распознавание текстовых строк производится их самописной нейронной сетью, основанной на LSTM ячейках. Как я понимаю, это всё было очень круто для своего времени (они это реализовали еще до появления Tensorflow, согласно документации), но сильно устарело по сегодняшним меркам. Нет поддержки GPU, устаревшая архитектура (предполагаю, что GRU или вообще популярные сейчас трансформеры на современных tensorflow/pytorch намного обойдут самописную LSTM сеть в тессеракте и по точности и по скорости), сложности с обучением из-за привязки к их скриптам/форматам обучающих данных/C++ коду (т.е. даже напримерtensorboard для более глубокого отслеживания процесса уже не привязать).

  2. Нахождение текста на фото делается классическими алгоритмами CV, которые не очень хорошо работают в сложных условиях. Насколько я помню, по-быстрому прикрученная к проекту модель Advanced EAST (примитивная по сегодняшним меркам) дала намного более качественный поиск текста без необходимости мучиться с бинаризацией и прочим препроцессингом, чем встроенная в сам тессеракт. Менее актуально для обычных сканов документов, чем для фотографий, наверное.

Насколько я вижу, сильно с тех пор в библиотеке ничего не поменялось, если бы понадобилось OCR сейчас - смотрел бы в сторону более современных инструментов, PaddleOCR например.

Согласен, есть более интересные и гораздо современнее модели. По тестам они превосходят тессеракт в показателях. Хоть и не на много. Но тессеракт выигрывает своей простотой в использовании и быстрой настройкой. Буквально одна команда для установки и следующей командой можно пользоваться.

Хотя, если б стояла задача сделать полноценный пайплайн по OCR с нуля, то я выбрал бы для этого TrOCR или PaddleOCR.

и следующей командой можно пользоваться

Только если надо распознать весь кадр. Если же надо распознать лишь два столбца из средней части кадра, тогда возникает вопрос, как же обозначить границы распознавания.
Мне когда-то нужно было регулярно распознавать очень конкретные бумажки: каждый раз там был один и тот же шрифт и очень похожие по сути тексты (списки ФИО на самом деле).
Обучал тессеракт на этом шрифте долго и упорно, но результат был всё равно отстойный.
По сравнению с тем распознаванием, который выдавал API от ABBYY.
В общем задачу пришло по-другому решать, через распознавание русского текста не сработало (у ABBYY тоже хватало ошибок, поэтому подход пришлось отклонить)

Я как то скармливал в Tesseract и в ABBY один и тот же текст. Результат был одинаков.

Sign up to leave a comment.