Считать «99% точности» на слайде умеют все. Посчитайте вместо этого другое: возьмите накладную от поставщика на сорок позиций и засеките секундомером, за сколько бухгалтер вводит ее в базу руками. Обычно выходит от двенадцати до двадцати пяти минут вместе с поиском номенклатуры. Умножьте на ваш месячный поток. Вот это и есть та цифра, ради которой затевается распознавание первичных документов, и она у каждого своя.
Дальше начинается интересное. Вытащить текст с картинки умеют давно, дешево и почти все. А поток документов при этом продолжает вводиться руками. Ниже — разбор, где именно рвется цепочка между сканом и проведенным документом в 1С, и что с каждым разрывом делать.
Первичка приходит по пяти каналам, и каждый ломается по-своему
Первое, что стоит сделать до любого разговора о моделях, — разложить свой входящий поток по каналам и посчитать доли. Технология лечения у них разная, и стоимость тоже.
| Канал | Что приходит | Где ломается |
|---|---|---|
| ЭДО | xml по формату ФНС | Распознавать нечего, данные уже структурированы. Остается сопоставление номенклатуры и контрагента |
| PDF от поставщика | Файл с текстовым слоем | Слой есть, но порядок символов в нем произвольный: таблицу приходится восстанавливать по координатам |
| Сканер или МФУ | Пачка страниц одним файлом | Где кончается один документ и начинается следующий, файл не сообщает |
| Фотография из мессенджера | Снимок со склада или из кабины | Перспектива, тень, блик, обрезанный край с суммами |
| Бумага от водителя | Третья копия под копирку | Бледная печать, штампы поверх цифр, рукописные правки на полях |
Про две нижние строки есть отдельный технический разбор — что вытягивается из плохих сканов и где физический предел, за которым не поможет ни одна модель: OCR в реальных условиях. Здесь важнее другое: часть проблем канала лечится не инженерией, а договоренностью. Просьба к кладовщикам класть документ на стол целиком, при свете, и снимать сверху вниз убирает больше брака, чем полгода дообучения модели. Это бесплатно, и это стоит сделать в первую неделю.
Пачка сканов одним файлом — задача, о которой обычно забывают в смете. Двадцать страниц в PDF могут быть одним документом на двадцать листов, а могут быть семью документами. Разделять приходится по признакам: появление новой шапки, блок подписей и печатей, смена реквизитов поставщика, разрыв нумерации страниц. Дешевый способ снять эту проблему целиком — разделительный лист со штрихкодом между документами при пакетном сканировании.
Шапка и позиции — это две разные задачи
Извлечение из первички распадается на две части, и они отличаются по сложности примерно на порядок.
Шапка. Контрагент, ИНН и КПП, номер, дата, договор, итоговые суммы, ставки НДС. Полей мало, они лежат в предсказуемых местах, проверяются справочниками. Это решенная часть задачи.
Табличная часть. Наименование, артикул, количество, единица, цена, скидка, ставка и сумма НДС, сумма по строке. Умножаем на сорок строк — и получаем девяносто процентов трудоемкости всего проекта. Вот неполный список того, что ломает разбор таблицы:
- таблица переезжает на вторую и третью страницу, шапка колонок не повторяется;
- наименование не влезло и перенеслось на вторую строку без разделителя;
- строки-разделители групп товаров, которые выглядят как позиции, но позициями не являются;
- две ставки НДС в одном документе и отдельные подытоги по каждой;
- единицы измерения и кратность: поставщик пишет упаковки, у вас в базе штуки;
- артикул с буквой O вместо нуля — и позиция не находится ни по одному ключу.
Классические движки распознавания текста тут выдают набор символов с координатами, а собирать из этого таблицу приходится отдельным слоем логики. Кто как справляется на русских документах — разбирали в сравнении Tesseract, PaddleOCR, Surya и EasyOCR. Но выбор движка — это далеко не то, на чем проект выигрывается или проваливается.
Проект живет или умирает на сопоставлении
В накладной написано «Кабель ВВГнг(А)-LS 3х2,5». В вашей номенклатуре эта же позиция называется «Кабель силовой ВВГ-нг(A)LS 3*2.5 ГОСТ». Один товар, две строки, ноль совпадений при сравнении по буквам. У каждого поставщика свой диалект: свои сокращения, свой порядок слов, своя манера ставить пробелы и знак умножения.
Рабочая схема выглядит как лестница ключей, где каждая следующая ступень слабее и дороже предыдущей.
- Штрихкод или артикул поставщика. Точное совпадение, никакой интеллектуальности не требуется. Если у вас в базе хранятся артикулы контрагентов — это самый дешевый и самый надежный ключ.
- История прошлых поставок. В типовых конфигурациях сопоставления, сделанные людьми при загрузке из ЭДО, копятся в регистре соответствий номенклатуры контрагентов. Это готовая обучающая выборка, за которую уже заплачено рабочими часами. Первое, что стоит выгрузить и посмотреть.
- Нормализация и нечеткое сравнение. Приведение единиц, разделителей, регистра, раскрытие сокращений, сравнение по частям наименования.
- Семантический поиск по справочнику. Векторное представление наименования плюс переранжирование кандидатов. Работает там, где формулировки расходятся сильно.
Главное правило на всех четырех ступенях: система не имеет права угадывать. Если уверенность ниже порога, позиция уходит человеку с тремя кандидатами на выбор. Один раз проведенное поступление с неверной номенклатурой обходится дороже, чем сто документов, отложенных на проверку: оно уже разошлось по остаткам, себестоимости и отчетам.
Проект по распознаванию первички проваливается не на OCR. Он проваливается в тот момент, когда бухгалтер понимает, что проверять подставленную номенклатуру дольше, чем ввести строку самому.
С контрагентом проще: ИНН — уникальный ключ, у него есть контрольная сумма, которая проверяется арифметически до всякого обращения к базе. Отдельная находка почти в каждом проекте — дубли контрагентов в справочнике. Один и тот же поставщик заведен трижды за десять лет, и документы исторически падают на все три карточки. Распознавание тут работает диагностикой: оно показывает беспорядок, который был и до него.
Документ умеет проверять себя сам
Самая недооцененная часть системы. Модель может быть уверена в неверно прочитанной цифре — с этим ничего не поделать. Зато первичный документ избыточен по построению, и эта избыточность ловит ошибки лучше любой оценки уверенности.
- Количество × цена = сумма по строке. Расхождение больше копейки означает, что одно из трех чисел прочитано неверно. Какое именно — покажет соседняя проверка.
- Сумма строк = итог документа. Разъехалось на величину одной строки — строка потеряна или задвоена при разборе таблицы.
- Сумма НДС по строке и по документу. Проверяется по ставке, с учетом того, что округление считается построчно и копеечные расхождения тут нормальны.
- «Всего наименований». В ТОРГ-12 это поле напечатано прямо в документе. Написано сорок три, а из таблицы извлеклось сорок два — документ уходит в разбор без обсуждения.
- Контрольная сумма ИНН и формат КПП: ошибка в реквизитах ловится до похода в базу.
- Дата в открытом периоде. Документ, датированный закрытым кварталом или будущим месяцем, требует внимания человека независимо от качества распознавания.
Эти шесть проверок стоят один день работы программиста и снимают значительную часть тихих ошибок — тех самых, которые всплывают на сверке через квартал. Если подрядчик рассказывает про модели и не рассказывает про валидацию, спросите его именно об этом.
Что автоматизируется полностью, а что уходит человеку
Реалистичная картина по типам документов. Правая колонка тут важнее левой: она показывает, какая работа у людей останется, и позволяет считать окупаемость честно.
| Тип документа | Идет в базу без человека | Остается человеку |
|---|---|---|
| ТОРГ-12, накладная | Шапка, контрагент, суммы, позиции по известным поставщикам | Новые позиции без истории сопоставления, расхождения по количеству |
| УПД | Реквизиты, суммы, ставки НДС, табличная часть | Сходимость НДС при нескольких ставках, спорные позиции |
| Счет на оплату | Практически весь документ | Выбор договора и статьи движения денежных средств |
| Акт выполненных работ | Шапка, суммы, период | Разнесение по объектам и статьям затрат |
| Чек, авансовый отчет | Продавец, дата, сумма, ставка | Назначение расхода, сотрудник, подотчет |
| Договор | Стороны, номер, дата, сумма, срок | Условия и все, что имеет юридические последствия |
| Паспорт, СНИЛС | Поля карточки, проверка контрольных сумм | Сверка с оригиналом по регламенту компании |
Отдельно про ЭДО, раз он стоит первым в таблице каналов. Если весь поток приходит структурированными данными — распознавание вам не нужно, тема закрыта. На практике по ЭДО идет часть контрагентов, а хвост из почты, бумаги и фотографий оказывается больше, чем ожидают в начале разговора. Посчитайте доли по своему реальному входящему потоку за прошлый месяц, а не по ощущениям. Кто закрывает какой кусок этого потока — штатный сервис платформы, оператор ЭДО, коробка вендора или своя модель — разобрано в сравнении классов решений.
Порог точности: цифра, которая что-то значит
«Точность 99%» — бессмысленная формулировка, пока не сказано, что делится на что. Посчитаем на пальцах. В накладной на сорок позиций около двух с половиной тысяч значащих символов. Точность 99% по символам дает двадцать пять ошибок в одном документе. Даже 99,9% — это две-три ошибки, то есть проверять все равно придется каждую строку, а значит экономия времени близка к нулю.
Метрика, по которой имеет смысл принимать работу, одна: доля документов, прошедших в базу без единой правки человеком. Это единственное число, которое напрямую переводится в сэкономленные часы.
| Формулировка в договоре | Что стоит за ней на документе в 40 строк |
|---|---|
| 99% по символам | Около 25 ошибок в документе. Проверять надо все |
| 98% по полям | Около трехсот полей в документе, значит шесть неверных. Проверять надо все |
| 85% документов без правок | 17 документов из 20 подтверждаются в один клик, 3 уходят в разбор |
Как зафиксировать это так, чтобы приемка не превратилась в спор. Четыре пункта, которые пишутся в договор до старта работ:
- Какие поля критичны. Ошибка в сумме и ошибка в поле «Грузополучатель» — события разного веса.
- На какой выборке меряем. Сто-триста документов, набранных из реального потока, включая плохие. Выборка формируется вашей стороной.
- Замер вслепую. Подрядчик не видит приемочную выборку до замера. Иначе меряется не система, а умение подобрать примеры.
- Что происходит при недоборе. Дообучение за счет исполнителя в оговоренный срок — нормальная практика, если объем работ описан заранее.
Заранее честная оговорка: на типовых печатных формах приличного качества результат предсказуем, на мятых фотографиях и третьих копиях под копирку падает у любой системы на рынке. Поэтому в выборку для замера обязательно кладут самые кривые экземпляры из своего потока.
Очередь спорных вместо тихой ошибки
Отказ лучше молчаливой ошибки. Документ, который система отложила, стоит пять минут работы оператора. Документ, проведенный с неверной позицией, стоит разбирательства на закрытии месяца и правок задним числом.
Работающая схема выглядит так: все, в чем уверенность ниже порога, попадает в очередь с подсветкой конкретного поля, а рядом с формой лежит исходный скан. Оператор смотрит на два объекта одновременно и не ищет бумагу по стопке. Каждая его правка уходит в дообучение — через месяц работы система знает ваших поставщиков заметно лучше, чем в первый день. Логика тут та же, что в интеллектуальной обработке документов вообще: человек остается в контуре, но занимается исключениями.
Порог отсечения — управляемая ручка, и настраивать ее лучше вместе с бухгалтерией. Подняли порог — в базу проходит меньше документов, зато почти без ошибок. Опустили — экономия часов растет, растет и риск. Решение тут бизнесовое, и принимать его должны те, кто потом разбирает последствия.
Как документ попадает в базу и почему не задваивается
Модель работает отдельным сервисом, конфигурация 1С при этом остается нетронутой: обмен идет через штатные интерфейсы платформы. Схема разобрана на странице ИИ в 1С, а грабли конкретных баз с историей — в разборе что ломается в конфигурации с 2011 года: неполный состав OData, переписанное проведение, урезанные права служебной учетной записи.
Два инженерных требования, которые обязаны быть в техническом задании.
Документ создается черновиком. Проведение остается за человеком до тех пор, пока вы сами не решите иначе на конкретном типе документов. Про то, где проходит граница между записью и проведением и что бывает, когда ее переносят рано, есть отдельный разбор: ИИ-агент с правом записи в 1С.
Повторная загрузка не создает дубль. Один и тот же скан прилетает дважды в трех сценариях из трех: бухгалтер переслал письмо, водитель привез бумагу после почты, оператор нажал загрузку второй раз. Защита строится в два слоя — хеш файла и бизнес-ключ из ИНН поставщика, номера, даты и суммы. Совпал ключ — система показывает существующий документ вместо создания нового.
Когда браться не стоит
Три ситуации, в которых честный ответ — «не надо».
- Меньше двухсот документов в месяц. Автоматика не окупится, оставьте как есть. Где именно проходит граница по объемам, посчитано в разборе цены на потоке в 3000 документов: до полутора-двух тысяч штук в месяц выгоднее подписка за документ.
- Весь поток приходит по ЭДО в структурированном виде. Распознавать нечего, а сопоставление номенклатуры решается отдельной задачей на порядок дешевле.
- Справочник номенклатуры в состоянии, когда его проще пересобрать заново. Дубли, позиции «Товар без названия 3», тысячи неиспользуемых элементов. Сопоставлять не с чем — сначала порядок в данных.
Чек-лист перед разговором с подрядчиком
Семь пунктов, которые займут у вас день и сэкономят недели пресейла. Ответы на них — это почти готовое техническое задание.
- Разложите поток прошлого месяца по каналам и посчитайте доли: ЭДО, почта, скан, фото, бумага.
- Соберите пачку из тридцати-пятидесяти реальных документов того типа, с которого начинаете, обязательно вместе с самыми плохими экземплярами.
- Замерьте секундомером ввод пяти документов руками. Средняя цифра важнее любых нормативов из интернета.
- Выгрузите справочник номенклатуры и посчитайте в нем дубли и позиции без артикулов.
- Спросите у администратора 1С, что опубликовано через OData и есть ли расширения конфигурации.
- Определите список критичных полей — тех, ошибка в которых недопустима.
- Решите вопрос контура: облако допустимо или все обрабатывается только на своих серверах. Для паспортов и персональных данных ответ обычно предопределен.
Что дальше
Порядок работ, вилки цен и сроки по этапам — на странице Распознавание первичных документов в 1С, а полный расчет окупаемости с таблицей по объемам — во второй части: сколько стоит распознавание документов в 1С. Прикинуть бюджет под свой объем можно на калькуляторе, а если у вас уже собрана пачка документов из пункта два чек-листа — присылайте: по ней видно, типовые у вас формы или каждый поставщик изобретает свою, и это определяет и цену, и достижимую долю документов без правок.