"Без ограничений" OCR не означает, что модель может читать каждый документ без ограничений. Это означает, что команда может многократно выполнять извлечение данных из документов, сохраняя контроль над входными данными, результатами обработки страниц, проверкой и ошибками. Модель — лишь одна часть системы. Ваше приложение по-прежнему подготавливает страницы, проверяет результаты и определяет, что следует обработать повторно.
OdiRouter относится к уровню доступа к модели.
Его home page описывает рабочее пространство моделей, единый интерфейс для доступа к моделям и маршрутизацию моделей.
Getting Started documentation охватывает начальную настройку запросов к моделям.
Используйте его для ключей API и идентификаторов моделей.
Обратитесь к его руководствам SDK по настройке и мультимодальным задачам, если эти разделы подходят для вашей интеграции.
Используйте эти ресурсы для выбора и тестирования модели. Подготовку документов, состояние заданий и правила соответствия требованиям сохраняйте в собственном приложении.
Определите задание до первого запроса
Определите, какой результат выдаёт одно задание OCR. Оно может охватывать один чек, одно изображение или один многостраничный документ. Для документа присвойте каждой странице стабильный идентификатор. Определите, должен ли результат представлять собой обычный текст, набор полей, таблицу или флаг для проверки. Модель может вернуть полезный результат только тогда, когда запрос чётко определяет ожидаемую структуру.
Также определите, что считается ошибкой. Ответ, в котором отсутствует обязательный номер счёта, отличается от ответа, который ваше приложение не может обработать. Если фиксировать это различие, приложение сможет повторно обработать нужный элемент вместо повторного запуска обработки всего документа.
Выберите модель и проведите небольшой тест
Начните в рабочем пространстве моделей OdiRouter и сравните варианты, доступные для вашей учётной записи. pricing page может помочь, когда перед запуском в производство нужно сравнить варианты моделей и доступную информацию о ценах. Ознакомьтесь с актуальной документацией по требованиям выбранной модели к входным данным. Модели не обязательно принимают один и тот же формат изображения, файла или документа.
Для первого теста используйте одну репрезентативную страницу. Выберите страницу с содержимым, которое вызывает проблемы в реальных документах, например, таблицу, небольшую подпись, поле у поля или несколько областей для чтения. Запросите структурированный результат, который ваше приложение сможет проверить.
job_id = create_job(document_id)
page_id = add_page(job_id, image_reference)
result = request_selected_model(page_id, expected_fields)
store_raw_result(job_id, page_id, result)
validate_required_fields(job_id, page_id)Это псевдокод приложения.
Это не запрос OdiRouter.
Следуйте актуальной документации по аутентификации, идентификаторам моделей и формату запроса.
Обработка многостраничного документа как отдельных рабочих блоков.
Многостраничный документ легче восстановить, если у каждой страницы есть независимое состояние. Если выбранной модели нужны изображения, визуализируйте или подготовьте страницы в приложении в соответствии с задокументированными требованиями модели. Храните ссылку на исходный документ и запись для каждой страницы. Успешный запрос сам по себе не означает, что обработка документа завершена.
Для каждой страницы ведите краткую запись о статусе: ожидает обработки, отправлена, получена, проверена, требует проверки или завершилась ошибкой. Точные названия статусов менее важны, чем следующий шаг, который они подразумевают. Статус должен сообщать сотруднику, что произошло, и предотвращать создание повторной последующей записи при повторной попытке.
Некоторые документы содержат заголовки, итоги или поля, охватывающие несколько страниц. Проверяйте результат для каждой страницы и собранный документ. Страница может выглядеть корректно, тогда как в объединённой записи всё ещё отсутствует число или повторяется поле.
Проверяйте результат перед его использованием
Выбирайте проверки, соответствующие задаче. Для формы проверяйте обязательные поля и подтверждайте, что идентификаторы соответствуют ожидаемым форматам. Для таблицы проверяйте количество строк, структуру столбцов и все итоги, указанные в источнике. Для обычного текста ищите пустые страницы, повторяющиеся блоки и неожиданные символы.
Используйте очередь проверки, когда ошибки имеют коммерческие последствия или влияют на безопасность. В очереди должны отображаться изображение страницы, результат модели, правило, которое не прошло проверку, и достаточно контекста задания, чтобы человек мог принять решение без поиска по журналам.
Повторяйте обработку страниц с ошибками по ограниченным правилам
Хорошие правила повторных попыток зависят от типа сбоя. Фиксируйте, возникла ли проблема при подготовке входных данных, из-за ошибки запроса, ошибки разбора или правила проверки. Повторяйте временно неудавшиеся запросы в рамках ограниченной политики повторных попыток. Направляйте некорректные входные данные или отсутствие обязательного поля по отдельному пути, например на повторный рендеринг страницы или запрос проверки человеком.
Для каждой страницы используйте ключ идемпотентности или эквивалентную защиту на уровне приложения. Прежде чем создавать еще одну запись в нижестоящей системе, проверьте, есть ли на этой странице уже принятый результат. Это предотвращает двойной подсчёт, когда обработчик перезапускается после получения ответа.
Храните историю повторных попыток вместе с записью страницы. Включайте выбранную модель, версию промпта, результат валидации и категорию ошибки. Эта запись позволяет команде сравнивать изменения, не делая вид, что последующий успех устраняет прежнюю проблему.
Храните данные документов и журналы в четких рамках.
В документах может содержаться личная, финансовая, медицинская информация или сведения о договорах. Ограничьте доступ к исходным файлам и результатам выполнения. Храните временные изображения страниц в соответствии с правилами доступа и хранения, установленными командой. Не помещайте исходный текст документов, учётные данные для доступа или полные полезные нагрузки запросов в общие журналы приложения.
Регистрируйте достаточно данных для воспроизведения сбоя, не копируя конфиденциальное содержимое. Идентификатор задачи, идентификатор страницы, идентификатор модели, версия промпта, временная метка, категория ошибки и результат валидации могут быть полезнее, чем необработанная выгрузка документа. Прежде чем решать, что хранить, проверьте собственные требования к срокам хранения и безопасности.
Контрольный список на первую неделю
Выберите тип документа и определите поля или текст, которые нужно извлечь.
Сравните подходящие варианты моделей в OdiRouter и проведите небольшой репрезентативный тест.
Присвойте каждой странице стабильный идентификатор и храните её статус в приложении отдельно от итоговой записи документа.
Добавьте правила валидации до передачи вывода модели в последующие действия.
Протестируйте временный сбой и сбой валидации до того, как рабочий процесс выйдет в продакшен.
Обсудите обработку файлов, доступ и сроки хранения журналов с людьми, отвечающими за данные документов.
Начните с контролируемого запроса
Практический способ запускать неограниченные OCR — сделать задачи по обработке документов наблюдаемыми и восстанавливаемыми.
Используйте OdiRouter для изучения доступа к моделям.
Прочитайте Getting Started documentation перед настройкой первого запроса.
Расширяйте систему только после того, как приложение сможет показать, какая страница была обработана, что вернула модель, что выявила валидация и что должно произойти дальше.
Источники
OdiRouter home: рабочее пространство моделей, унифицированный доступ к моделям и обзор маршрутизации.
OdiRouter Getting Started: настройка запросов и рекомендации по мультимодальным задачам.
OdiRouter pricing: сравнение моделей и прозрачность ценообразования.