# ИИ в документообороте: где помогает локальная модель и как проверить маршрут

Источник: https://modelium.tech/zhurnal/ii-v-dokumentooborote/

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

Сведения о возможностях компонентов сверены 2 октября 2026 года; Docling и Tesseract — по закреплённым Git-ревизиям. Для фразы «ии для документооборота» есть сигнал поисковой подсказки, но нет свежего измерения частотности в России. Описанная ниже схема — проект пилота, а не результат прогона Modelium.

## Что именно автоматизировать в документообороте?

Сначала разделите три действия: **получить и прочитать файл**, **предложить структурированные данные или адресата**, **принять и зарегистрировать решение**. Для первого можно использовать парсер PDF и OCR, для второго — правила и локальную языковую модель, для третьего нужен процесс с человеком и журналом изменений. Документация Docling подтверждает возможность локальной обработки PDF с порядком чтения и таблицами; она не обещает правильные реквизиты на любом скане [s1](#src-s1). Camunda описывает user task как остановку процесса до завершения человеком, но сам факт использования движка не создаёт в вашей организации полномочий подписывать или утверждать документ [s4](#src-s4).

Практичный старт — входящий счёт или акт с повторяемой схемой: входом служит PDF/скан, выходом — черновик полей и предложение маршрута, которое проверяет сотрудник. Не начинайте с обещания «ИИ сам ведёт весь документооборот». В этом материале обсуждается **маршрут одного входящего документа**, а не замена ECM/СЭД, электронная подпись или самостоятельное юридическое решение. Для отдельного разбора договора есть [специальный сценарий](/zhurnal/ii-dlya-proverki-dogovorov/); задачи поиска по массиву документов решаются другой архитектурой [s4](#src-s4) [s6](#src-s6).

## Как собрать локальный пилот без доступа к боевой учётной записи?

- **Опишите границу и результат.** Возьмите один тип документа и один тип действия: например, входящий акт → черновик номера, даты, контрагента и суммы → проверка бухгалтером → запись в тестовую очередь. Укажите, какие данные допустимо обрабатывать и кто отвечает за решение. Это предложение методики, не утверждение о готовой интеграции с вашей СЭД.

- **Сохраните оригинал и место каждого поля.** Если PDF уже содержит текст, проверьте его чтение прежде чем запускать распознавание изображения. Для сложной страницы рассмотрите [Docling](/zhurnal/docling/): проект документирует PDF-layout, порядок чтения, таблицы и экспорт структуры. Сопоставьте таблицу и реквизиты с оригинальной страницей: сам экспорт в Markdown не является доказательством правильного значения [s1](#src-s1). Для скана оценивайте качество изображения, перекос и сегментацию. Руководство Tesseract объясняет, почему эти факторы мешают OCR, особенно когда текст похож на числа и коды [s2](#src-s2).

- **Отделите источник от догадки модели.** Подайте извлечённые фрагменты локальной модели с заданной схемой полей и служебным значением `не найдено`; сохраняйте ссылку на страницу/фрагмент для проверки каждого поля. Ollama позволяет задать JSON Schema через `format`, но также демонстрирует отдельную валидацию ответа: валидный JSON подтверждает **формат**, а не корректность суммы или принадлежность контрагенту [s3](#src-s3). Не подставляйте правдоподобные значения, отсутствующие в документе.

- **Правило маршрута задайте отдельно от текста LLM.** Например, предложенный тип «акт» отправляется в тестовую очередь бухгалтерии, нераспознанный или двусмысленный тип — в ручную очередь. Запись в рабочую систему блокируется до явного подтверждения человека. Для оркестрации существуют user tasks Camunda или прерывание LangGraph с сохранённым состоянием; ни один из этих механизмов сам по себе не гарантирует авторизацию, разделение ролей или идемпотентность повторной записи [s4](#src-s4) [s5](#src-s5).

- **Добавьте контроль доступа и происхождения.** Доступ к исходному файлу, извлечённому тексту и журналу решений проверяется на стороне приложения до передачи в поиск или модель. Qdrant позволяет фильтровать выдачу по payload и `id`, но фильтр — лишь механизм выборки, а не самостоятельная модель прав; права источника, смена роли и удаление старой копии требуют отдельной проверки [s6](#src-s6). Для этой ветки смотрите [корпоративный поиск с разграничением доступа](/zhurnal/korporativnyy-poisk-prava-dostupa/).

Это схема компонентов, а не установленный Modelium стек. Выбирайте модель и железо лишь после оценки документов: для текстовых PDF может хватить разбора без LLM, для плохих сканов трудным звеном будет OCR, для разветвлённого согласования — правила процесса и права, а не размер модели [s1](#src-s1) [s2](#src-s2) [s4](#src-s4). Совместимость конкретной модели с Ollama, скорость на CPU/GPU и потребность в памяти в данном материале **не измерялись**; модель из примера документации не является рекомендацией под русскую первичку [s3](#src-s3).

## Что показывать сотруднику перед подтверждением?

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

Если маршрут длинный, явно разделите состояния `получено`, `разобрано`, `ожидает проверки`, `исправлено`, `отклонено`, `передано в тестовую систему`. Camunda user task действительно останавливает экземпляр процесса до человеческого завершения; LangGraph interrupt с checkpointer и постоянным `thread_id` допускает паузу и продолжение графа [s4](#src-s4) [s5](#src-s5). Однако документация LangGraph предупреждает: код перед точкой interrupt при возобновлении узла запускается заново. Поэтому внешняя запись должна иметь отдельную защиту от повтора и подтверждение, а не опираться на красивый ответ агента [s5](#src-s5).

## Как проверить, что маршрут работает?

Соберите небольшой **обезличенный и разрешённый** набор разных случаев: текстовый PDF, перекошенный скан, многостраничный акт, документ без номера, исправленная сумма, похожие на дату строки, неподдерживаемый тип и повторная отправка. Для каждого заранее запишите эталонные поля, исходные страницы, ожидаемую очередь и кто принимает решение. Повторите проверку отдельно после изменения OCR, парсера, промпта или модели. Это не опубликованный бенчмарк, а протокол, который команда должна выполнить сама.

- **Чтение:** число потерянных страниц и строк таблицы, ошибки суммы и номера; сравнивайте и с исходным файлом, и с текстом после OCR. Из документации следует, что перекос и сегментация способны ухудшить распознавание [s1](#src-s1) [s2](#src-s2).

- **Поля:** число верных, неверных и пропущенных значений по каждому типу; отдельно считайте поля, для которых невозможно показать фрагмент-основание. JSON Schema проверяйте машинно, но значения — по исходнику [s3](#src-s3).

- **Маршрут:** число документов, ушедших не тому сотруднику, случаев ручного переназначения, отказов и повторных записей. Проверьте, что до человеческой задачи не произошло записи в боевую систему и что отказ не означает согласие [s4](#src-s4) [s5](#src-s5).

- **Доступ:** запустите один и тот же запрос под двумя тестовыми ролями и после смены разрешений. Проверяйте также исходный файл, историю решений и результаты поиска: payload-фильтр без прикладного контроля прав не является подтверждением изоляции [s6](#src-s6).

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

## Когда локальный ИИ здесь не нужен?

Если исходный документ уже содержит нужные значения в фиксированных полях, сначала проверьте обычный парсер и детерминированные правила. Если меняется почти только адресат, нужен маршрут согласования, а не генерация текста [s1](#src-s1) [s4](#src-s4). Если источник — плохой скан, улучшите вход и OCR до добавления LLM: документация Tesseract показывает влияние качества изображения и сегментации [s2](#src-s2). Если ключевой риск — доступ к закрытым вложениям, не запускайте поиск и модель прежде настройки прав: Qdrant описывает фильтрацию данных, но ответственность за её правильное применение лежит на вашем приложении [s6](#src-s6).

Основной следующий шаг — [сценарий распознавания документов для 1С](/zadachi/raspoznavanie-dokumentov-1s/): выберите один вид первички, подготовьте эталон, проверьте поля и человека на границе учётной системы. Если ваша задача — не первичка, а выбор процесса для компании в целом, сначала прочитайте [план пилота внедрения](/zhurnal/vnedrenie-ii-v-biznes/). Эти ссылки ведут на разные сценарии, не на обещанный несуществующий сервис.

Источники и дата получения указаны в карточке материала; для Git-документации Docling/Tesseract закреплены ревизии. Официальные руководства подтверждают функции инструментов, а не результаты интеграции Modelium в чужую СЭД [s1](#src-s1) [s2](#src-s2) [s3](#src-s3) [s4](#src-s4) [s5](#src-s5) [s6](#src-s6).

## Источники

1. [Docling — README, закреплённая ревизия](https://github.com/docling-project/docling/blob/a1c5ff2a8c5ab2bf87d7c1eb896b5bc351f51220/README.md) — получено 2026-10-02
2. [Tesseract — Improving the quality of the output](https://github.com/tesseract-ocr/tessdoc/blob/bae104ccef3ea4529cd14006b5a2efc8da4a305f/ImproveQuality.md) — получено 2026-10-02
3. [Ollama — Structured Outputs](https://docs.ollama.com/capabilities/structured-outputs) — получено 2026-10-02
4. [Camunda 8 — User tasks](https://docs.camunda.io/docs/components/modeler/bpmn/user-tasks/) — получено 2026-10-02
5. [LangGraph — Interrupts](https://docs.langchain.com/oss/python/langgraph/interrupts) — получено 2026-10-02
6. [Qdrant — Filtering](https://qdrant.tech/documentation/search/filtering/) — получено 2026-10-02
