Mindee

Mindee помогает превратить счета, чеки, паспорта, банковские выписки, резюме и другие PDF или изображения в структурированные данные: пользователь задаёт поля в схеме, проверяет распознавание в Live Test, получает значения с координатами и уверенностью, а затем передаёт результат в свою систему через API, SDK, webhook или сценарий без кода.

Работа начинается с выбора преднастроенной модели или создания собственной. В модели описываются нужные реквизиты, списки и таблицы, после чего тестовый документ открывается рядом с извлечёнными значениями. Такой экран позволяет сразу увидеть, где найден номер счёта, дата, итоговая сумма, строки товаров или сведения владельца документа, и сравнить их с оригиналом до подключения рабочего потока.

Для пакетной обработки Mindee умеет разделять многостраничный файл на отдельные документы, классифицировать их, выделять несколько документов на одном изображении и направлять каждый фрагмент в подходящую модель. На выходе формируется JSON, который удобно сохранять в базе, отправлять в бухгалтерию, CRM, ERP, систему проверки личности или собственное приложение.

Открыть Mindee

Оценка 9.7 Рекомендуем
  • Редактирование PDF
  • Русский интерфейс
  • Просто новичкам
Скачать бесплатно на Windows
Лучшая альтернатива
Mindee
Оценка 8.5
  • Нет редактирования PDF
  • Лимит 200 страниц
  • Оплата по страницам
Открыть Mindee онлайн
Сервис откроется в новой странице

Какие задачи решает Mindee

Главная задача Mindee — не показать документ на экране, а извлечь из него данные в предсказуемой структуре. Это принципиально для процессов, где информация из входящих файлов должна без ручного перепечатывания попасть в учётную систему. В счёте можно получить поставщика, номер, даты, налоги, итог, валюту и строки позиций; в чеке — продавца, время покупки, категории расходов и состав покупки; в паспорте — персональные данные, номер, срок действия и машиносчитываемую зону. Набор полей определяется выбранной моделью и её схемой, поэтому результат можно согласовать с полями целевой базы ещё до написания интеграции.

Извлечение строится вокруг модели документа. Модель содержит схему данных, инструкции к полям, дополнительные функции и параметры обработки. Один проект может использовать отдельную модель для счетов, отдельную для чеков, классификатор для сортировки входящей корреспонденции и Split-модель для разделения общего PDF. Такой подход позволяет не пытаться распознавать все документы одной универсальной схемой, а построить цепочку с понятной ответственностью каждого этапа.

Входящие файлы могут поступать из формы загрузки, электронной почты, мобильного сканирования, файлового хранилища или корпоративной системы. Mindee принимает документ, ставит асинхронную задачу, выполняет OCR и анализ структуры, а затем возвращает статус и результат. Разработчик может опрашивать состояние задачи либо указать webhook, чтобы сервис сам отправил уведомление после завершения. В обоих случаях бизнес-логика получает не картинку, а поля, списки, вложенные объекты, координаты и служебные метаданные.

  • автоматический ввод реквизитов счетов и актов в бухгалтерский контур;
  • разбор чеков для авансовых отчётов, программ лояльности и контроля расходов;
  • извлечение данных удостоверений личности при регистрации клиента;
  • сортировка смешанного пакета по типам документов перед дальнейшей обработкой;
  • разделение многостраничного скана на отдельные логические документы;
  • выделение нескольких чеков или карточек, снятых одним кадром;
  • получение обычного текста и координат строк для поиска, индексации и RAG-пайплайна;
  • передача результата в ERP, CRM, таблицу, базу данных или внутренний API.

Интерфейс и логика рабочего пространства

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

Список моделей Mindee и карточка создания новой модели

Внутри модели навигация разделена по этапам работы. Раздел Live Test предназначен для проверки реального файла; Data Schema — для описания полей; Continuous Learning (RAG) — для улучшения извлечения на похожих документах; Webhooks — для адресов обратного вызова; API docs — для параметров вызова; Settings — для общих настроек модели. Такое разделение полезно при командной работе: аналитик может согласовать схему и тестовые примеры, разработчик — подключить API, а специалист по безопасности — проверить регион обработки и срок хранения.

Интерфейс использует тёмную тему, крупные панели и явные состояния. При обработке файла Live Test показывает индикатор выполнения, а после завершения размещает документ слева и поля справа. Для таблиц создаются строки и столбцы, для простых полей — отдельные значения, для JSON — раскрываемый блок. Если документ был распознан более старой конфигурацией модели, появляется предупреждение с командой повторного запуска, чтобы сравнение выполнялось по действующим правилам.

Экран обработки документа в Live Test Mindee

Создание модели документа

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

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

Описание поля отвечает на вопрос, что именно считать правильным значением. Для номера счёта полезно уточнить, что это идентификатор документа, а не номер заказа или договора. Для общей суммы — указать, требуется ли сумма к оплате после налогов и скидок. Для строки позиции — описать, какие колонки должны входить в объект. Короткая, однозначная инструкция обычно эффективнее длинного текста с несколькими противоречивыми условиями.

Перед сохранением схемы стоит проверить её на нескольких документах с разной вёрсткой. Один идеальный PDF не показывает, как модель поведёт себя с фотографией, многостраничным файлом, иностранным языком, отсутствующим полем или таблицей на двух страницах. Практический набор для первоначальной проверки включает чистый цифровой PDF, скан среднего качества, мобильный снимок с перспективой, документ другого поставщика и пример, где одно из полей отсутствует.

Типы полей и структура результата

