Логотип библиотеки manuscript-ocr
Логотип библиотеки manuscript-ocr

Проект реализуется командой: Константин Кожин — руководитель проекта; Павел Шерстнев — ML-инженер; Антон Михалев — ML-инженер; Анна Пятаева — научный руководитель проекта; Владислава Жуковская — специалист по разметке данных; Алина Нуриманова — специалист по разметке данных. Работа ведётся при поддержке гранта (Фонд содействия инновациям, конкурс «Код-ИИ», VII очередь, декабрь 2024 – декабрь 2025).

Manuscript OCR — это open-source проект, опубликованный на GitHub и GitVerse.

Примечание: библиотека находится в активной разработке. На момент публикации представлена промежуточная версия Manuscript OCR, над которой мы продолжаем эксперименты и тестирование. Финальные результаты и обновлённые модели планируем выложить к декабрю 2025 года.

Старина и нейросети: зачем мы учим ИИ читать рукописи

Представьте: перед вами пожелтевший лист рукописи XIX века. Строчки выведены красивым витиеватым почерком — но понять, что там написано, почти невозможно. Непривычные буквы, дореволюционная орфография, странные сокращения. И всё это — на фоне пятен, потёртостей и разрывов бумаги.

Скан страницы отчета губернатора Енисейской губернии за 1858 год
Скан страницы отчета губернатора Енисейской губернии за 1858 год

Если попробовать распознать такой текст с помощью обычной OCR-системы (например, Tesseract или EasyOCR), результат будет... грустным. Вместо связного текста — каша из символов. Почему? Проблема в самом материале:

  • дореформенная кириллица содержит символы, которых больше нет в языке (ѣ, і, ѳ и др.);

  • тексты написаны от руки — и каждый почерк по-своему «уникален»;

  • сами страницы повреждены, выцветшие, кривые и с тенями от переплёта.

Современные OCR-инструменты на таких документах распознают в лучшем случае 30–40% символов. А бывает, и вовсе не могут ничего прочитать. Потому что они просто не обучены на таком материале.

Что мы решили сделать

Мы создали бесплатную и открытую OCR-библиотеку, специально обученную распознавать рукописные документы дореформенной России. Проект уже включает в себя:

  • поддержку дореволюционной орфографии, включая редкие символы и титла (надстрочные сокращения);

  • устойчивую работу с низким качеством сканов — со сгибами, пятнами, потёртостями и другими архивными артефактами;

  • возможность дообучения модели под конкретные почерки и фонды.

Мы называем это «цифровым ключом» — инструментом, который открывает доступ к историческим документам, до сих пор остававшимся неприступными для машин.

400 тысяч слов вручную — и всё ради науки

Идея была простой: чтобы нейросеть научилась читать старинные рукописи, ей нужны примеры. Много примеров. А вот с этим и была главная трудность.

Мы начали с архивных сканов из волонтёрского проекта FromThePage, где энтузиасты вручную расшифровывали документы XIX века. Это большая и ценная работа, и мы с благодарностью ссылаемся на неё как на источник. Однако для обучения нейросети таких данных оказалось недостаточно: нужны были точные координаты каждого слова на изображении — а такая разметка в проекте не велась.

Поэтому мы использовали именно сканы, а всю разметку — расшифровки и координаты — создали самостоятельно.

Чтобы ускорить этот процесс, мы разработали собственный инструмент — Anno OCR. Это локальный и бесплатный редактор разметки, который легко адаптировать под конкретные задачи. С ним можно быстро отрисовывать bounding box-ы, вводить текст, перемещаться по страницам и экспортировать всё в формат для обучения. 

Интерфейс программы Anno OCR: слева — исходный скан, справа — панель расшифровок
Интерфейс программы Anno OCR: слева — исходный скан, справа — панель расшифровок

Так мы разметили около 400 тысяч слов. Основа корпуса — Отчёты губернаторов Енисейской губернии за конец XIX века. Эти рукописи отражают жизнь региона: от золотых приисков до судопроизводства. И для модели они оказались настоящим вызовом. Что делает эти документы особенно сложными:

  • Формальный канцелярский стиль с длинными фразами и устаревшими оборотами;

  • Дореформенная орфография: символы вроде ѣ, і, ѳ, надстрочные титла, редкие знаки;

  • Неоднородный почерк: на одной странице может быть сразу несколько стилей письма;

  • Повреждения: пятна от чернил, выцветшие участки, складки, заломы;

  • Скан-артефакты: кривые строки, тени от переплёта, смазанные чернила, обрезанные края.

Даже с таким объёмом данных модель всё ещё с трудом распознавала редкие символы и нестандартные формы. Мы поняли: без синтетики не обойтись. 

Когда буквы рисует нейросеть: зачем мы придумали свои слова

Когда исторических сканов мало, а редкие символы вроде «ѳ» встречаются раз в сто лет — пора создавать свои. Мы подошли к этому как к генеративной задаче: нужно научить нейросеть рисовать фразы в дореволюционном стиле, будто их писал архивный клерк из 1860-х.

Мы применили два подхода: ScrabbleGAN и StackMix.

ScrabbleGAN: как будто написал человек

ScrabbleGAN собирает слово из отдельных глифов — картинок букв. Он варьирует шрифт, искажения, толщину, шум. Мы дообучили его на рукописях с дореформенной кириллицей, добавили исторические артефакты — и он начал выдавать удивительно убедительные строчки.

