Transformer une image en prompt JSON et vérifier le résultat
Une méthode indépendante du modèle pour extraire uniquement les éléments visibles, séparer le fixe du modifiable, générer des variantes et valider le résultat avec des critères explicites.
Sommaire

Un prompt JSON obtenu à partir d’une image est surtout une spécification visuelle modifiable. Il ne permet pas de retrouver un hypothétique « prompt secret » à l’origine de l’image. La méthode utile consiste à décrire uniquement ce qui est visible, à séparer ce qui doit rester identique de ce qui doit changer, à produire plusieurs variantes, puis à les comparer à la référence avec la même grille.
Le JSON facilite la séparation du sujet, de la composition, de la lumière, des couleurs, des matières et du texte. Mais les pixels ne révèlent ni le modèle exact de l’appareil, ni la technologie d’une source lumineuse hors champ, ni le nom précis d’une police, ni la seed, ni les mots employés par le créateur. Le but est donc une ressemblance contrôlable et vérifiable, pas une copie pixel par pixel.
Vous trouverez ci-dessous un méta-prompt prêt à l’emploi, un schéma JSON, une méthode d’édition et un processus d’acceptation.
Ce que ce workflow permet de faire
Utilisez-le pour :
- conserver la logique visuelle d’une référence tout en modifiant certains éléments ;
- réutiliser la même spécification avec plusieurs modèles ;
- comprendre pourquoi une sortie reprend le style sans respecter la mise en page ;
- contrôler de façon répétable des photos, publicités, affiches, interfaces et illustrations.
Ne présentez pas le JSON comme le prompt original retrouvé. Une image finale ne contient pas tout l’historique de génération, les références cachées, les instructions ignorées ou les retouches.
Une bonne spécification est :
- Observable : chaque affirmation est appuyée par les pixels.
- Modifiable : les dimensions visuelles importantes ont des champs séparés.
- Vérifiable : chaque champ correspond à un élément contrôlable dans la sortie.
Ce qu’il faut préparer
Prévoyez :
- la référence dans la meilleure résolution que vous êtes autorisé à utiliser ;
- un modèle capable d’analyser une image ;
- un générateur ou éditeur d’images ;
- un emplacement pour sauvegarder JSON, version du modèle, réglages et sorties ;
- une phrase claire indiquant ce qui doit rester et ce qui peut changer.
Recadrez l’interface du navigateur, les commentaires et les bordures étrangères au design. Conservez le ratio d’origine, sauf si sa modification fait partie du travail.
La documentation officielle OpenAI sur les images et la vision et celle de Google sur la compréhension d’images décrivent l’analyse d’entrées visuelles. Leurs outils de génération prennent aussi en charge des références ou des modifications successives. Le format variant selon le fournisseur, la méthode ci-dessous reste indépendante du modèle.
Étape 1 : extraire un JSON d’observation
Envoyez l’image avec ce prompt. Il empêche de transformer des suppositions invisibles en faits.
Agis comme un analyste de preuves visuelles. Examine l’image de référence
jointe et renvoie uniquement un objet JSON valide.
Règles :
1. Décris uniquement des éléments directement visibles.
2. Ne déduis pas les causes cachées, le prompt original, le matériel photo exact,
une date exacte, la technologie d’un éclairage invisible ou un texte illisible.
3. Utilise null lorsqu’une valeur ne peut pas être déterminée sur l’image.
4. Sépare les différentes dimensions visuelles dans des champs distincts.
5. Transcris exactement le texte clairement lisible ; n’invente pas les lettres.
6. Décris les relations spatiales : gauche/droite, haut/bas, premier plan/fond,
centré/décalé, taille relative et chevauchement.
7. Avant de répondre, vérifie les contradictions entre champs.
8. Utilise des phrases précises, pas une liste vague d’adjectifs.
Renvoie cette structure :
{
"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
}
Valider le JSON avant de générer
Vérifiez quatre points :
- l’objet est analysable comme JSON, sans commentaires, virgules finales ni explication ;
- les champs nécessaires sont présents ;
- les inconnues sont indiquées par
nullou dansuncertainties; - les champs ne se contredisent pas.
Les exemples du retour utilisateur à l’origine de ce guide illustrent deux erreurs fréquentes. Sur la photo d’un chat dans un réfrigérateur, on voit une lumière froide à l’intérieur et une lumière chaude dans la cuisine, mais on ne peut pas affirmer que l’ampoule est une LED. Dans la capture d’un site, l’analyse identifie correctement un titre aligné à gauche tout en qualifiant le hero de centré. Le premier cas est une inférence sans preuve ; le second, une contradiction interne. Les deux doivent bloquer la génération.
Étape 2 : séparer fixe, modifiable et inconnu
Classez les informations avant de tout réécrire :
| État | Signification | Exemple |
|---|---|---|
locked | doit être conservé | position du sujet, hiérarchie, ratio |
editable | sera modifié volontairement | couleur, décor, titre |
unknown | non démontré par l’image | objectif, type de lumière, police exacte |
Ajoutez un objet de contrôle à côté du JSON :
{
"locked": [
"un sujet principal dans le tiers inférieur gauche",
"un grand espace négatif à droite",
"une lumière latérale douce et un contraste général faible",
"le titre placé au-dessus de la ligne secondaire"
],
"editable": {
"subject": "remplacer la tasse en céramique par une bouteille en verre transparent",
"accent_color": "remplacer le rouge sourd par un bleu cobalt",
"verbatim_text": ["NORTH", "STILL WATER"]
},
"unknown": [
"modèle de l’appareil",
"focale exacte",
"famille typographique exacte",
"type physique de la source hors champ"
],
"hard_constraints": [
"ne pas ajouter d’autre texte",
"ne pas changer le point de vue",
"ne pas ajouter d’objet hors de la composition de référence"
]
}
Cette séparation transmet trois ordres différents : conserver, modifier et ne pas inventer.
Supprimer les conflits
Relisez la spécification en langage courant :
- le sujet ne peut pas être simultanément centré et aligné à gauche ;
- le cadrage doit être cohérent avec le ratio ;
- une lumière douce n’implique pas des ombres dures sans autre source visible ;
- « aucun texte » ne peut pas coexister avec un titre obligatoire ;
- un même objet ne peut pas occuper deux positions incompatibles.
Le générateur ne résoudra pas forcément la contradiction. Il peut choisir une option au hasard, les mélanger ou ignorer les deux.
Étape 3 : produire un premier lot contrôlé
Transmettez le JSON d’observation et l’objet de contrôle au générateur. Ajoutez la référence si l’outil accepte l’image-to-image ou l’édition. Les guides officiels OpenAI et Google documentent des entrées visuelles et des éditions itératives, mais les fonctions exactes dépendent du modèle.
Utilisez ce message :
Crée une nouvelle image à partir de la référence jointe et de la spécification JSON.
Priorités :
1. Respecter hard_constraints.
2. Conserver tous les éléments de locked.
3. Appliquer uniquement les changements de editable.
4. Laisser unknown inconnu ; ne pas inventer de détail technique.
5. Faire correspondre d’abord la composition et les relations spatiales,
puis les textures.
6. Afficher le texte entre guillemets exactement une fois, sans mot supplémentaire.
7. Ne pas copier de filigrane, de signature ni de logo protégé.
Renvoyer une seule image, sans expliquer le prompt.
Si le JSON brut est mal suivi, présentez les mêmes informations en sections :
SUJET :
COMPOSITION :
LUMIÈRE :
COULEUR :
MATIÈRES :
TEXTE :
STYLE :
CONSERVER :
MODIFIER :
NE PAS AJOUTER :
Le JSON est la source éditable de votre spécification, pas un protocole universel pour tous les modèles.
Pour le premier lot :
- utilisez le ratio de la référence ;
- notez la seed si elle existe, sans supposer qu’elle soit portable ;
- générez trois ou quatre variantes ;
- sauvegardez JSON, référence, modèle et version, réglages et sorties ;
- nommez les exécutions
v01-a,v01-b,v01-c.
Le signal de réussite n’est pas « l’image est jolie ». Il faut qu’au moins une variante passe tous les critères obligatoires sans erreur majeure dans les champs prioritaires.
Étape 4 : noter la sortie face à la référence
Comparez les images à la même taille. Attribuez :
0: faux ou absent ;1: partiellement correct ;2: acceptable pour l’usage prévu.
| Champ | Éléments à comparer |
|---|---|
| Sujet | nombre, traits distinctifs, silhouette, taille relative |
| Composition | position, cadrage, équilibre, vide, chevauchement |
| Relations spatiales | gauche/droite, haut/bas, devant/derrière |
| Lumière | direction, température, douceur, contraste, ombres |
| Couleur | couleurs principales, secondaires, d’accent et zones |
| Matières | brillance, transparence, tissu, grain, fourrure, métal, papier |
| Texte | formulation exacte, nombre, orthographe, alignement, hiérarchie |
| Style et ambiance | médium, finition, traitement, atmosphère |
Critères obligatoires :
- aucune affirmation invisible ou sans preuve ;
- aucune contradiction interne ;
- texte obligatoire correct ;
- relations spatiales critiques conservées ;
- aucun logo, filigrane, objet ou texte non demandé.
Le total sert à classer les variantes mais ne compense pas un critère obligatoire manqué. Une belle image avec le mauvais slogan ou une mise en page inversée reste un échec.
Contrôler du général au détail
Ordre conseillé :
- canevas et composition ;
- nombre, position et échelle des sujets ;
- lumière et grandes masses colorées ;
- matières et textures ;
- typographie et petits détails.
Il est inutile d’affiner une texture si le sujet se trouve du mauvais côté.
Étape 5 : modifier un seul groupe à la fois
Choisissez la meilleure variante comme nouvelle base. Corrigez uniquement le groupe lié à l’erreur principale.
| Problème | Modifier | Conserver explicitement |
|---|---|---|
| Sujet trop grand | position et échelle dans composition | point de vue, lumière, palette |
| Mise en page décalée | relations spatiales et espace négatif | apparence du sujet, matières |
| Image trop chaude | température et palette | géométrie et texte |
| Produit trop plastique | matière, reflets, brillance | forme, position, étiquette |
| Texte incorrect | texte exact, nombre, position | tous les pixels non textuels si possible |
| Style correct, identité perdue | traits du sujet ou force de référence | composition et fond |
Écrivez par exemple : « Modifier uniquement le titre. Conserver le cadrage, le point de vue, la géométrie, la lumière, les couleurs et tous les autres textes ».
Les guides officiels recommandent également de séparer les modifications des contraintes de conservation et d’affiner un seul élément par itération. Chaque résultat devient alors explicable.
Échecs courants et récupération
La sortie n’est pas un JSON valide
Demandez de réparer l’objet existant :
Répare le contenu suivant en JSON valide. Conserve tout ce qui est appuyé
par l’image. N’ajoute aucune nouvelle affirmation visuelle. Renvoie uniquement JSON.
Un schéma structuré réduit les erreurs de syntaxe, mais ne prouve pas la véracité de l’analyse.
Le générateur ignore les champs
Transformez le JSON en sections de langage naturel. Placez CONSERVER, MODIFIER et NE PAS AJOUTER à la fin. Supprimez les détails secondaires qui masquent les contraintes essentielles.
La composition dérive
Ajoutez des relations concrètes :
- « le centre du sujet se situe vers 30 % de la largeur » ;
- « le bord gauche du titre suit le même guide que l’image » ;
- « le produit occupe le tiers inférieur » ;
- « la moitié droite reste presque vide ».
Les coordonnées orientent sans garantir. Vérifiez la sortie réelle.
Le texte exact est faux
Mettez la chaîne entre guillemets, indiquez son nombre d’occurrences et sa position, puis interdisez le texte supplémentaire. Suivez un workflow text-first si le fournisseur le recommande. Quand l’exactitude est impérative, prévoyez une composition finale dans un outil de design. La documentation actuelle d’OpenAI reconnaît encore des limites de placement et de lisibilité du texte ; Google recommande aussi de préparer d’abord le texte pour les images typographiques.
Le personnage ou le produit change
Utilisez la meilleure sortie précédente comme entrée d’édition au lieu de repartir de zéro. Répétez un court bloc d’identité, de géométrie et d’étiquettes. Comparez plusieurs exécutions, car la cohérence des personnages, marques et mises en page précises peut encore varier.
La requête échoue avant l’image
Enregistrez l’erreur et le request ID. Corrigez d’abord authentification, quota, format d’entrée ou modération. Réessayez avec délai uniquement les erreurs temporaires de limite ou de serveur ; modifiez d’abord une requête corrigeable par l’utilisateur.
Sauvegarder une fiche d’acceptation
{
"run_id": "v03-b",
"reference_file": "reference.png",
"analysis_json": "reference.v01.json",
"generator_and_version": "noter-la-valeur-réelle",
"settings": {
"aspect_ratio": "noter-la-valeur-réelle",
"quality": "noter-la-valeur-réelle",
"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
}
Ainsi, « je préfère B » devient une décision traçable. La fiche montre aussi si un changement de modèle a réellement amélioré la qualité ou seulement modifié le style.
Questions fréquentes
Peut-on retrouver exactement le prompt original ?
Non. On peut produire une description utile des éléments visibles. Le processus initial peut avoir inclus des références cachées, seeds, réglages, instructions écartées, plusieurs retouches et de la postproduction.
Que mettre dans les champs caméra et lumière ?
Décrivez les effets visibles : point de vue, perspective, profondeur de champ, douceur des ombres, direction apparente et température. N’affirmez pas un équipement exact ni une technologie invisible sans autre source vérifiée.
Tous les générateurs acceptent-ils le JSON ?
Non. Conservez le JSON comme spécification maîtresse et transformez-le vers le format que votre outil suit le mieux.
Combien d’itérations faut-il ?
Commencez par trois ou quatre variantes, choisissez la meilleure base et modifiez un groupe par tour. Arrêtez-vous lorsque tous les critères obligatoires passent et que de nouvelles modifications n’améliorent plus l’usage réel.
Un score de similarité élevé suffit-il ?
Non. Il peut masquer un texte faux, une mise en page inversée, un objet supplémentaire ou un logo inventé. Le contrôle champ par champ reste nécessaire.
Sources et niveau de preuve
- Thread de Vox sur X : pratique rapportée par un utilisateur qui a inspiré la séparation par champs ; ce n’est pas un benchmark indépendant.
- OpenAI : images et vision, génération et prompting d’images : documentation officielle sur les entrées, l’édition, la structure, l’évaluation et les limites.
- Google : compréhension d’images et génération : documentation officielle sur l’analyse, le JSON structuré, les références, l’itération et les limites.
Le principe est indépendant du fournisseur : conservez les faits observables dans une structure, formulez clairement les changements et acceptez la sortie en la comparant à la référence.