← Проекты

Разработка D2Tech · в продакшене

Обработка первичных документов

Скан, фото или PDF превращаются в поля учётной системы. У каждого значения есть уверенность и место на странице; сомнительное идёт человеку, а не молча в учёт. Архив договоров ищется по смыслу, а не по точному слову.

Задача

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

Поиск по архиву договоров — «где у нас условие о неустойке выше 5%» — делается ручным перебором файлов, потому что текст не структурирован и не проиндексирован.

Что сделали

Уверенность и координаты

Модель отдаёт не только значение, но и насколько она в нём уверена, и где на странице его взяла. Ниже порога — в очередь на ручную проверку. Автоматически в систему такое не пишется.

Сверка с учётом

Фоновая задача сравнивает суммы и контрагентов с тем, что уже есть в ERP или 1С, и подсвечивает расхождения. Сама не исправляет.

Поиск по смыслу

Документы лежат в векторном индексе. «Где у нас неустойка выше пяти процентов» находится, даже если в договоре написано «пеня».

Откуда взялась сумма

Каждое значение помнит файл и координаты. Решение модели можно перепроверить глазами, а не верить ей на слово.

Почему этому можно верить

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

Где это ломается

На плохих сканах базовый OCR ошибается. Для них подключается облачное распознавание, оно дороже.

Как устроено

Распознавание
Tesseract или PaddleOCR как базовый вариант; для сложных сканов — облачный OCR (Yandex Vision, Google Document AI).
Извлечение и поиск
LangChain для цепочек структурированного извлечения поверх LLM; Qdrant или pgvector для поиска по документам.
Бэкенд
Python, FastAPI, Celery и Redis для асинхронной очереди: OCR и вызовы модели небыстрые и не должны блокировать запрос. PostgreSQL для полей и статусов.
Хранилище и интерфейс
S3-совместимое хранилище оригиналов (MinIO), React-интерфейс с превью документа и подсветкой полей — сверка одним взглядом. Коннектор к 1С по REST или OData.

Похожая задача?

Опишите её — пришлём скоуп и смету за 24 часа: