С 1 октября 2026 года вступает в силу федеральный закон о платформенной экономике, который вводит явные требования к сертификации изделий, конструктивно схожих с оружием, — в том числе ножей. Ozon начал проверки заранее и в один день заблокировал у одного из продавцов около 1000 SKU. Михаил, руководитель группы дизайна в Ozon Seller и одновременно селлер с шестилетним стажем, оказался перед выбором: несколько месяцев ручной загрузки сертификатов или автоматизация.
Проблема осложнялась форматом хранения документов. Сертификаты лежали на Google Drive не в виде PDF с машиночитаемым текстом, а как обычные JPEG-картинки. Это исключало простое извлечение данных и требовало распознавания изображений. Использовать облачную модель напрямую — например, просто отправлять картинки в Claude — не получилось бы: лимиты API закончились бы уже на 10–20 изображениях, а нужно было обработать около 500.
| Этап | Инструмент | Результат |
|---|---|---|
| Распознавание JPEG-сертификатов | Ollama + qwen3-vl:8b (локально) | Извлечение номера, дат, артикулов |
| Загрузка файлов сертификатов | Ozon API POST /v1/product/certificate/create | Файлы загружены напрямую через multipart/form-data |
| Получение ID товаров | Ozon API POST /v2/product/list | Маппинг offer_id → product_id |
| Привязка сертификатов к товарам | Ozon API POST /v1/product/certificate/bind | Сертификаты привязаны по product_id |
Решением стала локальная vision-language модель qwen3-vl:8b, запущенная через Ollama. Ollama — это инструмент, позволяющий запускать большие языковые модели локально, без отправки данных во внешние сервисы и без расходования облачных токенов. Модель qwen3-vl:8b весит 6 ГБ и умеет анализировать изображения: извлекать текст, структурированные данные, реквизиты документов. Для задачи распознавания сертификатов автор выбрал версию на 8 миллиардов параметров, хотя, по его оценке, справились бы и более лёгкие варианты — 2b или 4b — с меньшим временем обработки.
Сертификаты хранились как JPEG-картинки на Google Drive — для их распознавания использовали локальную модель qwen3-vl:8b через Ollama.

Архитектуру пайплайна помог выстроить Claude. В ходе диалога выяснился важный технический момент: Ozon API принимает файлы сертификатов напрямую через multipart/form-data — метод POST /v1/product/certificate/create поддерживает загрузку байтов в форматах jpg, jpeg, png и pdf. Это означало, что промежуточный хостинг картинок не нужен вовсе: файлы уходят в Ozon прямо из локальной папки. Финальный пайплайн выглядел так: локальная папка с файлами → формирование пар «сертификат + приложение» → распознавание через Ollama → загрузка в Ozon через три метода API (создание сертификата, получение списка товаров, привязка по product_id).
По ходу работы вскрылись типичные проблемы реальных данных: часть сертификатов была связана с приложениями по имени файла, часть — только по номеру внутри документа; в именах файлов встречались опечатки; у одних сертификатов артикулы товаров вынесены в отдельное приложение, у других — указаны прямо в теле документа. Каждая такая аномалия ломала простой скрипт и требовала доработки. Дополнительно пришлось решать проблему маппинга брендов: один и тот же производитель мог фигурировать в Ozon под несколькими названиями. Её обошли через JSON-словарь, где папка с сертификатами одного бренда сопоставлялась сразу с несколькими вариантами написания.
После нескольких итераций отладки скрипт был запущен в боевом режиме. Полный прогон занял 3 часа 23 минуты: обработано 231 сертификат, средняя скорость — 52 секунды на документ. По оценке Claude, упрощение логики скрипта на финальном этапе сократило время обработки в 2–4 раза по сравнению с первоначальным вариантом. Подход показывает, как связка локальной vision-модели и облачного ассистента позволяет решать задачи с большим объёмом неструктурированных документов без значительных затрат на облачные API и без специальных навыков программирования у исполнителя.



