Amélioration de l’accessibilité numérique grâce à l’IA : Le cas des alternatives textuelles
Dans le cadre du développement du service Espace sur demande porté par l’incubateur des territoires de l’ANCT, nous avons fait auditer notre service concernant l’accessibilité numérique RGAA 4.1.
L’audit nous a permis d’identifier plusieurs manquements que nous nous efforçons de corriger, parmi lesquels nous retrouvons le cas d’étude de cet article : Critère 1.1 Chaque image porteuse d’information a-t-elle une alternative textuelle ?
En effet, dans le cadre de la mise à disposition d’espaces publics, nos collectivités participantes peuvent publier leurs espaces (salle des fêtes, salle de réunion, gymnase, etc…) en les accompagnant d’une ou plusieurs photographies.
Cependant, ces images contiennent des informations indispensables à la compréhension du contenu. Ce sont des images dites « porteuses d’informations » qui doivent donc avoir une alternative textuelle pour être restituées aux technologies d’assistance.
Expérimentation
Afin de répondre à ce besoin, nous avons étudié la capacité d’un modèle d’intelligence artificielle (LLM) à décrire de façon textuelle des images types (trouvées dans différentes pages d’espaces).
Voici une image d’exemple :
Une alternative textuelle pour cette image pourrait être « Salle de réunion avec grande table, vidéo projecteur, ordinateur central. ».
En effet, il est conseillé de ne pas dépasser 80 caractères dans un champ d’alternative textuelle car les plages brailles utilisées par les utilisateurs en situation de handicap visuel disposent en moyenne de 40 à 80 caractères.
Nous avons donc expérimenté avec un modèle d’intelligence artificielle doté d’analyse d’image fourni par Mistral : Mistral-Small (la raison de ce choix sera détaillée plus loin dans l’article).
Première étape : le "prompt".
Le "prompt" correspond aux instructions que nous donnons au modèle IA pour qu’il puisse nous produire une description en moins de 80 caractères. Après quelques tentatives manuelles pour trouver la bonne recette, nous avons simplement demandé au modèle de nous fournir un "prompt" adapté pour obtenir le résultat escompté :
Le "prompt" ainsi obtenu est le suivant :
« Décris cette image en moins de 80 caractères en mettant l’accent sur les équipements, meubles et matériels visibles. Utilise un style concis et factuel, sans adjectifs superflus. Exemple de format : "Salle de réunion avec table, chaises, vidéo projecteur et ordinateur". »
Deuxième étape : créer un agent spécialisé
Maintenant que nous avons la bonne recette, nous pouvons la donner à un agent. Un agent est une version personnalisée du modèle d’intelligence artificielle qui exécutera toujours les mêmes instructions. Mistral propose justement un studio de création d’agent :
Il suffit de sélectionner le modèle qui nous intéresse, de choisir le format de réponse (dans notre cas, du texte) et enfin de lui fournir les instructions (le "prompt" précédent).
Troisième étape : tester les instructions
Une fois l’agent créé, nous pouvons le tester directement depuis le chat :
Le résultat était à la hauteur de nos attentes, nous avons été surpris par la capacité du modèle à détecter des objets précis comme « livres et porte-manteau » ou même « jouets pour enfants », ainsi que sa capacité à lire les textes présents sur les facades ou portes.
Mise en production
Si nous avons choisi Mistral, c’est grâce à la mise à disposition gratuite à tous les agents de la fonction publique de l’État, de plusieurs modèle d’intelligence artificielle par l’API Albert. En effet Albert dispose du modèle « mistralai/Mistral-Small-3.2-24B-Instruct-2506 » que nous avons expérimenté plus haut.
Nous avons donc contacté les équipes d’Albert afin d’obtenir nos clés d’API et nous avons ainsi pu développer le workflow suivant :
- Lorsqu’un utilisateur dépose une image d’un espace, nous redimensionnons les images (à des fins de performance);
- Puis nous envoyons une image de taille réduite à l’API d’Albert avec le "prompt" précédent;
- Enfin nous stockons le résultat produit dans un champ associé à l’image dans notre base de données, qui sera ensuite utilisé par le client frontend.
Nous avons utilisé Symfony AI pour effectuer les appels à Albert avec la configuration suivante (/api/packages/config/ai.yaml):
ai:
agent:
image_alt_generator:
platform: "ai.platform.albert"
model: "mistralai/Mistral-Small-3.2-24B-Instruct-2506"
prompt: |
Décris cette image en moins de 80 caractères en mettant l’accent sur les équipements, meubles et matériels visibles.
Utilise un style concis et factuel, sans adjectifs superflus.
Exemple de format : "Salle de réunion avec table, chaises, vidéo projecteur et ordinateur".
Vous pouvez consulter le code source de notre implémentation sur Gitlab.
Conclusion
L’intégration a été fluide, les équipes d’Albert ont été très réactives et l’API ne nous a montré aucune faiblesse depuis le début de l’expérimentation. Nous avons généré la description d’environ 6000 images d’espaces et les résultats ont été supérieurs à ce que nous attendions.
Nous espérons que cet article vous aura donné de l’inspiration pour répondre à cette problématique d’accessibilité numérique ou qu’il vous inspirera sur l'expérimentation avec les IA génératives.
Bonus
Constatant la capacité de lecture des textes compris dans l’image, je me suis amusé à confronter notre modèle à une injection d’instruction (prompt injection) pour voir si notre workflow était potentiellement vulnérable à ce vecteur d’attaque. Voici l’image que j’ai généré pour l’occasion et que j’utilise comme s’il s’agissait d’une image d’espace :
Le résultat a bien sûr été déjoué par notre modèle d’intelligence artificielle :
On obtient également via l’API Albert :
« Image contenant du texte avec une tentative de script malveillant »
Merci pour votre lecture et à bientôt !
Auteur : Jonathan Platteau pour Espace sur demande