Как превратить изображение в JSON-промпт и проверить результат
Практический кросс-модельный процесс: извлечь только видимые признаки, отдельно задать неизменные и редактируемые поля, создать варианты и проверить их по жёстким критериям.
Содержание

JSON-промпт по изображению полезен не как попытка угадать «тот самый исходный промпт», а как редактируемая спецификация внешнего вида. Рабочая схема выглядит так: зафиксировать только видимые признаки, отдельно указать, что нужно сохранить и что изменить, создать несколько вариантов, а затем сравнить их с референсом по одной и той же таблице.
JSON действительно удобно разделяет объект, композицию, свет, цвет, материалы и текст. Но по готовой картинке нельзя надёжно определить модель камеры, тип скрытого источника света, точное название шрифта, seed или формулировку автора. Поэтому цель процесса — не пиксельная копия, а управляемое визуальное сходство с понятными критериями приёмки.
Ниже — готовый мета-промпт, структура JSON, схема передачи задания генератору и способ проверки результата.
Что даёт этот подход
Он подходит, когда нужно:
- сохранить визуальную логику референса, меняя только выбранные детали;
- переносить одну спецификацию между разными моделями;
- понять, почему результат «похож по стилю, но не по устройству»;
- одинаково проверять фотографии, баннеры, постеры, интерфейсы и иллюстрации.
Не называйте такой JSON восстановленным исходным промптом. Итоговое изображение не хранит всю историю генерации, скрытые референсы, отклонённые инструкции и последующую обработку.
Хорошая спецификация должна быть:
- Наблюдаемой — каждое утверждение подтверждается пикселями.
- Редактируемой — важные параметры разнесены по полям.
- Проверяемой — каждому полю соответствует видимый критерий.
Что подготовить
Понадобятся:
- референс в максимально доступном разрешении и с правом на использование;
- модель с поддержкой анализа изображений;
- генератор или редактор изображений;
- место для хранения JSON, настроек, версии модели и результатов;
- короткое описание того, что нельзя менять и что менять разрешено.
Уберите рамки браузера, комментарии и лишние поля, если они не относятся к дизайну. Исходное соотношение сторон лучше сохранить до тех пор, пока его изменение не станет отдельной задачей.
В официальной документации OpenAI по изображениям и vision и Google по пониманию изображений описан анализ графических входов. Соответствующие генераторы также поддерживают редактирование или создание с опорой на референсы. Формат запросов зависит от провайдера, поэтому дальнейший процесс не привязан к конкретной модели.
Шаг 1. Получите JSON наблюдений
Отправьте референс вместе со следующим промптом. Он запрещает додумывать невидимые детали и требует null, когда информации недостаточно.
Ты анализируешь визуальные доказательства. Изучи приложенное изображение
и верни только один корректный JSON-объект.
Правила:
1. Описывай только то, что непосредственно видно.
2. Не угадывай исходный промпт, скрытые причины, точную камеру, дату,
невидимый тип освещения или нечитаемый текст.
3. Если значение нельзя определить по изображению, используй null.
4. Разноси разные визуальные параметры по отдельным полям.
5. Разборчивый текст переписывай дословно. Не восстанавливай пропущенные буквы.
6. Явно описывай отношения: слева/справа, выше/ниже, передний/задний план,
по центру/со смещением, относительный размер и перекрытие.
7. Перед ответом проверь поля на противоречия.
8. Используй конкретные полные предложения, а не набор прилагательных.
Структура:
{
"image_type": null,
"subject": null,
"action": null,
"location": null,
"composition": {
"orientation_and_aspect_ratio": null,
"framing_and_crop": null,
"subject_placement": null,
"spatial_relationships": null,
"negative_space": null
},
"lighting": {
"visible_direction": null,
"apparent_temperature": null,
"softness_and_contrast": null,
"highlights_reflections_shadows": null,
"unknown_causes": null
},
"color_palette": null,
"materials_and_textures": null,
"camera_and_focus": {
"viewpoint": null,
"perspective": null,
"depth_of_field": null,
"sharp_and_blurred_regions": null
},
"text_and_typography": {
"verbatim_text": [],
"placement_and_alignment": null,
"size_hierarchy": null,
"visible_lettering_style": null,
"unreadable_text": null
},
"style": null,
"mood_and_vibe": null,
"uncertainties": [],
"exclusions": null
}
Проверьте JSON до генерации
Подробный ответ ещё не означает точный. Проверьте четыре пункта:
- объект разбирается как JSON, без комментариев, хвостовых запятых и пояснений;
- обязательные поля присутствуют;
- неизвестное помечено как
nullили вынесено вuncertainties; - поля не противоречат друг другу.
В пользовательском примере, который послужил отправной точкой для этой статьи, видны две типичные ошибки. На фотографии холодильника корректно определены холодный свет внутри и тёплый свет снаружи, но слово «LED» уже является догадкой: по фото нельзя узнать технологию лампы. В разборе сайта заголовок правильно описан как выровненный слева, однако hero-блок одновременно назван и центрированным, и левосторонним. Первая ошибка — неподтверждённый факт, вторая — логическое противоречие. Оба случая должны останавливать процесс до генерации.
Шаг 2. Разделите параметры на три группы
Не переписывайте весь объект сразу. Сначала классифицируйте данные:
| Группа | Значение | Пример |
|---|---|---|
locked | обязательно сохранить | положение объекта, иерархия, формат кадра |
editable | изменить намеренно | цвет продукта, фон, заголовок |
unknown | нельзя подтвердить по картинке | объектив, тип лампы, точный шрифт |
Рядом с JSON наблюдений создайте управляющий объект:
{
"locked": [
"один главный объект в нижней левой трети",
"большое свободное пространство справа",
"мягкий боковой свет и низкий общий контраст",
"заголовок расположен над поясняющей строкой"
],
"editable": {
"subject": "заменить керамическую кружку прозрачной стеклянной бутылкой",
"accent_color": "заменить приглушённый красный на кобальтовый синий",
"verbatim_text": ["NORTH", "STILL WATER"]
},
"unknown": [
"модель камеры",
"точное фокусное расстояние",
"название семейства шрифта",
"физический тип источника света вне кадра"
],
"hard_constraints": [
"не добавлять другой текст",
"не менять точку съёмки",
"не добавлять объекты вне исходной компоновки"
]
}
Так генератору проще понять три разных действия: сохранить, изменить и не выдумывать.
Уберите конфликты
Прочитайте спецификацию как обычный текст:
- объект не может одновременно быть по центру и слева;
- описание кадрирования должно совпадать с пропорциями;
- мягкий рассеянный свет не сочетается с жёсткими тенями без дополнительного объяснения;
- поле «текста нет» не может соседствовать с обязательным заголовком;
- один объект не должен находиться в двух взаимоисключающих местах.
Модель не обязана разумно разрешать противоречия. Она может выбрать случайный вариант или проигнорировать оба.
Шаг 3. Создайте первую контролируемую серию
Передайте генератору JSON наблюдений и управляющий объект. Если инструмент умеет работать с референсом, приложите исходное изображение. Официальные руководства OpenAI по генерации изображений и Google по генерации изображений описывают image input и итеративное редактирование, но конкретные возможности нужно сверять для выбранной модели.
Используйте такой текст передачи:
Создай новое изображение по приложенному референсу и JSON-спецификации.
Приоритет:
1. Выполни hard_constraints.
2. Сохрани все пункты locked.
3. Примени только изменения из editable.
4. Не додумывай технические детали из unknown.
5. Сначала совпади по композиции и пространственным отношениям,
затем уточняй текстуры.
6. Текст в кавычках должен появиться ровно один раз, без дополнительных слов.
7. Не копируй водяные знаки, подписи и защищённые логотипы.
Верни одно изображение без пояснений.
Если модель плохо следует сырому JSON, преобразуйте те же данные в секции:
ОБЪЕКТ:
КОМПОЗИЦИЯ:
СВЕТ:
ЦВЕТ:
МАТЕРИАЛЫ:
ТЕКСТ:
СТИЛЬ:
СОХРАНИТЬ:
ИЗМЕНИТЬ:
НЕ ДОБАВЛЯТЬ:
JSON — удобный источник правды для человека и автоматизации, но не универсальный протокол всех генераторов.
Для первой серии:
- выставьте соотношение сторон референса;
- сохраните seed, если он доступен, но не переносите его ожидания между моделями;
- получите три-четыре варианта;
- запишите модель и версию, настройки, JSON, референс и результаты;
- назовите запуски, например
v01-a,v01-b,v01-c.
Признак успеха: хотя бы один вариант проходит все жёсткие критерии и не имеет серьёзной ошибки в наиболее важных полях.
Шаг 4. Проверьте результат по полям
Сравнивайте референс и результат в одинаковом масштабе. Для каждого пункта ставьте:
0— неверно или отсутствует;1— совпадает частично;2— приемлемо для задачи.
| Поле | Что сравнивать |
|---|---|
| Объект | количество, характерные признаки, силуэт, относительный размер |
| Композиция | положение, кроп, баланс, пустое пространство, перекрытия |
| Пространственные связи | слева/справа, выше/ниже, перед/за |
| Свет | направление, температура, мягкость, контраст, рисунок теней |
| Цвет | основные, вспомогательные и акцентные цвета и их зоны |
| Материалы | блеск, прозрачность, ткань, зерно, мех, металл, бумага |
| Текст | точная формулировка, количество, орфография, выравнивание, иерархия |
| Стиль и настроение | техника, обработка, визуальный характер, атмосфера |
Жёсткие критерии:
- в промпте нет неподтверждённых утверждений;
- внутри промпта нет противоречий;
- обязательный текст написан верно;
- ключевые пространственные отношения сохранены;
- не появились лишние логотипы, водяные знаки, объекты или слова.
Сумма баллов помогает сортировать варианты, но не отменяет жёсткие критерии. Красивый баннер с неправильным слоганом или зеркальной компоновкой всё равно непригоден.
Проверяйте от крупного к мелкому
Порядок:
- холст и композиция;
- количество, положение и масштаб объектов;
- свет и крупные цветовые массы;
- материалы и фактура;
- типографика и мелкие детали.
Нет смысла улучшать фактуру меха, если объект расположен не в той половине кадра.
Шаг 5. Вносите одно изменение за раз
Выберите лучший вариант как новую базу. Затем исправляйте только группу полей, связанную с главной ошибкой.
| Проблема | Что изменить | Что явно сохранить |
|---|---|---|
| Объект слишком крупный | положение и масштаб в composition | точку съёмки, свет, палитру |
| Макет поплыл | пространственные связи и пустое пространство | внешний вид объекта, материалы |
| Картинка слишком тёплая | температуру света и палитру | геометрию и текст |
| Продукт выглядит пластиковым | материал, блики и отражения | форму, положение, этикетку |
| Ошибка в надписи | дословный текст, количество, место | все не-текстовые области, если доступно редактирование |
| Стиль верный, идентичность потеряна | признаки объекта или силу ссылки | композицию и фон |
Формулировка для итерации: «Измени только текст заголовка. Сохрани кадрирование, точку съёмки, геометрию объектов, свет, цвета и остальной текст».
Официальные рекомендации по prompting также советуют отделять изменения от ограничений и уточнять по одному параметру. Тогда результат можно объяснить, а не воспринимать как новую случайную попытку.
Типовые проблемы
Ответ не является валидным JSON
Попросите исправить существующий объект без повторного анализа:
Исправь следующий ответ до валидного JSON. Сохрани все подтверждённые сведения.
Не добавляй новых визуальных утверждений. Верни только JSON.
Schema или structured output уменьшат синтаксические ошибки, но не проверят истинность описания.
Генератор игнорирует структуру
Разверните данные в подписанные секции. В конце повторите СОХРАНИТЬ, ИЗМЕНИТЬ и НЕ ДОБАВЛЯТЬ. Уберите второстепенные детали, если они заглушают ключевые ограничения.
Композиция постоянно меняется
Добавьте отношения вместо общих эпитетов:
- «центр объекта находится примерно на 30% ширины холста»;
- «левый край заголовка совпадает с левой направляющей изображения»;
- «продукт занимает нижнюю треть»;
- «правая половина в основном пустая».
Координаты помогают, но не гарантируют точность. Результат всё равно нужно проверять.
Текст остаётся неправильным
Дайте точную строку в кавычках, количество повторов, место и запрет на лишний текст. Если провайдер рекомендует сначала сформировать текст, а затем изображение, используйте этот порядок. Для юридически или коммерчески важной надписи предусмотрите финальную вёрстку в графическом редакторе. В текущей документации OpenAI прямо указаны возможные проблемы с точным размещением и читаемостью текста; Google также рекомендует text-first подход для надписей.
Персонаж или продукт меняется между версиями
Редактируйте лучший предыдущий результат вместо нового запуска с нуля. Кратко повторяйте идентификационные признаки, геометрию и этикетки. Делайте несколько запусков: официальные документы предупреждают о возможных колебаниях в повторяющихся персонажах, брендинге и точной композиции.
Запрос завершился ошибкой
Сохраните код ошибки и request ID. Сначала исправьте аутентификацию, квоту, формат входа или проблему модерации. Автоматически повторяйте с задержкой только временные rate-limit и server errors; пользовательскую ошибку запроса нужно изменить до повтора.
Сохраните запись о приёмке
{
"run_id": "v03-b",
"reference_file": "reference.png",
"analysis_json": "reference.v01.json",
"generator_and_version": "указать фактическое значение",
"settings": {
"aspect_ratio": "указать фактическое значение",
"quality": "указать фактическое значение",
"seed": null
},
"scores": {
"subject": 2,
"composition": 2,
"spatial_relations": 2,
"lighting": 1,
"color": 2,
"materials": 1,
"text": 2,
"style_and_mood": 2
},
"hard_gates": {
"unsupported_claims": false,
"contradictions": false,
"required_text_wrong": false,
"critical_layout_wrong": false,
"unrequested_elements": false
},
"decision": "accept",
"next_change": null
}
Так выбор «вариант B нравится больше» превращается в проверяемое решение. Запись также показывает, улучшила ли смена модели качество или лишь изменила стиль.
Частые вопросы
Можно ли восстановить точный исходный промпт?
Нет. Можно получить полезное описание видимых признаков. В исходном процессе могли быть скрытые изображения, seed, настройки, неисполненные команды, несколько редакций и постобработка.
Нужно ли заполнять поля камеры и света?
Описывайте видимый эффект: ракурс, перспективу, глубину резкости, мягкость теней, направление света и температуру. Не указывайте конкретное оборудование или невидимую технологию без отдельного подтверждённого источника.
Все ли генераторы принимают JSON?
Нет. Храните JSON как исходную спецификацию и преобразуйте его в тот формат, которому лучше следует выбранный инструмент.
Сколько итераций делать?
Начните с трёх-четырёх вариантов, выберите лучшую основу и исправляйте одну группу полей за круг. Остановитесь, когда все жёсткие критерии пройдены и дальнейшие изменения не улучшают практический результат.
Достаточно ли высокой общей похожести?
Нет. Метрика может скрыть неправильный текст, зеркальный макет, лишний объект или выдуманный логотип. Нужны проверки по полям.
Источники и уровень доказательности
- Тред Vox в X: пользовательский опыт, который подсказал идею раздельных полей; это не независимый бенчмарк.
- OpenAI: images and vision, image generation и image prompting: официальные сведения о графических входах, итеративном редактировании, структуре промптов, оценке и ограничениях.
- Google: image understanding и image generation: официальные сведения об анализе изображений, структурированном JSON, генерации по референсу, итерациях и ограничениях.
Главное здесь не название модели. Сохраняйте наблюдаемые факты в одной структуре, формулируйте изменения явно и принимайте результат по сравнению с референсом, а не по впечатлению от длинного промпта.