Схема поддерживает обычные поля, списки и вложенные объекты. Обычное поле подходит для единичного значения: номера, даты, имени, суммы, страны или текста. Список нужен, когда элементов несколько, например для строк товаров, участников договора или банковских транзакций. Вложенный объект объединяет связанные значения и сохраняет их как единый логический блок, что удобно для адреса с городом, индексом и страной либо для локали с языком, страной и валютой.

Выбор специализированного типа снижает двусмысленность. Дата должна возвращаться как дата, число — как число, а не как строка с разделителями и валютным знаком. Для штрихкодов доступны отдельные типы: одномерный код и двумерные варианты, включая QR, Data Matrix, 2D-DOC и PDF417. Это позволяет получить декодированное значение рядом с остальными реквизитами и не запускать отдельный распознаватель кодов после OCR.

Для таблиц схема описывает объект строки и его колонки. В счёте это могут быть описание, количество, цена за единицу, ставка налога и сумма. В банковской выписке — дата, назначение, дебет, кредит и остаток. Модель должна понимать, что повторяющийся набор образует список, иначе строки могут объединиться в длинный текст. После первой проверки важно сравнить не только значения, но и количество строк, сохранение пустых ячеек и корректность числовых знаков.

AI Assistant Mindee предлагает уточнённые описания полей

AI Assistant для уточнения схемы

AI Assistant помогает переработать описание и инструкции к полям. В панели показывается исходный вариант и предложенная формулировка, а пользователь отмечает изменения, которые нужно применить. Это особенно полезно, когда поле названо слишком общо, например ID или Amount, и модели неясно, какой из нескольких идентификаторов или итогов требуется. Помощник может конкретизировать назначение, добавить контекст и привести инструкцию к форме, подходящей для извлечения.

Предложения помощника нельзя принимать без проверки на реальных документах. Он улучшает формулировку, но не знает всех правил организации: например, внутренний код может отличаться от номера, напечатанного крупнее, а сумма для учёта может не совпадать с итогом к оплате. После применения изменений следует повторить Live Test на сохранённом наборе примеров и убедиться, что улучшение одного поля не вызвало неожиданное смещение другого.

Проверка документа в Live Test

Live Test предназначен для интерактивной проверки модели без написания кода. Пользователь загружает файл, ждёт завершения и видит сопоставление оригинала с извлечёнными полями. Цветные области на документе показывают, откуда получено значение, а правая панель позволяет быстро сверить результат. Для сложного документа это эффективнее просмотра одного JSON: ошибка сразу связывается с конкретным местом на странице.

На экране полученного результата простые поля отображаются как отдельные строки, а таблица — как набор редактируемо выглядящих ячеек. В показанном примере чек расположен слева, а справа выведены налог, рукописные чаевые и список покупок. Подсветка на изображении помогает отличить распознанную сумму от похожего числа рядом. При раскрытии Raw JSON Response видны техническое значение, уверенность и дополнительные данные ответа.

Завершённый Live Test с чеком и извлечёнными полями

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

Raw JSON полезен для разработчика, потому что именно эту структуру получит приложение. В нём следует проверить имена ключей, типы, вложенность, идентификаторы задания и модели, статус обработки, номер страницы, координаты и уверенность. Если код ожидает число, а в ответе приходит строка, проблема должна быть исправлена на этапе схемы или явного преобразования, а не оставлена до рабочего запуска.

Live Test Mindee с раскрытым JSON и значением уверенности

Уверенность и визуальная проверка

Оценка уверенности помогает построить очередь ручной проверки, но не заменяет бизнес-правила. Высокая уверенность означает, что модель считает значение надёжным, однако критический реквизит всё равно стоит проверять по допустимому формату и контексту. Номер налогоплательщика можно валидировать по длине и контрольной сумме, дату — по разумному диапазону, валюту — по списку допустимых кодов, а итог — по арифметике строк и налогов.

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

Поддерживаемые файлы и подготовка входных документов

Mindee обрабатывает PDF и распространённые растровые форматы, включая JPEG, PNG, WebP, TIFF и HEIC. Многостраничные PDF и TIFF проходят постранично. Ограничение одного файла составляет 100 МБ, а многостраничный документ может содержать до 200 страниц. Эти границы нужно учитывать до отправки: слишком большой файл следует разделить, а изображения — разумно сжать без потери читаемости мелкого текста.

Цифровой PDF обычно даёт более стабильный результат, чем фотография, поскольку сохраняет ровную геометрию и чёткие символы. Тем не менее сервис рассчитан и на сканы или снимки. Для изображения достаточно разрешения, при котором текст читается без увеличения до пикселей; рекомендации документации указывают, что для большинства снимков хватает примерно 3–5 мегапикселей. Гигантский кадр с размытым текстом не становится точнее только из-за большого числа пикселей и лишь увеличивает время передачи.

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

Неанимированный PNG подходит для схем, форм и скриншотов; JPEG — для фотографий; TIFF — для сканов из долговременных коллекций и многостраничных пакетов; HEIC — для снимков с устройств Apple; WebP — для изображений, уже подготовленных веб-приложением. Расширение и MIME-тип должны соответствовать содержимому. Смена расширения неподдерживаемого файла в .pdf не делает его PDF и обычно приводит к ошибке формата.

Сжатие, страницы и предварительная обработка

Официальные SDK содержат функции работы с входным файлом: определение числа страниц, выбор страниц и сжатие изображений. Это позволяет не отправлять весь двухсотстраничный пакет, когда нужны только несколько страниц, а также ограничить размеры фотографии. Типовой безопасный вариант для снимка — сохранить достаточное качество JPEG и ограничить ширину или высоту примерно уровнем, на котором мелкий шрифт остаётся различимым. Конкретное значение проверяют на документах организации, потому что размер шрифта и качество камеры различаются.

