Фото своего товара нейросетью: фон, сцена, правка и проверка

При подготовке урока 14 октября в шлюз CloseRouter отправили фото пачки кофе «Зерно» (учебное фото, его нарисовала нейросеть) с двумя просьбами. Первая: убрать фон. Через 12 секунд и за 0,011 $ вернулась та же пачка на прозрачном фоне, ни одна буква на наклейке не сдвинулась. Вторая: поставить пачку на полку кофейни. Картинка вышла красивая, но у одной модели белая наклейка стала бежевой, а у другой на доске меню за пачкой появились каракули вместо букв. В этом уроке вы научитесь делать фото своего товара нейросетью и замечать такие изменения до публикации.

Чему научитесь в этом уроке:
• выбирать путь под задачу: вырезать фон, и товар останется настоящим, или поставить товар в сцену, и его перерисуют;
• писать запрос на сцену с приметами товара и форматом кадра;
• сверять результат с оригиналом по семи пунктам;
• убирать с фото лишний предмет, не трогая остальное;
• собирать в n8n сценарий: фото через форму, правка в шлюзе, результат вам в Telegram.
Вспомните урок 3.4. Там модель рисовала картинку к посту с нуля по тексту, через адрес /v1/images/generations шлюза CloseRouter. Сегодня у модели будет ваше фото, и запросы пойдут на соседний адрес /v1/images/edits («правки»). Учётные данные те же. Урок 3.4

Ножницы или художник

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

С нейросетями так же. Модель recraft/remove-background работает ножницами: только вырезает фон. Модели вроде google/gemini-3.1-flash-image-preview и openai/gpt-image-2.5 работают художником: получают фото и запрос словами и рисуют новую картинку. В прогоне мы пробовали четыре таких модели, и ни в одной сцене товар не остался в точности прежним.

Схема двух путей. Слева «Вырезать фон — ножницы»: ваше фото товара, модель recraft/remove-background без запроса словами, тот же товар без фона в PNG; товар не меняется, 0,011 $, 12–27 секунд, для главного фото карточки. Справа «Товар в сцене — художник»: фото и запрос словами, модели Gemini, GPT-image, Flux, Qwen и формат кадра полем, новая картинка с перерисованным товаром; меняет цвет, форму, детали, дорисовывает лишнее, 0,015–0,113 $, от 17 секунд до 2 минут, сверка с оригиналом по 7 пунктам.

Правило выбора простое. Фото должно показать товар точно таким, какой приедет покупателю (главное фото карточки, фото к заказу)? Берите ножницы. Нужна атмосфера для поста или рекламы? Можно звать художника, но его работу сверять с оригиналом.

Вырезать фон

Модель recraft/remove-background принимает только фото, без запроса словами: с полем prompt шлюз отвечает ошибкой 400 Unknown image operation field. В прогоне вырезка стоила 0,011 $ и шла от 12 до 27 секунд. Результат приходит в формате PNG (формат картинки, в котором бывает прозрачный фон): товар остаётся, всё вокруг становится прозрачным.

Слева исходное учебное фото: крафтовая пачка кофе «Зерно» с прищепкой на кухонном столе у окна. Справа результат вырезки: та же пачка на белом фоне, наклейка «ЗЕРНО, кофейня · Тверь, Колумбия · средняя обжарка, 250 г» без изменений.

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

Что художник меняет без спроса

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

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

Список «не меняй» перечисляет приметы товара: надписи, детали, цвет, форму. Гарантии он не даёт. Формат кадра словами не задать, для него есть отдельное поле. Без него модели в прогоне меняли форму кадра: горизонтальное фото кружки GPT-image вернул квадратным, а Qwen вытянул в широкий кадр 16:9. У Gemini формат «как у исходника» задаёт поле "aspect_ratio": "auto". У GPT-image это поле size с размером того же формата: для вертикального фото 2:3 "1024x1536".

Три картинки рядом. Слева исходная пачка «Зерно» на кухне. В центре сцена Gemini: пачка на деревянной полке кофейни с туркой и чашкой эспрессо; пачка мельче в кадре, на доске меню нечитаемые буквы. Справа сцена GPT-image: пачка на полке рядом с туркой и чашкой, надписи верные, но белая наклейка стала бежевой.

Что модели поменяли в прогоне, хотя их просили этого не делать:

  • Цвет. GPT-image сделал белую наклейку пачки бежевой.
  • Детали. У полосатой кружки ободок стал ярче и толще, у Qwen ручка тоньше и выше. Полос осталось пять у всех трёх моделей.
  • Лишнее в кадре. Цветок в горшке, веточка мяты, вторая кружка за стеклом. Ничего из этого не заказывали.
  • Буквы на фоне. На доске меню за пачкой Gemini нарисовал каракули, похожие на текст.

