Дообученный Tesseract читает мансийский текст: ошибки символов упали с 18,5% до 0,85%
Югорский НИИ информационных технологий дообучил Tesseract 5 на мансийском языке. Базовая русская модель путала буквы с макроном и ошибалась в 18,5% символов. Вместо ручной разметки сканов команда сгенерировала 1,3 млн строк синтетикой, и ошибки упали до 0,85%. Модель открыта на Hugging Face.
AI-обработка оригинала Habr AI; редакция Hamidun News
Представьте, что вам нужно оцифровать тысячи страниц на языке, для которого нет ни готового OCR, ни размеченных сканов. Именно с этим столкнулись исследователи из Югорского НИИ информационных технологий, когда собирали корпус мансийского языка. Их решение оказалось на удивление приземлённым и при этом очень эффективным: доля ошибочных символов упала с 18,5% до 0,85%, то есть примерно в 20 раз.
В чём была проблема
Мансийская письменность построена на кириллице, но содержит долгие гласные с макроном (а̄, о̄, ӯ, э̄, ы̄) и букву ӈ. Стандартная русская модель Tesseract этих символов не знает. Она теряет черту над буквой или превращает её в мусор. А долгота гласной в мансийском меняет смысл слова, так что потеря макрона это потеря информации.
На примере строки «Хӯл тэ̄нутыг ва̄рнэ ма̄гыс» русская модель выдала «Хул тэнутыг варнэ магьгсь»: макроны пропали, а «ы» превратилась в «ьг». Дообученная модель прочитала всю строку без единой ошибки.
Есть и вторая, менее заметная проблема. Одну и ту же букву в Unicode можно записать по-разному: как один готовый символ или как «у» плюс комбинируемый макрон. Для человека они одинаковы, для модели и для сравнения строк это разные последовательности. Достаточно открыть консоль Python: длина двух визуально одинаковых «ӯ» окажется 1 и 2, а сравнение вернёт False.
Как собрали данные без сканов
Готовых мансийских сканов нужного объёма не существует, а размечать их вручную пришлось бы годами. Поэтому команда сгенерировала данные сама: берёт настоящий мансийский текст, рисует его на картинке разными шрифтами, и правильный ответ известен заранее.
Пайплайн состоит из четырёх шагов:
- Все тексты нормализуются по форме Unicode NFC, чтобы у каждой буквы было ровно одно представление.
- Строки рендерятся несколькими десятками гарнитур, включая FreeSerif, DejaVu Sans, Arial и Times New Roman, в размерах 12, 14, 24 и 26 pt и в трёх начертаниях.
- Каждый символ размечается рамкой. Автоматический расчёт по метрикам шрифта ошибается на диакритике, поэтому авторы ввели три словаря поправок: для отдельных символов, для кегля и для конкретной гарнитуры. Значения подбирали экспериментально.
- Длинный текст режется функцией split_by_width, чтобы ни один символ не вылезал за край картинки.
На выходе получилось 1,3 млн пар «картинка .tif + файл .gt.txt с правильным ответом».
Как дообучали Tesseract
Третья часть рецепта это трансферное обучение. Внутри Tesseract 5 работает CRNN: свёрточная часть находит штрихи и черты, LSTM читает признаки слева направо, а функция потерь CTC избавляет от ручной разметки границ букв. В качестве старта взяли rus.traineddata из tessdata_best. Мансийский алфавит почти совпадает с русским, поэтому модели нужно выучить в основном новые буквы.
Инструмент tesstrain сам достаёт LSTM-часть с весами, собирает полный список символов из обучающих данных и расширяет выходной слой под объединённый алфавит. Ключевым параметром оказалось число итераций: мало и новые буквы не усвоятся, много и модель переобучится на синтетике. Помогла ранняя остановка по валидационной выборке.
Итог по метрикам: CER снизился с 18,5% до 0,85%, а WER с 42,1% до 1%. Человеку остаётся вычитывать результат, а не набирать текст заново.
Ограничения и практический вывод
Модель уверенно читает чистый типографский текст кеглем 12–26 pt. Хуже она работает с очень мелким или крупным шрифтом, с латиницей и со старыми изданиями со стёртой печатью. Авторы планируют добавить в обучение реальные архивные сканы. Заметим и то, что оценка сделана на тех же синтетических условиях, поэтому на реальных книгах цифры, скорее всего, будут хуже.
Для практика полезен сам рецепт. Если вы работаете с языком или доменом, где мало размеченных данных:
- Сначала нормализуйте Unicode, это дешёвая и часто недооценённая мера.
- Генерируйте синтетику из реальных текстов с разнообразием шрифтов.
- Доучивайте готовую модель, а не обучайте с нуля.
Авторы считают, что тот же подход подойдёт для хантыйского, ненецкого и других кириллических языков с диакритикой. Модель mns.traineddata лежит на Hugging Face (URIIT/mns-tesseract): достаточно положить файл в папку tessdata и указать язык mns. Попробовать можно и в браузере на Этнопортале.
- 2 мая 2026 г.Внедрение ИИ для обработки рекламаций: кейс Эпотос
- 9 нояб. 2026 г.Tesseract даёт ИИ-агентам редактировать 3D-сцены, сохраняя объекты и слои
- 23 июл. 2026 г.Google Quantum AI: обучение с подкреплением втрое стабилизировало квантовый чип Willow
- 9 нояб. 2026 г.Mirage дала Claude инструменты для создания и правки 3D-сцен в одном проекте
Вопросы и ответы по материалу
Что известно по теме: в чём была проблема?
Мансийская письменность построена на кириллице, но содержит долгие гласные с макроном (а̄, о̄, ӯ, э̄, ы̄) и букву ӈ. Стандартная русская модель Tesseract этих символов не знает. Она теряет черту над буквой или превращает её в мусор. А долгота гласной в мансийском меняет смысл слова, так что потеря макрона это потеря информации. На примере строки «Хӯл тэ̄нутыг ва̄рнэ ма̄гыс» русская модель выдала «Хул тэнутыг варнэ магьгсь»: макроны пропали, а «ы» превратилась в «ьг».
Что известно по теме: как собрали данные без сканов?
Готовых мансийских сканов нужного объёма не существует, а размечать их вручную пришлось бы годами. Поэтому команда сгенерировала данные сама: берёт настоящий мансийский текст, рисует его на картинке разными шрифтами, и правильный ответ известен заранее. Пайплайн состоит из четырёх шагов: Все тексты нормализуются по форме Unicode NFC, чтобы у каждой буквы было ровно одно представление.
Что известно по теме: как дообучали Tesseract?
Третья часть рецепта это трансферное обучение. Внутри Tesseract 5 работает CRNN: свёрточная часть находит штрихи и черты, LSTM читает признаки слева направо, а функция потерь CTC избавляет от ручной разметки границ букв. В качестве старта взяли rus.traineddata из tessdata_best. Мансийский алфавит почти совпадает с русским, поэтому модели нужно выучить в основном новые буквы.
Протестируйте новые LLM и мультимодальные модели в одном окне
Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.