При выборе страниц важно сохранить исходную нумерацию в собственных метаданных. Если из большого файла отправлены страницы 5–7, номер страницы в ответе относится к переданному набору, если интеграция заранее не сохраняет соответствие. Это имеет значение при формировании ссылки на оригинал и при ручной проверке. Для цепочки Split также нужно хранить границы каждого выделенного документа, чтобы оператор мог вернуться к нужному диапазону общего PDF.

Если файл содержит текстовый слой, не следует автоматически считать его достоверным. Некоторые сканеры создают невидимый OCR-слой с ошибками. SDK позволяет управлять использованием исходного текста, а практическая проверка должна сравнить результат на документах с корректным и испорченным слоем. В спорных случаях полезно принудительно обрабатывать изображение страницы, но это увеличивает вычислительную работу и может изменить результат.

Модели извлечения данных

Extraction Model преобразует документ в поля, определённые схемой. Для распространённых типов доступны готовые модели, а для нестандартных — настраиваемая схема. Готовая модель удобна, когда набор реквизитов близок к стандартному: счёт, чек, паспорт, водительское удостоверение, резюме, банковская выписка или другой тип из каталога. Собственная модель нужна, когда документ имеет отраслевые поля, внутренние коды, особые таблицы или нетипичную структуру.

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

Для финансовых документов полезно разделять значение и представление. Сумма должна попадать в числовое поле, валюта — в код валюты, дата — в дату, а строка позиции — в список объектов. Тогда целевая система может выполнять арифметику и проверки без разбора строк вроде 1 234,56 EUR. Локаль, включающая язык, страну и валюту, помогает интерпретировать разделители и контекст, но критические расчёты всё равно следует валидировать.

Счета и финансовые документы

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

Таблицы счетов требуют отдельного теста. Описание товара может переноситься на следующую строку, количество и цена могут быть объединены, а итог строки — отсутствовать. Следует проверить длинные описания, несколько ставок налога, отрицательные позиции, кредит-ноты и таблицу, продолжающуюся на другой странице. Если целевая система рассчитывает итог самостоятельно, расхождение между суммой строк и общим итогом должно попадать в исключение, а не автоматически исправляться без следа.

Чеки и расходы

Чек часто снят телефоном, имеет узкую ленту, термопечать и короткие обозначения. Модель может извлекать продавца, адрес, дату и время, категории, налоги, итог, способы оплаты и позиции. Для программ лояльности важны строки покупок и штрихкоды, для авансового отчёта — продавец, дата, сумма и валюта. Рукописные чаевые или исправления нужно тестировать отдельно: они могут быть распознаны, но качество зависит от почерка и контраста.

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

Документы личности, резюме и выписки

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

Модель резюме может вернуть контакты, опыт, образование и навыки в структуре, пригодной для поиска и предварительного заполнения карточки кандидата. Однако порядок и полнота разделов сильно различаются, а смысл навыка зависит от контекста. Автоматическое извлечение следует использовать как помощь рекрутеру, а не как единственный фильтр. Скрытые колонки, графика, многоязычные резюме и творческая вёрстка требуют тестирования на реальном потоке.

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

Служебные модели: Split, Crop, Classification и OCR

Utility Models не извлекают бизнес-поля сами по себе, а подготавливают документ или определяют маршрут. Они особенно важны при работе с почтовыми вложениями, сканами МФУ и пакетами, где пользователь загружает несколько документов одним файлом. Вместо сложной логики по номерам страниц можно сначала определить границы и типы, а затем передать каждый результат в подходящую Extraction Model.

Split для многостраничных пакетов

Split находит отдельные документы внутри многостраничного файла и присваивает им классы. Например, один PDF может содержать счёт, подтверждающие чеки и товарную накладную. Модель определяет диапазон страниц каждого документа. Для класса можно выбрать связанную модель извлечения, чтобы после разделения автоматически запускался следующий этап. В интерфейсе класс создаётся по имени, при необходимости получает инструкцию и связанную Extraction Model.

Настройка классов Split и привязка модели извлечения

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

Результат Split нужно хранить вместе с границами страниц и уверенностью. Если граница сомнительна, полезнее отправить пакет оператору, чем потерять страницу договора или присоединить её к соседнему счёту. После разделения не следует удалять оригинал до завершения всех этапов и аудита: общий файл остаётся исходным объектом, а выделенные документы — производными объектами.

Crop для нескольких объектов на одной странице

Crop решает другую задачу: находит несколько документов или областей на одном изображении. Типичный пример — фотография стола с несколькими чеками, лист с несколькими карточками или скан, где два небольших бланка размещены рядом. Модель возвращает области, которые затем можно обрезать и отправить на извлечение. Качество зависит от того, насколько объекты отделены друг от друга и полностью попали в кадр.

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

Classification для маршрутизации

Classification присваивает всему документу один из заданных классов. Она подходит, когда входящие файлы уже разделены, но тип неизвестен: счёт, чек, договор, удостоверение, заявление или прочее. В отличие от Split классификатор не ищет границы внутри многостраничного пакета. Его результат используют для выбора модели, очереди, срока хранения или ответственного подразделения.