Надписи на самой наклейке «ЗЕРНО / кофейня · Тверь / 250 г» сохранились в обеих сценах, которые мы сверяли по буквам. Поменялось то, на что смотрят меньше: цвет, мелкие детали и фон.

Одна сцена в прогоне стоила от 0,015 $ (openai/gpt-image-2.5) до 0,113 $ (black-forest-labs/flux-kontext-max) и занимала обычно от 17 до 52 секунд. Однажды Gemini не ответил: через 4 минуты пришла ошибка 504, деньги не списались.

Сверка с оригиналом: семь пунктов

Откройте исходное фото и результат рядом, на одном экране, и пройдите по списку. На каждый пункт ответ один из двух: «совпало» или «изменилось, вот что».

  1. Надписи. Прочитайте каждую по буквам, включая мелкий текст и цифры веса или объёма.
  2. Детали. Посчитайте то, что можно посчитать: полосы, пуговицы, прищепки, крышки, ручки.
  3. Форма и пропорции. Не стал ли товар выше, ниже, шире или тоньше.
  4. Цвет. Белое осталось белым, оттенок упаковки тот же.
  5. Лишнее в кадре. Предметы, которых вы не заказывали, вторые копии товара, отражения.
  6. Надписи на фоне. Вывески, меню, книги за товаром: каракули там тоже увидят.
  7. Формат кадра. Вертикальное фото осталось вертикальным, товар не обрезан.
Четыре кадра рядом: исходная кружка в жёлто-белую полоску с синим ободком на тёмном столе и три сцены «кружка на подоконнике» от трёх моделей. У GPT-image ободок ярче и толще, кадр квадратный, рядом цветок в горшке. У Gemini кружка ближе всего к исходнику, но за стеклом появилась вторая кружка. У Qwen ручка тоньше и выше, рядом веточка мяты, кадр широкий.

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

Убрать лишнее точечной правкой

На кухонном снимке пачки слева мешала белая кружка. Запрос к художнику тот же по устройству, но с жёсткой рамкой:

Убери белую кружку слева. Больше ничего на фото не меняй: ни пачку, ни надписи, ни фон, ни свет, ни кадрирование.

Обе модели убрали кружку. У Gemini с aspect_ratio: auto изменились 2,1% точек кадра, у GPT-image с размером 1024×1536, то есть тем же форматом 2:3, что у исходника, 2,6%. Точки считала программа: наложила два кадра и посчитала, где цвет заметно отличается.

Слева исходное фото пачки «Зерно» на кухне, у левого края белая кружка. Справа результат точечной правки Gemini: кружки нет, пачка, надписи и кухня на месте.

Тот же запрос к GPT-image с квадратным размером 1024×1024 убрал кружку, но заново скомпоновал всю кухню: растение переехало, пачка стала шире. Отличалось уже 36,5% точек. Формат результата задавайте как у исходника, а если у модели такого размера нет, возьмите ту, у которой он есть.

Слева исходное вертикальное фото пачки «Зерно» на кухне с кружкой слева. Справа результат правки GPT-image в квадратном кадре: кружки нет, но кухня перестроена, растение стоит в другом месте, пачка шире.

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

Сценарий в n8n: от формы до Telegram

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

Снимок экрана редактора n8n: сценарий «Т3 прогон 3.5: фото товара». Слева узел «Форма: фото товара», за ним «Фото в base64» (Move File to Base64 String). Дальше две ветки: «Вырезать фон» → «В Telegram: без фона» и «Товар в сцене» → «В Telegram: сцена».

1. Форма. Узел Form Trigger работает как окошко приёма документов: n8n показывает простую веб-страницу с полем для файла, и сценарий запускается, когда файл отправлен. Назовите узел «Форма: фото товара» и заполните:

  • Form Title: Фото товара;
  • Field Label: photo, латиницей: под этим именем файл придёт в следующий узел;
  • Element Type: File;
  • Accepted File Types: .jpg,.jpeg.

Фото с телефона перед отправкой уменьшите примерно до 2000 точек по длинной стороне. Фото 4000×6000 (3,3 МБ) вырезка в прогоне не приняла: шлюз дважды ответил 500 Internal server error, а то же фото 2000×3000 прошло за 27,5 секунды. Если телефон сохраняет снимки в формате HEIC (так по умолчанию снимает iPhone), сохраните фото как JPG.

