Распознавание старинных и редких письменностей по фото
Почему обычный OCR не читает вертикальную вязь, рукописи и редкие алфавиты, какая цепочка работает: модель под письмо, транскрипция, перевод, сверка и проверка носителем языка. Честные пределы точности и список того, что просить у заказчика.
Коротко (TL;DR)
- Обычный OCR рассчитан на печатные буквы в строке слева направо. Вертикальная вязь, рукопись и редкий алфавит выходят за эти рамки, поэтому результат получается пустым или случайным.
- Рабочая цепочка: хорошее фото, распознавание моделью под конкретное письмо, транскрипция, перевод, сверка с эталоном и с носителем языка.
- Точность на таких текстах всегда неполная. Я делю результат на надёжное и черновое и показываю сомнительные места списком.
- От заказчика нужны качественные фото, образцы почерка или шрифта, опубликованные версии текста и человек, который прочтёт оригинал.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
ИИ-агенты и обработка документовРаспознать старинную или редкую письменность по фото можно, но получится только черновик, который обязательно проверяет человек, читающий это письмо. Обычный сервис распознавания текста для такой работы не годится: нужна модель, обученная на конкретном письме, и честная пометка, какие места читаются уверенно, а какие нет.
Почему обычный OCR не справляется
Классический OCR делает три допущения. Строки идут горизонтально, буквы стоят отдельно друг от друга, и алфавит известен программе заранее. Старые и редкие письменности ломают каждое из трёх.
Возьмём старописьменную монгольскую вязь. По описанию консорциума W3C, текст в ней идёт сверху вниз вертикальными строками, а сами строки сменяют друг друга слева направо (W3C, Mongolian Language Enablement). Письмо курсивное, буквы соединяются с соседями с обеих сторон, поэтому форма знака зависит от его места в слове. Одну и ту же букву на фото легко принять за несколько разных.
С рукописями другая беда. Почерк у каждого писца свой, чернила выцветают, бумага темнеет и просвечивает. С архивами та же история: штампы поверх текста, сгибы, пятна, чужие пометки на полях.
Я уже разбирал, как распознают обычный текст с фото. Здесь речь о случаях, где этот путь не работает вовсе.
Что работает на практике
Универсального решения нет. Работает цепочка из нескольких шагов, и каждый шаг можно проверить отдельно.
Первый шаг: модель, обученная именно на этом письме. Для старомонгольской вязи есть открытый проект image2bichig, он указан в наборе tugstugi/mongolian-nlp. В описании сказано, что это традиционный монгольский OCR на основе CRNN, то есть свёрточной сети с рекуррентным слоем (репозиторий tugstugi/mongolian-nlp). Там же упомянут синтетический набор из 80 тысяч картинок, собранный из текстов песен и словаря. Из этого я делаю осторожный вывод: модели такого рода учатся на искусственно сгенерированных строках, поэтому на чужом почерке или повреждённой бумаге результат может быть заметно хуже. Это мой вывод, авторы проекта такого не заявляли.
Второй шаг: современные модели, которые видят изображение целиком. Многие из них читают и таблицы, и рукописный текст. Про один такой инструмент я писал в статье про Chandra. Для редкого письма заявления разработчиков надо проверять на своих образцах: поддерживает ли модель вашу письменность, показывает только пробный прогон.
Третий шаг: транскрипция. Это запись исходного текста привычными буквами, знак за знаком. Она нужна специалисту, чтобы сверять распознавание, не разбирая оригинал глазами.
Четвёртый шаг: перевод. Он идёт последним и стоит ровно столько, сколько стоят предыдущие слои. Если транскрипция с ошибками, красивый перевод ничего не исправит.
Как это выглядело в моём проекте
Так я работал над переводом старомонгольского текста по фото. Нужно было прочитать надпись на старописьменной вязи и перевести её. Мини-программы WeChat и китайские сервисы распознавания оказались недоступны, поэтому я взял открытую модель image2bichig.
Сырой результат модели я сверил с опубликованной версией той же легенды и разложил на три слоя: транслитерация, современный монгольский на кириллице и русский перевод. К ним добавил список мест, которые требуют сверки. Всё вышло в PDF на 5 страниц.
Итог: верхний ярус текста надёжен по смыслу, нижний ярус начиная с 16-й колонки остаётся черновиком. Это написано в отчёте прямо. Для публикации такой текст нужно показать носителю языка.
Как проверять результат
Проверка состоит из двух частей, и пропускать нельзя ни одну.
Первая часть: сверка с эталоном. Если у текста есть опубликованная версия, издание, словарь или близкий по смыслу текст, я сопоставляю с ним распознанное. Совпадения подтверждают чтение. Расхождения отмечаю отдельно: это либо ошибка модели, либо отличие именно этого экземпляра от известного. Какой из двух случаев перед нами, решает специалист, мне это не под силу.
Вторая часть: носитель языка. Человек, который читает это письмо, смотрит на отчёт с оригиналом в руках. Ему не нужно начинать с нуля. Он получает транскрипцию, современную запись, перевод и список мест, куда глядеть в первую очередь. Время такого специалиста обычно самая дорогая часть работы, и список сомнительных мест помогает его экономить.
Если вам важно сохранить язык для следующих поколений, мои мысли об этом есть в статье про ИИ и бурятский язык.
Честные пределы точности
Я не называю проценты точности для редких письменностей, потому что у меня нет измерений на вашем материале, а чужие цифры с других текстов к нему не относятся. Любая цифра без пробного прогона на ваших фото будет догадкой.
Что можно сказать честно. Качество неоднородно даже внутри одного документа: в моём проекте верхний ярус читался надёжно, а нижний нет. Нейросеть выдаёт гладкий текст одинаково уверенно, и когда поняла, и когда угадывала, поэтому слепо доверять результату нельзя. Модель может подставить правдоподобное слово вместо неразборчивого.
Поэтому в отчёте я никогда не заполняю сомнительное место красивой фразой. Лучше пустое место с пометкой, чем связный перевод, в котором не видно догадок. Для текста, который напечатают, повесят на стену или процитируют, такая пометка важнее гладкости.
Что просить у заказчика
От качества исходников зависит больше, чем от выбора модели. Вот мой список:
- Фото сверху, камера параллельно странице, без перспективы и бликов. Лучше несколько кадров одной страницы при разном свете.
- Разрешение, при котором отдельный знак хорошо виден. Если буква на фото занимает несколько пикселей, никакая модель её не прочтёт.
- Линейка или цветовая шкала в кадре, чтобы был виден масштаб и цвет.
- Образцы: другие страницы того же почерка или документа, особенно с уже известным текстом.
- Опубликованные версии, словари, справочники, всё, с чем можно сверить результат.
- Контакт человека, который прочтёт оригинал и подтвердит итог. Без него я не обещаю публикуемый перевод.
- Сведения о происхождении: век, регион, жанр. Они сужают круг возможных слов.
Как я это делаю
Сначала прошу три-пять фото на пробу и ничего не обещаю заранее. Смотрю, читается ли письмо открытой моделью, и показываю результат вместе с неудачными местами. После этого заказчик решает, продолжать ли.
Если проба показывает, что распознавание возможно, я собираю цепочку: подготовка изображений, распознавание, сверка, транскрипция, перевод и отчёт со списком сомнительных мест. Работаю на открытых моделях, поэтому исходники можно не отправлять в чужие сервисы и держать у себя. Если у вас стопка документов, делаю ИИ-обработку пачкой с отчётом, где видно, на какой странице распознавание сомнительно. Для сканов и архивов на обычных языках у меня есть отдельная статья про PDF2MD и отчёт об ошибках OCR.
Финальную вычитку делает носитель языка, которого находит заказчик: музей, архив, библиотека или знакомый специалист. Я могу подготовить ему удобный формат для проверки.
Сколько это стоит
Распознавание документов с извлечением данных стоит от 100 000 ₽, срок от 2 недель. Для редкой письменности цену называю после пробного прогона на ваших фото, потому что объём ручной сверки заранее неизвестен. Если нужна автоматизация потока документов вокруг распознавания, она стоит от 60 000 ₽, срок от 2 недель. Разовые доработки и эксперименты идут по часам, от 3 000 ₽/час. Для зарубежных заказчиков цена в дирхамах считается по курсу на день оплаты.
Частые вопросы
Можно ли распознать любую старинную рукопись?
Гарантии нет. Для одних письменностей есть открытые модели, для других нет. Поэтому я начинаю с пробного прогона на трёх-пяти фото и только потом называю срок и цену.
Можно ли публиковать результат без проверки?
Нет. Машинный перевод старого текста остаётся черновиком, пока его не прочитал носитель языка. В моём проекте надёжным по смыслу признан только верхний ярус, нижний требовал сверки.
Нужно ли отправлять оригиналы в облачный сервис?
Необязательно. Открытые модели можно запускать на своём сервере или компьютере, и фото остаются у вас. Если заказчик разрешает облако, это отдельное решение.
Какие фото нужны для хорошего результата?
Ровные, резкие, при равномерном свете и в достаточном разрешении. Несколько кадров одной страницы лучше одного. Полный список выше.
Коротко о главном
Обычный OCR не читает вертикальную вязь, рукописи и редкие алфавиты, потому что рассчитан на другие допущения. Работает цепочка: хорошее фото, модель под конкретное письмо, транскрипция, перевод, сверка с эталоном и проверка носителем языка.
Точность для таких текстов всегда неполная, и самая ценная часть отчёта это честная граница между надёжным и черновым. Заказчик помогает больше всего качественными фото, образцами и человеком, который прочтёт оригинал.
Если у вас есть рукопись, надпись или архив на редком письме, напишите мне в Telegram с кодовым словом «РУКОПИСЬ», и я посмотрю на пробные фото.
Распознавание редких письменностей по фото с проверкой
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Пробный прогон на ваших фото до договора
- Транскрипция, современная запись и перевод
- Список сомнительных мест для сверки носителем языка
- Отчёт в PDF с границей надёжного и чернового
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