Инструкции к классам должны описывать содержательные признаки. Название Invoice обычно понятно, но близкие формы — коммерческое предложение, заказ и счёт-проформа — требуют уточнений. Набор проверки должен включать похожие документы и класс OTHER. Если уверенность низкая, маршрут лучше остановить, а не отправлять документ в неправильную схему, где случайные числа будут выглядеть правдоподобными полями.

Raw OCR для текста и координат

Raw OCR возвращает распознанный текст без отраслевой схемы. Такой результат нужен для полнотекстового поиска, индексации, подсветки совпадений, подготовки фрагментов для языковой модели и собственных алгоритмов анализа. Вместе с текстом можно использовать геометрию, чтобы восстановить положение строки, абзаца или блока. Для задачи найти все упоминания договора Raw OCR уместнее, чем создание десятков полей.

Обычный OCR не гарантирует правильную структуру таблицы и не понимает бизнес-смысл реквизита. Если требуется итог счёта, лучше использовать Extraction Model, а не искать последнее число регулярным выражением. Raw OCR удобно сочетать с классификацией: сначала получить тип документа, затем выбрать специализированный разбор, а полный текст сохранить для поиска и расследования ошибок.

Continuous Learning (RAG) и улучшение точности

Continuous Learning (RAG) использует примеры и контекст, чтобы улучшать извлечение для документов, похожих на уже обработанные. Функция включается для модели и проверяется в Live Test отдельным переключателем. Её задача — помочь в случаях, где общая инструкция недостаточно точно отражает особенности конкретного набора документов. Это не отменяет хорошую схему: нечёткое поле и противоречивые инструкции продолжат вызывать ошибки.

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

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

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

JSON, координаты и дальнейшая обработка

Ответ API содержит сведения о задании, модели, имени файла, статусе и результате. Поля возвращаются в структуре, соответствующей Data Schema. Дополнительные данные могут включать уверенность, номер страницы и полигоны или ограничивающие области. Разработчик должен десериализовать ответ в устойчивую внутреннюю модель и не привязывать бизнес-логику к случайному порядку ключей.

Координаты позволяют построить экран проверки: оператор видит значение и выделенную область оригинала. Это ускоряет исправление, потому что не нужно искать реквизит по всей странице. При масштабировании PDF координаты преобразуются в размеры отображаемой страницы; поворот и обрезка должны учитываться тем же способом, которым файл был подготовлен перед отправкой. Лучше хранить исходный файл и параметры преобразования.

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

Действия модели Mindee и загрузка схемы данных JSON

Схему можно скачать как JSON для контроля изменений и согласования с кодом. В командной разработке файл схемы удобно хранить в репозитории рядом с маппингом и тестами. Изменение ключа, типа или вложенности должно проходить ревью как изменение контракта. Копирование модели помогает создать тестовый вариант, не затрагивая рабочий поток, но результаты двух моделей нельзя смешивать без явного идентификатора.

Подключение API

Mindee предоставляет REST API, возвращающий JSON. Обработка выполняется асинхронно: сначала файл отправляется на маршрут постановки задачи, затем клиент получает идентификатор и проверяет готовность либо ждёт webhook. Такой режим устойчивее для больших PDF и сложных моделей, чем длительное синхронное соединение. Приложение должно уметь хранить состояние задания и повторно запросить результат после временного сбоя.

В документации модели доступен пример запроса, где передаются идентификатор модели и файл, а в заголовке — ключ авторизации. Ответ постановки содержит job id, статус и адрес опроса. Нельзя копировать тестовый пример в рабочий код без обработки ошибок, тайм-аутов, повторов и безопасного хранения ключа. Также не следует отправлять запрос напрямую из браузера конечного пользователя: ключ окажется доступен в клиентском коде.

Пример запроса Mindee API и ответа о постановке задания

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

API-ключи и безопасность

API-ключ создаётся в настройках организации и показывается для копирования. Интерфейс предупреждает, что секрет нужно сохранить безопасно: после закрытия его нельзя считать как обычный текст. Ключ не размещают в JavaScript, мобильном приложении, публичном репозитории, журнале запросов или сообщении поддержки. Его хранят в менеджере секретов и передают серверному компоненту через защищённую конфигурацию.

Для разработки, теста и рабочего контура полезно использовать разные ключи. Тогда тестовый скрипт не получает доступ к рабочим документам, а компрометация одного секрета не требует остановки всех сред. Имя ключа должно отражать назначение, а процедура ротации — позволять некоторое время принимать старый и новый секрет. После ротации старый ключ отзывают и проверяют журналы на неожиданные обращения.

Polling и webhook

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

Webhook удобен для событийной архитектуры. В настройках модели создаётся endpoint, а интерфейс показывает идентификатор и signing secret. Получатель должен проверить подпись, быстро подтвердить приём и перенести тяжёлую работу во внутреннюю очередь. Адрес должен быть доступен по HTTPS, устойчив к повторной доставке и не раскрывать секрет в URL. Один endpoint на модель упрощает десериализацию и диагностику.

Настройка webhook Mindee с адресом и signing secret

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

SDK и языки разработки

Официальные клиентские библиотеки ускоряют подключение и скрывают часть работы с HTTP, файлами и ответами. Документация показывает SDK для Python, Node.js, PHP, Ruby, Java и .NET. Библиотека помогает настроить клиент, загрузить файл, выбрать страницы, сжать изображение, поставить задачу и обработать ответ. Перед обновлением зависимости необходимо проверить совместимость используемой версии API и тесты десериализации.

