Классическая схема фальсификации на бумажных экзаменах выглядит так: ученик начинает работу сам, а часть за него дописывает сосед, нанятый человек или преподаватель. Проверяющий оценивает содержание, но не анализирует почерк. Задача, которую решала команда разработчиков, — автоматически выявлять такие случаи в потоке сканов государственной аттестации, не имея заранее никакого образца почерка конкретного ученика.
Предыдущая версия системы работала на сиамской CNN (TensorFlow, Python 3.6) и знала только одну категорию объектов — рукописный текст. Всё остальное: формулы с символами ∫ и σ, нарисованные графики, схемы — уходило в «подозрительное». По предметам вроде физики или математики оператор получал отмеченным почти весь бланк, что делало систему практически бесполезной. Переход на Python 3.10 и замена Keras на PyTorch стали частью задачи модернизации.
| Параметр | Предыдущая версия | Новая версия |
|---|---|---|
| Язык / фреймворк | Python 3.6, TensorFlow + Keras | Python 3.10, PyTorch |
| Детекция рукописных областей | Контурный анализ Canny + boundingbox | YOLO + SAHI |
| Обработка нетекстовых объектов | Отсутствует (всё нетекстовое — подозрительное) | Отдельная YOLO-модель для формул, графиков, схем |
| Инфраструктура инференса | Монолит | Микросервис: RabbitMQ, S3, NVIDIA Triton |
| Точность на тестовой выборке | Не указана | 89% на 4000+ бланках |
Переработанная система построена как микросервис: запросы через RabbitMQ, хранение изображений в S3, инференс через NVIDIA Triton Inference Server. Пайплайн состоит из пяти этапов. Сначала — адаптивная бинаризация: сканы приходят с неравномерной подсветкой и пятнами, единый глобальный порог давал нестабильную маску. Затем — детекция рукописных областей через YOLO. Здесь возникает техническая проблема: бланки имеют разрешение 4000×5000 пикселей и выше, тогда как YOLO ожидает вход 640×640. Прямое масштабирование уничтожает мелкие рукописные слова — они сжимаются до нескольких пикселей. Решение — библиотека SAHI (Slicing Aided Hyper Inference): изображение нарезается на перекрывающиеся фрагменты, каждый прогоняется через детектор отдельно, результаты объединяются через NMS.
Система не требует эталонного образца почерка: референсом служат первые строки бланка.
Отдельная YOLO-модель, обученная на разметке заказчика, детектирует нетекстовые объекты — формулы, графики, схемы — и исключает их из дальнейшего анализа. Это устранило главную проблему предыдущей версии с массовыми ложными срабатываниями.
Скоринг почерка работает итеративно. Каждая рукописная область приводится к размеру 224×224 пикселя. Сиамская сеть сравнивает референсный фрагмент (по умолчанию — с первой страницы бланка) со всеми остальными, формируя вектор сходства от 0 до 1. Применяется гауссова модуляция по позиции: соседние строки получают буст сходства, поскольку с высокой вероятностью написаны одним человеком. Аномальные фрагменты ищет LocalOutlierFactor из sklearn. Цикл повторяется до трёх раз с новыми референсами. Итоговая вероятность фальсификации считается как перцентиль скоров фрагментов, отнесённых к «чужим», — один плохо распознанный участок не определяет финальную оценку.
Дополнительно документ проходит через тепловые карты: скользящее окно считает матрицу сходства для каждого участка, области делятся на три типа (чистый текст, текст с формулами, смешанные), для каждого типа — свои правила выбора референса.
На тестовой выборке из более чем 4000 бланков система корректно классифицировала 89% случаев. Цифра агрегированная: включает и чистые случаи без фальсификации, и подтверждённые. На сложных сканах, бланках с большим количеством формул и работах с сильной вариативностью почерка точность ниже. OCR для посимвольного сравнения показывал нестабильность на символах высотой 10–12 пикселей.
Практический результат: по предметам с преимущественно рукописным текстом — русский язык, история, обществознание — система снимает с операторов ручной просмотр типовых бланков и выдаёт только координаты подозрительных областей. По предметам с формулами ложных срабатываний на нетекстовых областях больше нет, но полной автоматизации не достигнуто. Деградация почерка к концу двухчасового экзамена и рукописные вставки внутри печатных формул по-прежнему требуют участия человека.



