Когда объявлений десять, фотографии обрабатывают руками и не думают об этом. Когда их триста, а карточки уходят на две площадки в разных размерах, ручная работа съедает день в неделю и начинает ошибаться: не тот размер, не тот файл, не то главное фото.
Автоматизация обработки фото — это не одна программа, а конвейер из четырёх шагов: приём исходников, приведение к стандарту, улучшение картинки, выдача в нужных форматах. Ниже — как этот конвейер устроен, что в нём делается скриптом, что сервисом, и где обязательно остаётся человек.
Шаг ноль: договориться об именах
Пока файлы называются IMG_2831 и «фото3 (копия)», никакая автоматика не заработает. Первое, что нужно ввести, — правило имени, из которого машина понимает, к какому товару и какому ракурсу относится кадр.
Рабочая схема: артикул, подчёркивание, номер ракурса. Например, A1042_01.jpg — главный кадр товара A1042, A1042_04.jpg — четвёртый. Съёмщик переименовывает прямо на месте либо складывает кадры в папку с именем артикула, а скрипт разбирает.
Дальше всё строится на этом. Скрипт находит главный кадр по номеру 01, знает, куда класть результат, и не путает товары между собой.
Шаг первый: приёмник и очередь
Нужна одна папка, куда попадают исходники, и одна, куда уходит готовое. Между ними — обработчик.
Логика в псевдокоде:
для каждого файла в папке "входящие":
если имя не подходит под шаблон -> переложить в "ручной разбор", записать в лог
иначе:
артикул, ракурс = разобрать имя
поставить задачу в очередь: {файл, артикул, ракурс}
переместить исходник в "архив/<дата>"
Очередь нужна не ради красоты. Обработка картинки занимает секунды, а иногда минуты, и если запускать всё подряд одновременно, машина ляжет. Очередь ограничивает число одновременных задач и позволяет повторить упавшую.
На небольшом объёме очередью может быть просто список файлов и цикл с ограничением на количество параллельных процессов. На больших объёмах ставят отдельный брокер задач, но начинать с него незачем.
Шаг второй: приведение к стандарту
Здесь работают консольные утилиты обработки изображений — те, что умеют пакетно менять размер, обрезать, поворачивать и пересохранять.
Типовой набор операций:
- Поворот по данным ориентации из метаданных, иначе часть кадров окажется боком.
- Обрезка до нужной пропорции — например, квадрат или вертикаль под требования площадки.
- Ресайз по длинной стороне до целевого разрешения.
- Пересохранение с контролем качества, чтобы уложиться в лимит веса.
- Удаление лишних метаданных, включая геометку места съёмки.
Последний пункт часто забывают, а зря: в исходнике с телефона может лежать координата вашего склада или квартиры. Что вообще входит в базовую обработку фото товара, разобрано отдельно.
Про то, как площадки пережимают загруженное и почему исходник стоит хранить отдельно, написано в разборе про то, как Авито сжимает фото.
Шаг третий: улучшение картинки
Ресайз не делает кадр лучше — он делает его подходящим по формату. Всё, что касается света, фона и общего вида, — отдельный слой.
Здесь два пути.
Первый — свои алгоритмы: автоуровни, коррекция баланса белого, удаление фона нейросетевой моделью, подстановка белого. Это реально сделать самому, но потребуется машина с видеокартой или оплата облачных вычислений, плюс время на подбор моделей и на то, чтобы результат не портил сложные объекты — мех, стекло, провода.
Второй — вызывать внешний сервис по HTTP: отправляете изображение, получаете обработанное. В этом случае в конвейере появляются вещи, о которых обычно не думают заранее:
отправить запрос с картинкой и параметрами режима
если код ответа 429 или 5xx:
подождать с увеличением паузы, повторить (не больше N раз)
если ответ асинхронный:
сохранить идентификатор задачи
ждать уведомления на свой адрес обратного вызова
либо периодически спрашивать статус
проверить результат: размер, пропорции, что файл вообще открывается
Токен доступа держите в переменных окружения или в хранилище секретов, а не в коде и не в репозитории. Логируйте идентификатор задачи и время ответа — без этого невозможно разобраться, почему у одного товара картинка не пришла.
Раздел «Фото» в «Папе БУ» закрывает как раз этот слой: из снимка на телефон делает кадр для объявления или карточки маркетплейса, в двух режимах, не перерисовывая сам товар. Автопостинга и интеграций с маркетплейсами в сервисе нет — выкладку в любом случае строите вы сами.
Шаг четвёртый: выдача под площадки
Одно и то же фото почти никогда не подходит везде без изменений: разные пропорции, разные требования к фону, разный вес.
Разумно хранить один мастер-файл в максимальном качестве и генерировать из него варианты по профилям. Профиль — это набор параметров: пропорция, размер длинной стороны, фон, лимит веса, формат. Добавилась площадка — добавили профиль, перегенерировали, ничего не переснимая.
Подробнее логика единого исходника разобрана в статье про одно фото для всех площадок, а конкретные размеры — в материале про размер фото для маркетплейса.
Где остаётся человек
Полностью безлюдный конвейер в фото не получается. Автомат не отличает удачный кадр от испорченного: он не видит, что у стула отрезана ножка, что этикетка ушла в блик, а на фоне остался кусок чужой руки.
Поэтому в схему закладывают эскалацию: если обработка вернула ошибку, файл не прошёл проверку размеров или модель отработала с низкой уверенностью — задача уходит в папку «на просмотр», и человек решает. Плюс выборочный контроль: даже успешные результаты просматривают глазами перед публикацией, хотя бы по одному кадру на товар.
Полезно вести простой журнал: сколько файлов пришло, сколько прошло, сколько ушло на ручной разбор, сколько повторов. Растущая доля ручного разбора — сигнал, что что-то в конвейере сломалось.
Сколько это стоит собрать
Цифры для примера, у каждого свои. Разработчику на сборку описанного конвейера уходит от нескольких дней до пары недель: приёмник, очередь, профили, вызовы внешнего сервиса, повторы, логи, эскалация. Дальше — хостинг, оплата вычислений или запросов к сервису и сопровождение, потому что требования площадок меняются и профили приходится править.
Если поток фотографий небольшой, конвейер не окупается: проще обработать руками. Считайте по времени, которое сейчас уходит на обработку в неделю.
Когда автоматизация не нужна
Первый случай — мало товаров. До нескольких десятков карточек в месяц конвейер обходится дороже ручной работы и добавляет точку отказа.
Второй — уникальные позиции. Антиквариат, украшения, техника с дефектами: каждый кадр требует своего решения, и пакетная обработка усредняет то, что усреднять нельзя.
Третий — нестабильный ассортимент. Если сегодня одежда, завтра запчасти, послезавтра мебель, профили придётся переписывать чаще, чем они успевают приносить пользу.
Коротко
Автоматизация обработки фото — это правило именования, папка-приёмник, очередь, пакетное приведение к стандарту, слой улучшения и генерация вариантов под площадки из одного мастер-файла. Токены — в секретах, повторы и логи — обязательны, ручная приёмка результата остаётся всегда. На малом объёме собирать конвейер нет смысла.
Если нужен готовый слой улучшения кадра, посмотрите раздел «Фото»: есть бесплатные пробные генерации без карты, чтобы оценить результат на своём товаре — попробовать.
Если решение под свой бизнес нужно, а разбираться самому некогда — напишите мне в Telegram: @artem_sergeevic. Я делаю такие сервисы на заказ: обсудим задачу и честно разберём, что в ней действительно нужно, а что можно не делать вовсе.