SDK не отменяет архитектурные решения. Приложение всё равно должно хранить секрет, ограничивать размер, проверять тип файла, выполнять повторы с задержкой, обрабатывать 4xx и 5xx, записывать идентификаторы и обеспечивать идемпотентность. Обёртку над SDK полезно сделать собственной: тогда бизнес-код получает единый результат и не зависит от деталей конкретной библиотеки.

Интеграции без кода

Для процессов, где не требуется собственный серверный модуль, Mindee можно связать с системами автоматизации. В документации приведены сценарии для Make, Zapier и n8n. Типовой поток получает файл из формы, почты или облачного хранилища, вызывает модель, ждёт результат и создаёт запись в таблице, CRM или бухгалтерской системе. Такой вариант ускоряет прототип и небольшой внутренний процесс.

При настройке без кода всё равно нужен API-ключ, идентификатор модели и понимание структуры ответа. Поля из JSON сопоставляются с полями следующего модуля. Для списка позиций потребуется цикл по элементам, а для отсутствующих значений — условие. Ошибки нельзя отправлять в ту же ветку, что успешные документы: нужна отдельная очередь с именем файла, кодом ошибки и возможностью повторного запуска.

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

Мониторинг в Insights

Раздел Insights показывает использование моделей и API за выбранный период. Доступны представления Traffic, Processing Time и Errors. Фильтры позволяют выбрать происхождение запросов, диапазон дат, группировку, API-ключ и активированные дополнительные функции. Это помогает отличить тесты в интерфейсе от рабочего трафика и понять, какая модель создаёт нагрузку или ошибки.

График трафика моделей в разделе Insights Mindee

Traffic показывает количество успешных вызовов и обработанных страниц. Именно страницы связаны с потреблением кредитов, поэтому многостраничный файл нужно учитывать не как один запрос. Резкий рост может означать реальную нагрузку, повторную отправку из-за ошибки идемпотентности или бесконечный сценарий автоматизации. Сопоставление по API-ключу помогает найти проблемный ключ.

Processing Time показывает среднее время обработки. Значение зависит от документа, размера схемы и включённых функций. Если время выросло только у одной модели, проверяют изменения схемы, RAG и состав файлов. Если рост общий, оценивают сеть, очередь и состояние сервиса. В пользовательском интерфейсе ожидание следует показывать как асинхронный процесс, а не блокировать страницу на неопределённое время.

График времени обработки в Mindee Insights

Errors отображает ошибки обработки, но клиентские 4xx, отклонённые до запуска, могут не попадать в ту же метрику. Поэтому мониторинг приложения должен отдельно считать ошибки загрузки, авторизации, лимитов и формата. Пустой график ошибок не означает, что все запросы успешны: часть могла быть отвергнута до обработки. Рабочая панель объединяет внутренние метрики с Insights.

График ошибок обработки в Mindee Insights

Политики обработки и хранения данных

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

Storage Policy определяет, как долго результат обработки остаётся в системах Mindee до удаления. Короткий срок уменьшает объём хранимых данных, но требует, чтобы приложение своевременно забрало результат. Длительность выбирают с учётом ретраев и расследования ошибок. Оригинал и итоговые данные в собственной системе имеют отдельные сроки хранения, которые не задаются настройкой модели.

Перед отправкой персональных и финансовых документов нужно определить правовое основание, перечень данных и круг пользователей. В тестовой среде предпочтительны обезличенные примеры. Журналы не должны содержать полный API-ключ, содержимое паспорта или целый JSON без необходимости. Доступ к моделям, ключам и результатам выдаётся по ролям, а действия по ручной правке фиксируются.

Защита передачи обеспечивается HTTPS, но безопасность процесса зависит и от окружающей системы. Файл может утечь из временной папки, письма, очереди, платформы автоматизации или журнала. Поэтому полезно шифровать хранилище, удалять временные копии, ограничивать скачивание, применять антивирусную проверку и отделять метаданные от содержимого. В webhook нельзя включать секреты в путь или параметры запроса.

Расход страниц и планирование объёма

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

Повторный запуск из-за изменения модели также обрабатывает страницы. Регрессионный набор следует держать достаточным для качества, но не запускать бесконечно после каждого незначительного действия. В рабочем процессе хеш файла и идентификатор внешней операции предотвращают случайную повторную загрузку. Если пользователь нажал кнопку дважды, система должна вернуть существующий статус, а не создать две задачи.

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

Ошибки и способы устранения

Файл отклонён до обработки

Ошибка 400 обычно указывает на некорректный запрос: неподдерживаемый тип, повреждённый файл, неверный идентификатор модели или неправильные параметры. Сначала проверяют фактическую сигнатуру файла, MIME-тип, размер и число страниц. PDF следует открыть независимым просмотрщиком и убедиться, что он не защищён повреждённой структурой. Для изображения проверяют, что файл декодируется и не является анимированным PNG или контейнером с неожиданным содержимым.

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

Авторизация и доступ

Ответ 401 означает, что ключ отсутствует, неверен или передан не тем заголовком. Нельзя печатать секрет в журнал для диагностики; достаточно записать имя конфигурации и последние несколько символов безопасного идентификатора, если политика это допускает. Ответ 403 может означать недостаток прав или достижение лимита плана. В таком случае проверяют организацию, модель, состояние подписки и потребление страниц.

Если ключ был случайно опубликован, его нужно немедленно отозвать и заменить. Простое удаление из репозитория недостаточно: секрет остаётся в истории. После ротации проверяют трафик по ключам в Insights и внутренние журналы. Все среды обновляют согласованно, чтобы старый ключ не остался в забытом задании или сценарии автоматизации.

Ограничение частоты и временные сбои

