Четыре шага от скана до данных

1. Подготовка изображения

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

2. Распознавание текста (OCR)

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

3. Понимание структуры

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

4. Извлечение полей

Система достаёт то, что нужно бизнесу: стороны, номер и дату, срок, суммы, ставки, условия индексации. Здесь работает языковая модель.

Чем нейросети отличаются от старых систем

Классические системы распознавания работают по шаблонам: для каждой формы документа описывают, в какой области лежит каждое поле. Для типовых форм с постоянной вёрсткой это быстро и надёжно, но новая форма требует новой настройки.

Языковая модель читает документ почти как человек и находит «срок действия», где бы он ни стоял и как бы ни был сформулирован. Это особенно полезно для договоров, которые у каждого контрагента свои.

ШаблоныНейросеть
Постоянные формыОтличноХорошо
Договоры в свободной формеПлохоХорошо
Новая форма документаНужна настройкаОбычно работает сразу
Вопрос «что сказано про расторжение»Не умеетУмеет
Типичная ошибкаПустое полеПравдоподобное неверное значение

Последняя строка важнее всех. Пустое поле видно сразу. Правдоподобная ошибка незаметна, поэтому нейросетевому распознаванию нужна другая организация проверки.

Откуда берутся ошибки

  • Качество исходника. Фото под углом, бледная копия, обрезанный край.
  • Похожие значения. В договоре несколько дат и сумм, и система выбрала не ту.
  • Допсоглашения. Срок и ставка изменились, а в основном договоре осталось старое значение.
  • Таблицы. Строка съехала, и значение попало в соседнюю колонку.
  • Рукопись. Подписи и пометки от руки читаются значительно хуже печати.

Как ловить ошибки до учётной системы

Стопроцентной точности не будет ни у кого, поэтому цель другая: понятная проверка.

  1. Сотрудник подтверждает вместо ручного ввода. Система предлагает значения, человек сверяет их с подсвеченным местом в документе. Это быстрее ручного ввода и надёжнее автомата.
  2. Ссылка на источник у каждого значения. Если видно, откуда взята цифра, проверка занимает секунды.
  3. Проверка арифметикой и логикой. Сумма сходится с НДС, срок окончания позже начала, ИНН проходит контрольное число. Такие правила пишутся обычным кодом и не зависят от модели.
  4. Сверка документов между собой. Отчёт о расхождениях между договором, допсоглашением и актом находит то, что глазами пропускают.
  5. Контрольная выборка. На пачке документов, которую проверили вручную, считают точность по каждому полю. Так видно, какому полю можно доверять больше.

Как устроено у нас

Во Flex Документах архив загружается как есть, пачкой: сканы, PDF, фото. Документы раскладываются по договорам со статусами обработки. Нейросеть достаёт стороны, сроки, ставки и индексацию, а сотрудник проверяет и подтверждает. Загруженное допсоглашение находит свой договор и предлагает изменения в карточку. По архиву можно спрашивать обычными словами: ответ приходит со ссылкой на пункт и подсвеченной страницей скана. Контрагенты и договоры передаются в 1С.