Photo → IA : comment IA détecte 17 risques dans une photo de 3 Mo
Vision multimodale, prompt structuré, ancrage INRS, retour structuré JSON. Démontage technique d'un pipeline d'IA QSE qui a analysé 847 photos terrain en production avec 91 % de précision sur la classification du risque principal — et ce qu'il a fallu éviter pour ne pas tomber dans le piège du « tout détecter ».
Quand on dit à un préventeur que l'IA va analyser les photos de signalement, il pense aussitôt à deux choses : (1) ChatGPT qui invente, (2) une appli qui détecte « il y a un humain dans la photo » et appelle ça de l'analyse de risque. Les deux peurs sont légitimes. Voici comment on les a contournées.
Le problème qu'on essayait de résoudre
Un opérateur prend une photo. Il la balance dans l'appli. Idéalement, on voudrait :
- Un résumé en 1 phrase de ce que la photo montre
- Une classification : risque, anomalie, non-conformité, situation normale ?
- Une cotation provisoire de gravité × probabilité (l'opérateur peut surcharger)
- Une liste structurée des éléments dangereux identifiés
- Une référence INRS/réglementaire pour orienter le traitement
Tout ça en moins de 3 secondes, sur une connexion 4G en zone industrielle, avec une photo de 3 Mo prise par un téléphone d'opérateur (qualité variable, cadrage approximatif, parfois floue).
Le pipeline en 4 étapes
1. Compression intelligente côté client
Une photo iPhone 14 fait ~3 Mo en JPG. Pour l'IA, on n'a pas besoin de cette résolution. On compresse en local sur le téléphone à 1024×1024 max, qualité 0.7, ce qui ramène la photo à ~280 Ko. Upload 4G : 0,8 s.
L'astuce technique : conserver les métadonnées EXIF (date, heure, GPS si autorisé, orientation). Ces infos sont utiles pour l'analyse contextuelle (« photo prise à 22h en zone extérieure → éclairage probablement insuffisant »).
2. Pré-traitement serveur
Sur le serveur, on fait 2 choses avant d'appeler l'IA :
- Détection NSFW + anti-abus via un modèle léger local (~50 ms). Si la photo est jugée hors-sujet (visage en gros plan, image générée, etc.), on rejette avant de payer un appel API.
- OCR rapide pour extraire les textes éventuels (panneaux, étiquettes EPI, codes machine). Ces textes enrichissent le contexte.
3. Appel à l'IA (vision multimodale)
On utilise le modèle IA pour ses capacités de raisonnement structuré. Le prompt est la pièce maîtresse — voici l'architecture (simplifiée) :
Tu es analyste QSE expérimenté en milieu industriel français.
Référentiels : Code du Travail, INRS ED 840, normes EN.
CONTEXTE :
- Site : {nom_site}
- UT : {unité_de_travail}
- OCR détecté : "{ocr_text}"
- Métadonnées EXIF : {date, heure, géoloc}
PHOTO : [image attachée]
ANALYSE EN 5 ÉTAPES :
1. Décris ce que tu vois (factuel, sans interpréter)
2. Liste les éléments dangereux observables
3. Classifie : RISQUE / ANOMALIE / NON-CONFORMITÉ / SITUATION NORMALE
4. Cote gravité (1-4) et probabilité (1-4) selon grille INRS
5. Référence INRS la plus pertinente (ex : ED 840, ED 6204…)
RÈGLES :
- Si tu hésites, indique-le explicitement (confidence < 70%)
- Ne JAMAIS halluciner de référence INRS — vérifie ton stock
- Si la photo est trop floue ou hors-sujet, dis-le clairement
La sortie est forcée en JSON via le mode structured output, ce qui élimine 100 % des bugs de parsing.
4. Validation et garde-fous
L'IA n'a jamais le dernier mot. Trois garde-fous :
- Confidence threshold : si la confidence retournée par L'IA est inférieure à 70 %, on affiche « Analyse incertaine — l'opérateur doit compléter »
- Liste blanche INRS : si L'IA cite une référence (ex : « ED 840 »), on vérifie qu'elle existe vraiment dans notre base. Sinon, on retire la mention.
- Veto humain : l'opérateur voit l'analyse pré-remplie et peut tout modifier en 1 tap. Le QSE peut, en aval, contester la cotation.
Les chiffres en production
Sur 847 photos analysées entre janvier et mars 2026 (4 sites pilotes) :
- Précision classification principale (risque/anomalie/non-conf) : 91 %
- Précision cotation gravité (à ±1 niveau près) : 84 %
- Latence moyenne : 2,4 s (compression incluse)
- Taux de modification par l'opérateur : 18 % (signe que l'IA est utile mais pas remplaçante)
Les 3 erreurs qu'on a évitées
Erreur 1 : croire que l'IA peut TOUT détecter
On a longtemps voulu détecter les 17 catégories de risques en parallèle (chute hauteur, électrique, chimique, etc.). Résultat : précision médiocre partout. La meilleure approche, c'est de laisser l'IA décider et de la laisser dire « je ne sais pas ». Une analyse incomplète mais correcte vaut mieux qu'une analyse complète mais inventée.
Erreur 2 : sur-prompter
Notre premier prompt faisait 4 000 tokens de règles et exemples. La précision plafonnait à 78 %. On a réduit à 800 tokens en gardant les règles structurelles + 3 exemples bien choisis. La précision est montée à 91 %. Le sur-promptage tue la performance.
Erreur 3 : ignorer le coût
Le contexte INRS commun à toutes les requêtes est mis en cache via le prompt caching de l'API IA, ce qui réduit fortement le volume de tokens facturés par rapport à un usage naïf.
Pourquoi cette IA et pas un autre modèle
On a testé GPT-4o, Gemini 2 Flash et le modèle IA sur le même benchmark interne (200 photos labelisées par 3 IPRP). Les chiffres :
- GPT-4o : 86 % précision · latence 1,9 s
- Gemini 2 Flash : 82 % précision · latence 1,1 s
- le modèle IA : 91 % précision · latence 2,4 s
IA gagne sur la fiabilité du raisonnement structuré, en particulier sur la cotation gravité × probabilité où les autres modèles ont tendance à sur-coter (ils voient un EPI manquant, ils mettent gravité 4). IA prend en compte le contexte (« opérateur en zone EPI, machine arrêtée, environnement sec ») et cote plus justement.
Ce que ça change pour le préventeur
Concrètement, sur un site de 80 personnes qui génère 100 photos signalements par mois :
- Sans IA : le QSE traite les 100 signalements à la main, ~20 minutes par signalement, soit 33 heures/mois
- Avec IA pré-remplie : 80 % des signalements arrivent déjà classés et cotés correctement. Le QSE valide en 2 minutes (160 min) et traite les 20 % qui demandent ajustement (15 min × 20 = 300 min). Total : ~7 heures/mois
Soit 26 heures de gain mensuel, qu'il peut consacrer à ce que l'IA ne fait pas : aller sur le terrain, animer les CSE, construire le PAPRIPACT, accompagner les opérateurs.
L'IA n'est pas là pour remplacer le QSE. Elle est là pour qu'il puisse faire son vrai métier.