При 429 запросы повторяют с увеличивающейся задержкой и случайным разбросом, учитывая заголовки ответа. Немедленный цикл повторов только усиливает ограничение. Очередь должна контролировать параллелизм и учитывать среднее время обработки. Для массовой миграции лучше постепенно увеличивать нагрузку и наблюдать за ошибками, чем сразу отправлять всю подборку.

Ошибки 5xx и сетевые тайм-ауты считаются временными, но повтор зависит от этапа. Если постановка задачи могла быть принята, сначала ищут существующий идентификатор или используют собственный ключ идемпотентности. Повторная отправка файла без проверки может создать дубликат. Если job id уже получен, продолжают polling или ждут webhook по нему.

Задание долго остаётся в обработке

Длительность зависит от числа страниц, качества файла, схемы и дополнительных функций. Приложение задаёт реалистичный общий тайм-аут, после которого помечает задачу как требующую проверки, но не удаляет её. Следует проверить Insights, статус сервиса, очередь собственных воркеров и правильность webhook. Иногда результат готов, а событие не обработано из-за ошибки подписи или недоступности endpoint.

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

Поля перепутаны или таблица распалась

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

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

Webhook не принимается

Проверяют доступность HTTPS-адреса из интернета, сертификат, время ответа и метод. Получатель должен быстро вернуть успешный код, а обработку перенести в очередь. Затем проверяют signing secret и алгоритм подписи по документации. Тело запроса нельзя изменять прокси или middleware до проверки, если подпись вычисляется по исходным байтам.

Если события приходят повторно, это нормальная ситуация для надёжной доставки. Обработчик должен быть идемпотентным. Если события не приходят совсем, временно включают polling, чтобы не остановить поток, и сравнивают идентификаторы модели и webhook. Разные модели лучше направлять на отдельные endpoint, чтобы не путать схемы ответа.

Практические сценарии

Счета к оплате

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

Наиболее частые исключения — дубликат счёта, несовпадение валюты, отсутствие номера заказа, разница итогов и новая банковская информация. Эти проверки выполняются после извлечения. Mindee предоставляет данные, но решение об оплате принимает бизнес-логика. Автоматическое изменение банковского счёта поставщика по одному документу опасно; такой реквизит требует отдельного подтверждения.

Авансовые отчёты и чеки

Сотрудник фотографирует чек, приложение проверяет края и резкость, затем отправляет файл. Модель извлекает продавца, дату, валюту, итог и позиции. Правила определяют категорию расхода, допустимость даты и лимит. Если чек длинный или имеет рукописные чаевые, оператор видит оригинал и подсвеченное значение. После подтверждения данные связываются с поездкой или заявкой.

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

Регистрация клиента по документу

Пользователь загружает паспорт или удостоверение, после чего данные предварительно заполняют форму. Имя, номер и даты показываются для подтверждения, а MRZ используется для перекрёстной проверки. Изображение не должно сохраняться дольше установленной политики. Для полного KYC дополнительно нужны проверка подлинности, сравнение лица и другие процедуры; одно распознавание не подтверждает, что документ настоящий или принадлежит предъявителю.

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

Смешанный пакет со сканера

МФУ создаёт один PDF из пачки: договор, приложение, счёт, чек и пустые страницы. Split определяет границы, Classification уточняет тип, а связанные модели извлекают данные. Оригинальный файл сохраняется, производные документы получают диапазоны страниц и собственные идентификаторы. Неизвестный класс направляется в общую очередь, а не теряется.

Качество такого потока зависит от порядка и разделения страниц. Двусторонний скан может добавить пустые обороты, а приложение договора — выглядеть как новый документ. Для обучения правил собирают ошибки границ и корректируют классы. Если цена ошибки высока, на первых этапах оператор подтверждает разделение, а автоматический режим включается после измерения стабильности.

Логистика и штрихкоды

В накладных и транспортных документах можно извлекать номера, отправителя, получателя, даты, позиции и штрихкоды. Коды возвращаются специализированным полем, а текстовые реквизиты — обычной схемой. Если на странице несколько этикеток, Crop выделяет области, после чего каждая проходит распознавание. Результат связывается с заказом или грузом по коду.

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

Резюме и кадровые документы

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

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

Как оценивать качество до запуска

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

Отдельно измеряют долю полностью автоматических документов. Даже если каждое поле точно на 98 процентов, документ с двадцатью обязательными полями может часто содержать хотя бы одну ошибку. Поэтому полезны две метрики: точность полей и straight-through processing — доля документов, прошедших все правила без оператора. Для бизнеса вторая показывает реальную экономию времени.

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

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

Ограничения, которые важно учитывать

Mindee не редактирует PDF, не меняет страницы, не добавляет подпись и не собирает новый документ как обычный PDF-редактор. Его результат — данные и аналитическая структура. Если задача состоит в исправлении текста, объединении файлов, установке пароля или заполнении формы вручную, нужен отдельный редактор. В одном процессе инструменты могут дополнять друг друга: редактор готовит документ, а Mindee извлекает реквизиты.

Live Test удобен для проверки, но массовый рабочий процесс требует интеграции через API, SDK, webhook или платформу автоматизации. Пользователь, ожидающий просто открыть папку и получить Excel без настройки, столкнётся с необходимостью спроектировать схему и маршрут данных. Для небольшой разовой оцифровки специализированная настольная OCR-программа может быть проще.