Плюс в том, что можно генерировать любые слова и подгонять частоту нужных символов. Именно так мы «накормили» модель сотнями примеров ѣ и нестандартных титл — вместо редких случайностей в оригинальных данных.

Что приятно удивило: некоторые сгенерированные слова начали выглядеть «уставшими» — будто их действительно писал человек.

StackMix: собрать слово из обломков

А это — совсем другой путь. StackMix берёт реальные слова, режет их на буквы, мешает, вставляет фрагменты страниц и случайные дефекты. Он не придумывает буквы, а как бы «лепит» новые слова из старых — идеально для симуляции архивного хаоса. Особенно выручал при тренировке устойчивости модели к потёртостям и теням.

Что нас особенно порадовало: строки, собранные StackMix, выглядели так, будто их вырезали из настоящих ветхих отчётов и склеили заново. Получился такой цифровой «документ из лоскутков» — и именно такой шумный хаос помог модели лучше понимать реальную архивную грязь.

Почему синтетика сработала

Такие данные помогли модели наконец «понять» редкие символы, улучшили устойчивость к артефактам и дали нам возможность сбалансировать корпус. Вместе с ручной разметкой это стало прочной основой для следующего этапа — обучения нейросетей.

Под капотом Manuscript OCR: как работает наша библиотека

Как научить ИИ читать дореформенные рукописи? Мы выстроили для этого целую цепочку из модулей — от поиска слов на странице до финального текста. Назовём это не просто архитектурой, а мозговым пайплайном библиотеки.

Далее — краткий обзор ключевых компонентов. Если вам интересно подробнее — мы описали техническую сторону проекта в научной статье.

Шаг 1: Найти текст на странице

Сначала нужно определить, где именно на изображении находятся слова. Это задача детекции.

Мы реализовали собственную версию алгоритма на основе архитектуры EAST — одной из самых быстрых и надёжных для сегментации текста. Модель была адаптирована под особенности архивных сканов: добавили учёт складок, теней, потёртостей, обучили на собственных разметках. В итоге детектор стабильно работает даже на сложных фрагментах с дореволюционным почерком.

Шаг 2: Распознать, что написано

Когда найдены bounding box-ы слов, на сцену выходит блок распознавания. Мы построили пайплайн на основе TPS-ResNet-BiLSTM-Attention — но реализовали его полностью вручную и под свои задачи. Здесь модель выравнивает слова, считывает их «слева направо», понимает, где заканчивается ѣ и начинается і, и выдаёт итоговый текст. Это — сердце системы.

Шаг 3: Сделать текст читаемым

Следующий этап (находится в разработке) — постобработка текста. Мы строим корректирующую языковую модель, натренированную на дореформенной кириллице. Она поможет исправлять ошибки и делать текст ближе к оригинальному написанию, с сохранением старой орфографии. То есть, если модель случайно распознала "и" вместо "і" — корректор подскажет, что это не тот случай.

Всё это объединено в модульный пайплайн, где каждый блок можно использовать отдельно. Хотите встроить только распознаватель в архивный сайт — можно. Хотите обучить свою модель — пожалуйста, весь код открыт. Библиотека легко подключается к другим системам.

Что пошло не так — и как мы с этим справились

Вот несколько подводных камней, с которыми мы столкнулись (и обошли):

  • Внутри одного документа — разная орфография. Авторы XIX века не особо любили стандарты. Это сильно мешало модели, но помог гибкий препроцессинг.

  • Архитектуры OCR не работают “как есть”. Пришлось переписывать ��сё вручную, чтобы учесть специфику дореформы.

  • Нехватка данных. Выход — в собственном корпусе и генерации рукописной синтетики (ScrabbleGAN и StackMix).

  • Сбор и разметка. 400 тысяч слов руками, в своем инструменте — Anno OCR (репозиторий в статье выше). Заняло сотни часов.

Финальный шаг — и новый этап: цифровой ключ в действии

Manuscript OCR — это открытая библиотека для распознавания рукописей с дореформенной кириллицей. Мы обучили её на собственных данных, адаптировали под архивные реалии и выложили с открытым кодом и документацией. Сейчас библиотека уже используется:

  • для распознавания архивных документов и создания цифровых коллекций;

  • в образовательных проектах по истории, лингвистике и цифровым гуманитарным наукам;

  • в научных исследованиях, связанных с историей дореволюционной России.

Проект начался как студенческая инициатива, а сегодня стал частью диссертационной работы и серьёзной исследовательской практики. Мы продолжаем развивать систему: расширяем поддержку новых источников, улучшаем архитектуры, исследуем возможности VLM и языковых моделей для корректировки и генерации дореформенных текстов.

Библиотека создана с одной целью — сделать исторические рукописи доступными для людей и машин. Теперь у исследователей, архивистов и преподавателей появился удобный цифровой инструмент, который помогает «расслышать» документы, молчавшие десятилетиями.

Manuscript OCR — это open-source проект, опубликованный на GitHub и GitVerse.

Примечание: библиотека находится в активной разработке. На момент публикации представлена промежуточная версия Manuscript OCR, над которой мы продолжаем эксперименты и тестирование. Финальные результаты и обновлённые модели планируем выложить к декабрю 2025 года.