Skip to content
Neuronavt
Go back

Проверка юридических сканов перед импортом в 1С

Кейс9/10

Коротко

Автор описывает ScanReader — конвейер, который извлекает сведения из сканов российских юридических документов с помощью VLM, а затем проверяет их детерминированными правилами. Его цель — не обещать безошибочность, а отсеивать сомнительные документы и направлять человеку только исключения до формирования реестров для 1С.

Контекст

Автор — разработчик ScanReader, открытого Python-проекта, созданного для внутреннего контура обработки конфиденциальных документов. Начальная задача возникла из-за расхождений и ошибок в уже использовавшемся распознавателе; решение должно было работать без передачи документов наружу и поддерживать конкретные российские юридические и бухгалтерские форматы. Проект сейчас используется в production и тестируется коллегами.

Главное

Как сделано

Пакетный процесс проходит шесть этапов: подготовка окружения, поиск файлов, классификация, извлечение данных, расчёт метрик и выпуск реестров с Excel. Классификатор сначала использует бесплатные эвристики по имени файла и текстовым якорям, а затем при необходимости обращается к VLM. Низкое разрешение апскейлится в 2 раза методом Lanczos; PDF ограничивается первыми 20 страницами. Извлечение организовано плагинами с промптом и Pydantic-схемой; постобработка исправляет типовые ошибки формата, а JSON модели безопасно разбирается с удалением лишних рассуждений. Поддерживается любая модель через OpenAI-совместимый API, в том числе корпоративный шлюз или локальные Ollama/vLLM; при разработке автор проверял проект с Ollama и Qwen2.5-VL.

Затем срабатывают четыре уровня контроля: контрольные суммы ИНН, СНИЛС, ОГРН/ОГРНИП, БИК и банковских счетов с учётом исключений; арифметика сумм, временная последовательность документов и юридические ограничения удержаний; сверка критичных полей с текстовым слоем, независимым OCR или транскрипцией той же модели (с пометкой, что последняя проверка не независима); и статус, который сообщает оператору, какие проверки прошли и что делать дальше. Выходы — JSON с аудитом (_Full), плоская запись для 1С (Flat), общий RegistryFull.json и Excel. CLI возвращает коды 0 для чистого результата, 3 для расхождения или невыполненного гейта, 4 для эвристического восстановления и 1 при сбое.

Результаты

Заявлена поддержка девяти типов документов, включая постановления ФССП, исполнительные документы, документы об удержаниях, УПД, договоры и акты. Эвристический первый этап классификации распознал 53,7% файлов с неинформативными именами; зафиксирован один misroute. На стенде из 23 эталонов измерялись ложные срабатывания кросс-модального гейта: 0% на чистом тексте, 21,5% при 1% ошибок, 38,5% при 2%, 73,5% при 5% и 89,1% при 10%. На каждом уровне было 460 проверок и 20 повторов. Автор подчёркивает, что шум вносили только в эталонный текст, то есть измерялся сценарий, когда OCR ошибается, а извлечение верно. В проекте указаны 667 автотестов и покрытие 73,5% при пороге 70%; 0.8.0 содержала 75 тестов. Система маркирует проблемы для ручной проверки, а автоимпорт предназначен только для чистых документов.

Ограничения

Измерения внутренние, а не сравнение с другими системами; выборка мала: 23 эталона, причём у шести из девяти типов был всего один документ. Результаты ложных срабатываний относятся к конкретному синтетическому сценарию и не доказывают точность на реальных потоках. При высоком уровне ошибок в тексте гейт часто отправляет корректные документы человеку. PDF длиннее 20 страниц обрезается: пример с 45 страницами потерял реквизиты с 31-й страницы, хотя ограничение отражается в отчёте. Низкое разрешение не гарантирует читаемость даже после апскейла. Статус zero_trust_verified означает только прохождение применимых проверок, а не абсолютную корректность; OCR/транскрипция той же VLM не является независимым подтверждением. Автор не обещает замену бухгалтера или работу на любом скане. Скорость обработки внутри периметра ниже привычной для подписных облачных сервисов; стоимости и количественной оценки производительности в статье нет.

Что взять себе

Читать оригинал, если…

Откройте оригинал, если нужны исходный код ScanReader, точные правила верификации, таблицы измерений, примеры интеграции с 1С или подробности регрессионных исправлений.