Ограничение в 100 МБ и 200 страниц требует предварительной подготовки больших пакетов. Расход считается по страницам, поэтому стоимость зависит от объёма, повторной обработки и дополнительных функций. Перед внедрением нужно проверить тариф в кабинете и провести пилот на фактическом месячном потоке. Публичные примеры не заменяют расчёт для конкретного количества страниц и требований поддержки.

Точность зависит от качества, языка, структуры и ясности схемы. Рукописный текст, слабая термопечать, сложная таблица, перекрытые объекты и необычная вёрстка остаются трудными случаями. Уверенность не гарантирует правильность. Для денежных, юридических и идентификационных данных необходимы валидация и управляемая ручная проверка.

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

Сравнение Mindee с аналогами

ПрограммаЛучше подходит дляГлавное ограничение
MindeeБыстрой настройки схем извлечения, разделения, классификации и интеграции через понятный APIНеобходимы облачная обработка и учёт страниц
Google Cloud Document AIПроектов в Google Cloud, многоязычного OCR и собственных extractors, splitters и classifiersТребует настройки ресурсов и ролей Google Cloud
Azure AI Document IntelligenceСреды Microsoft Azure, готовых и custom-моделей, извлечения текста, таблиц и key-valueАрхитектура и тарификация привязаны к Azure
Amazon TextractПотоков AWS с OCR, формами, таблицами, Queries и специализированными финансовыми APIНабор функций и квоты различаются по режимам API
NanonetsNo-code-процессов с извлечением, проверками и экспортом в бизнес-системыСложные рабочие потоки требуют тщательной настройки
VeryfiЧеков, счетов, мобильного захвата и финансовых документов с готовыми APIНаиболее сильная специализация сосредоточена на финансовых сценариях

Mindee рационален, когда команде нужен компактный путь от схемы и Live Test к API, а также встроенные Split, Crop и Classification. Google Cloud Document AI стоит выбирать для глубокой интеграции с Google Cloud и широкого многоязычного OCR; Azure AI Document Intelligence — для инфраструктуры Microsoft и готовых моделей Azure; Amazon Textract — когда документы уже поступают в AWS и нужны формы, таблицы или Queries. Nanonets удобен командам, которые хотят больше визуальной автоматизации вокруг извлечения, а Veryfi особенно силён в чеках, счетах и мобильном финансовом захвате. PDF Commander относится к другому классу: он полезен для ручного редактирования и сборки PDF, но не заменяет серверное извлечение данных и маршрутизацию документов.

Контроль таблиц, сумм и связанных значений

Табличное извлечение следует проектировать вокруг дальнейшего использования строк. Для каждой колонки задают отдельное назначение: описание позиции, количество, единицу измерения, цену, ставку налога, скидку и итог. Не стоит объединять несколько сущностей в одно текстовое поле, если затем они участвуют в расчётах или поиске. В Live Test проверяют, сохраняется ли принадлежность ячейки к нужной строке, как обрабатываются пустые значения и не превращается ли многострочное описание в несколько позиций.

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

Числовые поля проверяют не только по формату, но и по арифметическим связям. Сумма строки сопоставляется с количеством и ценой, налог — с базой и ставкой, а итог документа — с подытогом, скидками и сборами. Разница может быть законной из-за округления, поэтому допустимое отклонение задают в минимальных единицах валюты. Если расхождение превышает порог, документ направляют на проверку, показывая оператору участвующие значения и их расположение на странице.

Валютный символ и код хранят отдельно от суммы. Знак доллара без контекста не всегда определяет конкретную валюту. Приложение сверяет валюту с поставщиком, страной и заказом, но не исправляет её молча. Десятичный разделитель нормализуют только после определения локали: значение 1.234 может означать дробь или тысячу двести тридцать четыре.

Связанные поля полезно проверять группой. Дата оплаты не должна предшествовать дате выставления без понятного основания, срок действия удостоверения обычно позже даты выдачи, а банковский идентификатор должен соответствовать стране и длине. Такая проверка выполняется в прикладной системе после Mindee. Модель извлекает кандидаты, координаты и уверенность, а бизнес-правила определяют, можно ли провести документ автоматически или требуется подтверждение.

Проектирование надёжной очереди документов

Асинхронный вызов удобнее строить как конечный автомат. Запись проходит состояния принят, передан, обрабатывается, получен результат, нужна проверка, завершён или ошибка. Каждое изменение состояния фиксируется вместе со временем и идентификатором задания. Такой журнал помогает отличить медленную обработку от потерянного события, восстановить поток после сбоя и не отправить один файл повторно только потому, что пользователь обновил страницу.

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

Polling должен увеличивать интервал между запросами. Частая проверка сразу после отправки создаёт лишнюю нагрузку, а слишком редкая ухудшает задержку пользовательского процесса. Практический вариант — короткий интервал в начале, затем постепенное увеличение до установленного максимума. Общий тайм-аут не должен уничтожать запись: после его истечения документ переводят в отдельное состояние и продолжают диагностировать по идентификатору задания.

Webhook уменьшает число запросов, но не отменяет очередь. Получатель сначала проверяет подпись и минимальную структуру события, сохраняет его, возвращает успешный ответ и только затем запускает тяжёлую обработку. Если endpoint пытается сразу записать десятки таблиц, вызвать ERP и отправить письмо, он может превысить время ответа, после чего событие будет доставлено повторно. Разделение приёма и обработки делает поток устойчивым к медленным зависимостям.

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

Очередь ошибок делят по причинам. Неподдерживаемый формат и превышенный размер требуют вмешательства до повторной отправки; временный сетевой сбой допускает автоматический retry; невалидный JSON или несовместимая структура указывают на ошибку интеграции; низкая уверенность и нарушение бизнес-правил направляются оператору. Один общий статус ошибка затрудняет диагностику и заставляет повторять безнадёжные запросы.

