Lecture automatisée de cartes de mutuelle
Comment éviter à un professionnel de santé de recopier manuellement les informations présentes sur une carte de mutuelle ?
Dans le cadre de ma formation au CESI, nous avons travaillé sur un cas inspiré d’une problématique professionnelle réelle : concevoir un prototype capable d’extraire les principales informations d’une carte de mutuelle et de lire son DataMatrix.
Le projet a été réalisé par une équipe de quatre personnes composée d’un chef de projet et de trois développeurs. J’intervenais comme développeur, avec une responsabilité particulière sur le paramétrage de l’OCR.
Le besoin
L’objectif était de récupérer automatiquement plusieurs informations présentes sur les cartes :
- le nom de la mutuelle ;
- le numéro AMC ;
- les types de conventions ;
- le critère secondaire de routage ;
- le numéro d’adhérent ;
- le contenu du DataMatrix utilisé pour accéder aux services de l’Annuaire AMC.
Le projet restait un prototype pédagogique : il ne devait pas être déployé en production, mais montrer qu’une première automatisation était possible à partir de scans réels.

Notre approche
Nous avons choisi de développer une application desktop en C#/WPF.
Ce choix permettait de conserver une interface simple tout en envisageant, à terme, une connexion directe avec le scanner d’un professionnel de santé.
Deux bibliothèques étaient utilisées :
- Tesseract OCR, pour reconnaître le texte contenu dans l’image ;
- DataMatrix.Net, pour décoder le DataMatrix présent sur la carte.
L’objectif étant une transmission de ces informations à L’annuaire des complémentaires santé, nous avons choisi de serialiser les données au format JSON et d’en proposer un export pour ce prototype.
Des profils adaptés aux cartes disponibles
Nous disposions d’un peu plus d’une dizaine de scans, correspondant à environ cinq ou six mutuelles différentes.
À partir de ces exemples, nous avons défini plusieurs profils directement dans le code. Chaque profil indiquait les zones de l’image dans lesquelles rechercher les informations et l’emplacement probable du DataMatrix.
L’utilisateur devait sélectionner manuellement le profil correspondant à la carte affichée.
Un profil par défaut permettait également de lancer la reconnaissance sur une zone plus large lorsqu’aucun profil ne convenait ou lorsque la carte était mal positionnée.
Cette solution était simple, mais adaptée au temps disponible et au faible nombre de modèles de cartes utilisés pendant le projet.
Gérer les limites de l’OCR
Les résultats étaient globalement corrects sur les scans utilisés pour les tests, mais certaines cartes restaient plus difficiles à lire.
Les principales difficultés venaient :
- des petites tailles de police ;
- des scans légèrement inclinés ;
- des caractères parasites produits par l’OCR.
Nous avons ajouté quelques règles de nettoyage basées sur des expressions régulières.
Lorsque le résultat semblait douteux, le champ concerné était affiché en rouge afin d’indiquer qu’une vérification manuelle était nécessaire.
L’image de la carte restait visible dans l’interface pour permettre à l’utilisateur de comparer les données extraites avec le document original et de les corriger si besoin.
Ce que j’en retiens
Ce projet m’a permis de découvrir concrètement les contraintes d’un moteur OCR.
La difficulté ne réside pas seulement dans le choix de la bibliothèque, mais aussi dans la préparation des zones de recherche, la qualité des documents, le nettoyage des résultats et la manière de présenter les incertitudes à l’utilisateur.
J’ai également apprécié le compromis retenu entre automatisation et validation humaine : l’application proposait une première extraction, mais laissait toujours la possibilité de vérifier et corriger les données.
Pistes d’amélioration
Avec davantage de temps, plusieurs évolutions auraient été intéressantes :
- lancer directement le scan depuis l’application ;
- afficher les zones de détection sur l’image ;
- permettre leur déplacement depuis l’interface ;
- externaliser les profils pour pouvoir en ajouter sans modifier le code ;
- détecter automatiquement le profil de la mutuelle ;
- enregistrer les données dans une base de données;
commentaires fournis par Disqus