Корпус мансийского языка. Как мы научили Tesseract читать по-мансийски

Wait 5 sec.

Паща о̄лэн, Хабр! (Привет, Хабр!)На связи снова Югорский НИИ информационных технологий (ЮНИИИТ). Продолжаем цикл статей о проекте «Корпус мансийского языка». В первой части мы рассказывали, как с нуля собрали 300 тысяч параллельных предложений и обучили нейросеть переводить с русского на мансийский и обратно. Сегодня поговорим о модели, которая умеет читать мансийский печатный текст. Это OCR, оптическое распознавание символов.Сразу о главном. Мы дообучили открытый движок Tesseract 5, и доля ошибочных символов упала с 18,5% до 0,85%. Это примерно в 20 раз меньше ошибок. Модель лежит в открытом доступе на Hugging Face, ей уже можно пользоваться.В статье расскажем:почему готовые OCR-движки не справляются с мансийским текстом;как собрать обучающую выборку, когда отсканированных книг почти нет;как мы дообучали Tesseract и как проверяли качество;какой точности удалось добиться и где взять модель.Зачем мансийскому языку OCRБольшая часть мансийских текстов до сих пор существует только на бумаге. Это книги, учебники, сборники фольклора, подшивки газет. Чтобы эти тексты попали в корпус и стали обучающими данными для нейросетевого переводчика или языковой модели, их нужно превратить в цифровой текст. Перепечатывать вручную долго и дорого. Носителей языка мало, и их время лучше тратить на перевод и экспертизу.OCR решает эту задачу. Сканируем страницу, получаем текст, который можно искать, редактировать и добавлять в датасеты. Это работает не только у нас. Исследователи показали, что OCR помогает улучшить машинный перевод для 60 малоресурсных языков.Почему готовые движки не справляютсяМансийская письменность построена на кириллице, но со своими особенностями. Из-за них у стандартного OCR возникают две проблемы:Проблема 1. Буквы, которых нет в русском алфавитеЭто долгие гласные с макроном (чертой над буквой), например а̄, о̄, ӯ, э̄, ы̄. Есть и отдельная буква ӈ, которой обозначают звук «нг». Долгота гласной в мансийском важна, и потеря макрона может превратить одно слово в другое.Мы попробовали стандартную русскую модель Tesseract. Буквы с макроном и ӈ она просто не знает. Черту над буквой модель теряет, а иногда превращает знакомую букву в мусор. На мансийском тексте русская модель ошибается примерно в 18 символах из 100. Для оцифровки корпуса это не годится.Проблема 2. Одна буква, разные кодыВторая проблема менее заметна глазу. Одну и ту же букву с макроном можно записать в Unicode разными способами. Мы уже сталкивались с этим при сборе корпуса для переводчика. Для человека буквы выглядят одинаково, а для модели это разные последовательности символов. Как мы с этим справились, расскажем в шаге 1 следующего раздела.Где взять данные, если сканов почти нетСовременной нейросетевой OCR-модели нужны сотни тысяч примеров. Каждый пример состоит из картинки со строкой те Читать далее