Подготовка операторской проверки

Экран проверки должен показывать не только извлечённые значения, но и соответствующий фрагмент оригинала. Координаты позволяют подсветить исходный фрагмент, а номер страницы — сразу перейти к нужному месту в многостраничном PDF. Оператору полезно видеть описание поля и причину проверки: низкую уверенность, арифметическое расхождение, неизвестного поставщика или конфликт с уже существующей записью. Без такой подсказки человек вынужден перечитывать документ целиком.

Поля располагают в порядке бизнес-решения, а не в порядке JSON. Для счёта сначала показывают поставщика, номер, даты и валюту, затем суммы и строки. Для удостоверения — имя, номер и сроки, после чего адрес и дополнительные сведения. Критические значения выделяют, но цвет не должен быть единственным сигналом: добавляют текстовую метку и причину. Это помогает пользователям с особенностями восприятия и облегчает аудит снимков экрана.

Исправление сохраняют как отдельное действие. В журнале остаются исходное значение, новое значение, пользователь, время и причина. Если поле отсутствует в документе, оператор выбирает состояние нет значения, а не вводит пустую строку без пояснения. Так система отличает реальное отсутствие от пропуска и может оценивать, где модель ошибочно создаёт значение, а где документ действительно его не содержит.

Для таблиц интерфейс должен поддерживать добавление, удаление и объединение строк только с подтверждением. Особенно опасно незаметно сдвинуть цену к соседнему товару. Оператор сверяет строку с подсветкой на странице, а после правки запускается повторная арифметическая проверка. Итог документа нельзя считать подтверждённым, если сумма строк после ручного изменения перестала ему соответствовать.

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

Метрики операторской работы дополняют технические Insights. Полезно измерять долю документов, попавших на проверку, среднее число исправленных полей, время до решения и причины отклонений. Если большинство исправлений относится к одному полю или поставщику, сначала улучшают схему или входной процесс. Увеличивать штат ручной обработки без анализа причин — дорогое лечение симптома.

Многоязычные документы и нормализация

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

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

Даты приводят к машинному формату только после проверки порядка компонентов. Запись 03/04/2026 неоднозначна без страны, языка и контекста. Код не должен выбирать месяц и день по настройке сервера. Он использует страну документа, подпись поля и допустимые диапазоны, а при недостатке данных оставляет значение на проверку. В интерфейсе рядом показывают исходную строку, чтобы оператор видел причину неоднозначности.

Адреса не следует принудительно раскладывать по одинаковому набору строк для всех стран. Номер дома, корпус, индекс, регион и административные уровни имеют разные правила. Если downstream-система требует фиксированные поля, преобразование выполняют отдельным модулем с проверкой страны. Mindee извлекает текст и структурированные компоненты в пределах заданной схемы, но корректность почтовой нормализации должна подтверждаться профильными правилами.

Для чисел важны локальные разделители, символы валют и пробелы тысяч. Сначала сохраняют распознанный текст, затем получают нормализованное число и фиксируют применённое правило. Если строка содержит несколько валют или процент рядом с суммой, поле должно быть описано точнее либо разделено. Нельзя удалять все нецифровые символы и считать остаток суммой: так теряются минус, десятичная часть и признак процента.

Рекомендации по внедрению

  1. Опишите конечные поля и бизнес-правила до создания модели. Зафиксируйте обязательные значения, форматы, допустимые диапазоны и условия ручной проверки.
  2. Соберите репрезентативный набор документов и отделите контрольную выборку. Не используйте один красивый пример как доказательство готовности.
  3. Создайте минимальную схему с правильными типами. Добавляйте поля только тогда, когда у них есть потребитель в целевой системе.
  4. Проверьте Live Test, JSON, таблицы, отсутствие полей, координаты и уверенность. Сравнивайте не только текст, но и структуру.
  5. Спроектируйте асинхронный поток с идентификатором задания, идемпотентностью, polling или webhook, очередью ошибок и журналом попыток.
  6. Добавьте валидацию сумм, дат, номеров, валют и справочников. Не принимайте критические данные только по уверенности модели.
  7. Настройте регион, срок хранения, роли и секреты. Проверьте все промежуточные системы, включая почту, хранилище и no-code-платформу.
  8. Запустите пилот на ограниченном объёме, измерьте точность полей, долю автоматической обработки, время и расход страниц.
  9. Организуйте интерфейс ручной проверки с подсветкой исходного фрагмента и аудитом правок. Не исправляйте результат незаметно.
  10. После запуска отслеживайте Insights и внутренние метрики, регулярно разбирайте ошибки и прогоняйте регрессионный набор после изменений.

Как получить стабильный результат

Стабильность достигается сочетанием понятной схемы, качественного входа и строгой интеграции. Модель должна извлекать только нужные поля правильных типов, файл — сохранять читаемую геометрию и текст, а приложение — проверять результат по бизнес-правилам. Любой из этих компонентов может стать слабым местом: идеальная модель не восстановит закрытую цифру, а точное значение не поможет, если код перепутает валюту или повторно создаст операцию.

Live Test следует использовать как лабораторию, а не как единственный критерий. Реальное решение включает очередь, хранение статусов, ретраи, подпись webhook, ротацию ключей, валидацию, ручную проверку и мониторинг. Такой контур превращает распознавание из демонстрации в управляемый процесс, где ошибку можно обнаружить, объяснить и исправить.

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

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

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