Распознавание бухгалтерских документов. Почему нейросеть все еще не волшебная палочка
Когда мы говорим про цифровизацию документооборота с применением ИИ, ключевой вызов — не просто распознать текст, а понять его структуру, контекст и расположение на странице. Распознать, где итог, где налог, где номенклатура. И сделать это для тысяч счетов от сотен поставщиков с произвольной версткой. Почему это вызов? Потому что универсальной модели для распознавания документов не существует.
Если мы используем машинное зрение, то процесс обработки документов происходит быстрее. В противном случае, бухгалтер все данные переносит руками. Тратится человеческое время на цифровизацию бумаги.
Автоматизация с оговорками
Что вообще нужно от системы? Документ (счет, счет-фактура, накладная) приходит — из него надо достать ключевые параметры: от кого, на какую сумму, какие товары, сколько штук, какие налоги, какая дата оплаты. И все это распознать автоматически, без участия человека. В идеале — сразу разместить по полям, чтобы дальше отправить в ERP (1С, SAP, что угодно).
Счета и счет-фактуры бывают абсолютно разные. Таблицы, заголовки, подписи — все разнится. Где-то написано «Total», где-то «Итог», где-то просто сумма. Стандарта нет. Готовые решения работают до первого «не такого» документа. Дальше — либо руками, либо программист.
Облачные провайдеры – это удобно, но не всегда допустимо. Действительно облачные решения удобны (ABBYY FineReader, Amazon Textract, Google Cloud Vision) и обещают 98–99% точности при распознавании текста. Но при их использовании в ЕС вступают в силу требования GDPR: данные не должны покидать пределы страны. Облако — это публичная сфера, в которой всегда есть опасность утечки данных. Для компаний в России это также может быть стоп-фактором. Решения «из коробки» работают как черные ящики, и ключевая сложность — невозможность дообучить их под специфику конкретного бизнеса. В случае ошибки — либо принимаем ее, либо дорабатываем вручную. Кроме того, готовые решения часто работают по подписочной модели - за каждое распознавание нужно платить деньги. И здесь уже идет речь не только о технической реализации, но и об экономической целесообразности.
Одно из решений для распознавания документов - использовать шаблонные алгоритмы. Пытаться по шаблону определить расположение ключевых параметров. Например, по шаблону 1 здесь будет имя адресата, здесь будет имя отправителя, здесь будет тип документа. Не сработало — пробуем шаблон 2. Итог: модель работает, пока не появляется новый формат документа. Этот подход не подойдет в ситуации, когда счета абсолютно разные. Такая система требует постоянной ручной доработки. Хрупкая, не масштабируется, точность нестабильна.
Линейная модель опирается на статичную логику: например, если встречается слово «итог», то рядом, вероятно, будет сумма. Но стоит этому слову сместиться, изменить контекст (например, появится «итог по налогу», «итог общий») или встретиться в новом визуальном окружении (добавлена графика, значок рубля и пр.), как модель теряет способность корректно интерпретировать данные.
Чем более разнообразными становятся документы, тем больше правил и исключений нужно добавлять вручную. Это быстро приводит к экспоненциальному росту сложности системы, что делает ее трудно масштабируемой.
Такой подход недостаточно гибок, довольно сложен и при появлении новых примеров требует вмешательства программиста для доработки логики новых кейсов.
И еще один нюанс. Даже лучшие OCR-библиотеки (Tesseract, EasyOCR) не всегда обеспечивают требуемую точность, особенно на сканах с шумами. Одна неправильно распознанная "1" — и у вас неверный итог. Мы быстро поняли: нужна предварительная обработка изображения, фильтрация шумов, нормализация, и главное — сохранение пространственной информации. Потому что «где стоит число» важно не меньше, чем «какое оно».
Как дойти до рабочей схемы
Сначала мы пробовали просто анализировать текст. Брали кусок текста из документа и добавляли в нейросеть (spaCy). Она понимает, что такое адрес, что такое компания. Если есть «ООО» — дальше, скорее всего, название. Но вот когда дело доходит до цифр — все, сеть «не понимает», что к чему. Потому что нет контекста расположения на странице. А это важно. Сумма внизу справа — это обычно итог, в середине — просто цена. Понять без координат — невозможно.
Так мы нашли решение в использовании пространственно - текстовой модели. Эта нейросеть умеет учитывать и текст, и координаты на документе. В голом виде она не умеет решать конкретные задачи, ее необходимо обучать самим. Возможно, вам также придется создать собственный редактор разметки, если ни одно из готовых решений не будет подходить. Это даст вам контроль над моделью.
Мы взяли публичную модель, дообучили ее на собственном датасете (~1500 размеченных счетов), и получили точность 97%. Также ее можно дообучать под новые случаи, не переписывая код.
Что важно технически
Сопоставление с внутренними данными. Извлечь из счета-фактуры строку K1000 — это одно. Понять, что в 1С под этим кодом скрывается "карандаш красный" — совсем другое. Необходим этап постобработки. Редкие кейсы. Условия платежа, написанные в духе "оплатите до 14.07 — получите 2% скидки" нейросеть может пропустить, если раньше такого не видела. Требуется постоянное дообучение на новых примерах. Авторизация и Верификация — если сеть уверена, документ идет дальше. Если нет — помечается красным, человек проверяет. Даже при высокой точности распознавания всегда остается процент случаев, требующих ручной верификации.
Где ИИ реально помогает
Документы со стабильной структурой: счета, накладные, анкеты. Регулярные платежи — один и тот же шаблон каждый месяц. Выделение типовых сущностей: суммы, даты, компании, адреса. Автоматическая классификация и фильтрация документов по типам.
Что дает такая система
Экономия: отказ от готовой подписной модели. Контроль: все локально, без передачи данных в облако. Гибкость: дообучаемость под нужды бизнеса. Быстродействие: распознавание + верификация — несколько секунд.
Что действительно сработало
Скан лучше фото. Качество распознавания напрямую зависит от качества входного изображения. Сканы с белым фоном и четким текстом — идеальны. Фотографии с тенями, искажениями, предметами в кадре — практически не обрабатываются без глубокой донастройки. При работе с изображениями требуется предварительная дополнительная обработка. Языковая модель + пространственные данные — лучший подход. Только комбинированная модель способна справляться с табличными документами. Локальная установка — must have. Все процессы происходят внутри инфраструктуры клиента. Никакие данные не уходят в облако — особенно важно для финтеха и госсектора.
Выводы
ИИ для документооборота — это системная работа: разметка, обучение, отладка, итерации. В результате можно получить систему, которая работает лучше дорогих подписочных решений, дешевле в долгосрочной перспективе, и главное, полностью под вашим контролем. Система работает именно с вашими данными, лучше всего заточена под вас.