Задача не заканчивается распознаванием
Поставщик прислал счёт PDF. Бизнесу нужны не просто буквы из файла, а проверенные номер, дата, поставщик, сумма, НДС и связь с заказом. Затем документ должен попасть в учётную систему без дубля и с понятным маршрутом исключений. Именно этот процесс нужно сравнивать, когда выбирают облачный API или локальный OCR.
В качестве публичного ценового ориентира возьмём Amazon Textract Analyze Expense. На странице тарифов AWS приведён пример для региона US West (Oregon): $0,01 за страницу в пределах первого миллиона страниц за месяц. Сервис специализирован на счетах и чеках. Это не оферта для российского бизнеса и не утверждение, что сервис доступен каждому российскому заказчику: регион, договор, оплата, передача данных и действующий тариф требуют отдельной проверки. Здесь цена нужна только как проверяемая точка сравнения.
Локальной альтернативой может стать конвейер с PaddleOCR: проект публикует документацию по PP-StructureV3 и примеры локального запуска; код репозитория распространяется по Apache 2.0. Однако OCR и разбор структуры документа не превращаются автоматически в готовую проводку счёта. Поля придётся нормализовать, сверять с заказом, поставщиком и правилами НДС, а затем передавать человеку спорные случаи. Для конкретных весов, зависимостей и коммерческого сценария нужно отдельно проверить применимые условия.
Модельный расчёт: только чтобы увидеть чувствительность
Допустим, компания обрабатывает 3000 одностраничных счетов в месяц. Облачная цена равна $0,01 за страницу. Для локального варианта условно заложим $240 фиксированных затрат в месяц на амортизацию внедрения, серверный ресурс, сопровождение и мониторинг плюс $0,002 переменных затрат на страницу. Это придуманные допущения для формулы, а не котировка оборудования или результат внедрения. Персонал по проверке пока считаем одинаковым и выносим за скобки.
- API: 3000 × $0,01 = $30 в месяц.
- Локальный контур: $240 + 3000 × $0,002 = $246 в месяц.
- Порог равен $240 / ($0,01 − $0,002) = 30 000 страниц в месяц.
При таких вводных покупать отдельную инфраструктуру ради экономии на 3000 страницах неразумно. Если сервер уже есть и фиксированная добавочная стоимость ниже, порог тоже снизится. Если потребуется выделенная машина, резервирование или постоянное сопровождение, он поднимется. Условия доступа к внешнему сервису и допустимость передачи документов вообще могут сделать ценовое сравнение вторичным.
Решающая переменная — время исправления ошибок
Предположим, локальный конвейер отправляет на ручную проверку на пять процентных пунктов больше документов, чем API, а проверка каждого такого документа занимает две минуты. При 3000 страницах это 150 дополнительных проверок, или пять часов работы за месяц. При 30 000 страницах — уже 50 часов. Умножьте это время на полную внутреннюю стоимость часа сотрудника: она легко изменит вывод формулы даже при дешёвом локальном вычислении. Обратная ситуация тоже возможна, если локальный шаблон лучше работает именно с вашими поставщиками; заранее это не известно.
Исследование методов извлечения данных из счетов предлагает смотреть не только на общую точность, но и на точность отдельных полей, нарушения согласованности и полное совпадение записи. Для бизнеса ошибка в сумме или реквизитах важнее красивой средней метрики OCR. Поэтому сравнение двух решений на случайной витринной пачке документов почти бесполезно: нужен один и тот же размеченный набор реальных счетов.
Считайте стоимость ручной проверки отдельно для номера, даты, суммы, поставщика и строк товара. Добавьте стоимость повторной обработки, инцидентов и ручного ввода, если файл оказался непригоден для распознавания. Не называйте процент автоматически обработанных документов «точностью»: документ может пройти без человека и всё же содержать неверное поле.
Как устроить пилот без тяжёлой закупки
Возьмите 100–200 обезличенных или разрешённых к обработке счетов из разных каналов и от разных поставщиков, включая сканы, плохие фотографии и многостраничные PDF. Для каждой страницы сохраните эталонные поля и отметьте, какие ошибки критичны. Не отправляйте реальные документы во внешний сервис, пока не проверены договор, режим обработки и права доступа. Если внешняя передача запрещена, сравнивайте только допустимые локальные варианты.
Проведите документы через два конвейера: доступный API и локальный прототип. В локальном варианте сначала извлеките текст и структуру, затем правилами или ограниченным ИИ-компонентом приведите поля к схеме. После этого — детерминированные проверки: арифметика суммы и налога, допустимая дата, существование поставщика, сопоставление с заказом и поиск дубля. Спорные записи уходят сотруднику, а не сразу в бухгалтерию.
Запишите для каждого варианта цену обработки страниц, время разметки и проверки, долю исключений, время исправления, стоимость хранения и эксплуатации, требования к оборудованию и часы интеграции с учётной системой. Если добавляете локальную языковую модель для неоднозначных полей, включите её вычисления, журналирование, обновления и контроль ошибочных ответов; не приписывайте ей экономию до измерения. Результат пилота — стоимость одного принятого без ошибки документа, а не только цена одного вызова модели.
Где локальный контур выигрывает и где нет
Локальный вариант может быть оправдан, когда документы нельзя передавать наружу, объём стабилен, уже есть подходящие вычисления и администратор, а набор форм ограничен. Но он приносит обязанности: обновлять модели и зависимости, контролировать доступ к исходникам, хранить журнал исправлений, восстанавливать очередь после сбоя и проверять новые шаблоны поставщиков. Само слово «локальный» не делает обработку безопасной.
API полезен, когда поток мал или неравномерен и нет команды сопровождения. Но цена за страницу не включает интеграцию, очереди, повторные вызовы, ручные исключения, юридическую оценку передачи данных и возможную зависимость от поставщика. Для российских компаний доступность конкретного иностранного сервиса — отдельный фильтр до экономического расчёта, а не сноска после него.
Следующий практический шаг — не выбрать победителя по прайсу, а собрать одну таблицу на ваших документах: объём страниц, стоимость вызова, фиксированная стоимость локального контура, доля критических ошибок, минуты проверки и требования к данным. Если при реальных цифрах локальный вариант близок к API, решающими становятся контроль данных и способность поддерживать систему; если разница велика, пилот покажет это до закупки сервера.