2. Фото в текст. Шлюз принимает фото только внутри запроса, длинной строкой из букв и цифр. Это как продиктовать картинку по телефону символами, а на том конце собрать её обратно. Такая запись называется base64. Узел Extract From File делает её сам: назовите его «Фото в base64», операция Move File to Base64 String, Input Binary Field photo, Destination Output Field photo.

3. Две ветки к шлюзу. От выхода «Фото в base64» протяните две связи к двум узлам HTTP Request, тогда фото уйдёт в обе ветки сразу. Оба узла настроены как «Картинка» в уроке 3.4: Method POST, Authentication Predefined Credential Type, тип OpenAI, те же учётные данные CloseRouter. URL у обоих https://api.closerouter.dev/v1/images/edits. В теле запроса фото стоит в поле image и начинается словами data:image/jpeg;base64,: так шлюз понимает, что дальше идёт фото в JPG, записанное строкой. Ссылку на фото вместо строки шлюз не берёт и отвечает «Remote media URLs are not allowed». Тело узла «Вырезать фон»:

{{ {
  "model": "recraft/remove-background",
  "image": "data:image/jpeg;base64," + $json.photo
} }}

Тело узла «Товар в сцене» (запрос замените приметами своего товара):

{{ {
  "model": "google/gemini-3.1-flash-image-preview",
  "aspect_ratio": "auto",
  "image": "data:image/jpeg;base64," + $json.photo,
  "prompt": "Поставь эту пачку кофе на деревянную полку в кофейне, рядом медная турка, тёплый свет. Пачку не меняй: те же надписи на наклейке, шрифт, прищепка, форма и размер."
} }}

У обоих узлов на вкладке Settings включите Retry On Fail (3 попытки через 5 секунд) и On Error = Continue, как в уроке 3.4, а в Options поставьте Timeout 300000 (5 минут). В прогоне через форму сцена получилась с повторной попытки, последняя заняла 20 секунд. Цена каждого запуска видна в выводе узла HTTP Request, в поле usage → cost_usd.

4. В Telegram. После каждой ветки поставьте узел Telegram с операцией Send Photo: Chat ID <ваш номер> (как его узнать, разобрано в уроке трека 2 «Бот в Telegram»), Photo {{ $json.data[0].url }}, в подписи напоминание, что сверить. PNG вырезки и JPG сцены Telegram по этим ссылкам принял. Если ветка не получила картинку, узел Telegram после неё, скорее всего, тоже упадёт: такой случай в прогоне не проверяли.

Тестовая форма работает, только пока сценарий её ждёт. Нажмите в редакторе Execute, выберите запуск от формы, и только потом отправляйте фото. В прогоне первое нажатие Submit показало «Problem submitting response», и сценарий перестал ждать. Снова Execute, отправить ещё раз, и всё прошло: от отправки формы до двух фото в Telegram 50 секунд, вырезка 0,011 $ и сцена 0,096 $.

Видео из фото: что мы проверили

14 октября мы искали видео из своего фото там, где можно платить из России без иностранной карты, и не получили его:

  • CloseRouter делает видео только по описанию словами, поле с фото отклоняет.
  • ГигаЧат на сайте ответил, что генерация видео временно недоступна; раздела «Видео» в меню не было.
  • Бот ГигаЧата в Telegram прислал инструкцию со ссылкой на этот раздел сайта; загрузить фото боту проверить не удалось.
  • Шедеврум на сайте делает видео только по описанию, своё фото загрузить нельзя.

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

Если не получилось

  • 400 «Unknown image operation field», поле prompt. Вы отправили запрос словами модели вырезки. recraft/remove-background принимает только поле image.
  • 400 «Invalid image operation input», поле /image. Фото ушло не строкой. Проверьте, что тело собрано выражением и image начинается с data:image/jpeg;base64,.
  • 500 «Internal server error» сразу, за несколько секунд. В прогоне так отвечала вырезка на фото 4000×6000. Уменьшите фото до ~2000 точек.
  • 504 через несколько минут. Модель не успела ответить. В прогоне деньги за такой ответ не списались. Запустите позже или смените модель.
  • После Submit ничего не происходит. Сценарий перестал ждать форму: снова Execute в редакторе и отправить фото ещё раз.
  • Хотите брать фото по ссылке с чужого сайта. В прогоне облако n8n скачать фото с Wikimedia не смогло: сайт ответил 429 «Too Many Requests». Свои фото надёжнее отправлять через форму.

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

АПоставить товар в сцену моделью Gemini и дописать в запрос «товар не меняй»
БСгенерировать товар заново по описанию через /v1/images/generations
ВВырезать фон моделью recraft/remove-background
ГТочечной правкой попросить «убери фон, остальное не трогай»

Подсказка: Вспомните ножницы и художника: кто из них перерисовывает и сам товар?

На курсе задания проверяются автоматически. Подобрать курс

Контрольный вопрос. Вы заказали сцену: «поставь кружку на светлый деревянный подоконник утром, за окном размытая зелень, кружку не меняй». Сверяете результат с оригиналом. Какие изменения вы не заказывали? Выберите все подходящие.

Выберите все верные варианты.

АКружка стоит на светлом деревянном подоконнике
БСиний ободок кружки стал толще и ярче
ВЗа стеклом появилась вторая такая же кружка
ГЗа окном размытая зелень
ДГоризонтальный кадр стал квадратным

Подсказка: Положите рядом текст заказа и каждый вариант: что из этого было в заказе, а что модель добавила сама?

На курсе задания проверяются автоматически. Подобрать курс

Контрольный вопрос. Точечная правка убрала кружку с вертикального фото пачки, но вернула квадратную картинку, и пачка на ней стала шире. Что исправить в первую очередь?

АДописать в запрос «не делай пачку шире»
БВзять самую дорогую модель из списка
ВЗадать формат результата как у исходника: у Gemini aspect_ratio: auto, у GPT-image size 1024×1536
ГУменьшить фото перед отправкой

Подсказка: Вспомните два запуска правки на пачке «Зерно»: в одном кадр вышел 2:3, в другом квадратный. Чем они отличались и сколько точек изменилось?

На курсе задания проверяются автоматически. Подобрать курс

Задание. МИССИЯ «Карточка без подмены». Сфотографируйте свой товар на телефон: товар целиком, с надписью или заметной деталью, если она есть, а рядом поставьте один лишний предмет (чашку, ручку). Сохраните фото как JPG и уменьшите примерно до 2000 точек по длинной стороне. Соберите сценарий из урока: форма → «Фото в base64» → «Вырезать фон» и «Товар в сцене» → Telegram. В запросе сцены замените пачку кофе на свой товар и перечислите его приметы. Отправьте фото через форму. Затем поменяйте запрос в ветке сцены на точечную правку «убери [лишний предмет], больше ничего не меняй» и отправьте фото ещё раз. Приложите: (1) исходное фото; (2) три результата: вырезку, сцену, точечную правку; (3) текст вашего запроса на сцену; (4) сверку сцены по семи пунктам урока, на каждый пункт «совпало» или «изменилось: что именно»; (5) журнал: модель, секунды и цена каждого запуска (поле usage → cost_usd в выводе HTTP Request); (6) одну-две фразы: какое фото вы поставите в карточку товара, какое в пост и почему, со ссылкой на пункты сверки; (7) снимок сценария. Принято, если: на вырезке товар совпадает с исходником; в запросе на сцену перечислены приметы именно вашего товара; сверка сцены заполнена по всем семи пунктам и в пунктах «изменилось» названо, что именно; на точечной правке лишний предмет убран, а товар и остальной кадр на месте; формат кадра у сцены и правки такой же, как у исходника, или это отмечено в сверке; журнал заполнен по всем запускам; выбор фото для карточки согласуется со сверкой (сцена с изменённым товаром в карточку не ставится); ключи и номер чата на снимках закрыты.

Подсказка: Если товара под рукой нет, возьмите любую вещь с надписью: банку, книгу, упаковку. Сверку делайте на экране с двумя окнами рядом, иначе мелкие изменения легко пропустить.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

На курсе задания проверяются автоматически. Подобрать курс

Что дальше

Фото товара приходит вам в Telegram на сверку, а в пост его пока ставите вы сами. В следующем уроке бот пришлёт черновик поста с картинкой из урока 3.4 и кнопками «Опубликовать» и «Отклонить», и в канал пост уйдёт только после вашего нажатия.

Итог:
• вырезка фона (recraft/remove-background, 0,011 $) не меняет товар, сцена перерисовывает кадр, точечная правка в прогоне меняла 2–3% кадра при правильном формате;
• в запросе на сцену перечисляйте приметы товара, а формат кадра задавайте полем: aspect_ratio auto у Gemini или size того же формата у GPT-image;
• в прогоне модели сохранили надписи на товаре, но меняли цвет и детали и дорисовывали лишнее, поэтому каждую сцену сверяйте по семи пунктам;
• в n8n фото приходит через форму, уменьшенное до ~2000 точек, переводится в base64 и уходит в /v1/images/edits, результат бот присылает в Telegram;
• видео из своего фото 14 октября не получили ни одним из проверенных путей.

← Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева