Toute la recherche
Corpus construit pour l'occasion

200 documents médicaux français, dont deux tiers de scans

Les jeux de données publics sont du texte brut ; le problème d'un hôpital, c'est un Cerfa scanné avec de l'écriture manuscrite en travers. Nous avons donc construit le corpus : vingt patients, dix documents chacun, chaque identifiant annoté jusqu'à son cadre sur la page, et deux tiers rescannés avec inclinaison, bruit et un tampon sur le texte. Puis nous avons envoyé les 200 dans l'API en une seule tâche et noté ce qui est revenu.

Construit et exécuté par Hexagone AI, septembre 2026. Contenu clinique issu de PARHAF, Health Data Hub / AP-HP, CC BY 4.0 ; tous les identifiants y sont inventés.

Un corpus qui n'existait pas

Les jeux de données publics sur les données personnelles sont du texte brut. Le problème d'un hôpital, c'est un Cerfa scanné avec l'écriture d'un médecin en travers, un tampon sur le nom du patient et un en-tête de fax sur le côté. Nous avons donc fabriqué ces documents, à partir de comptes rendus rédigés par des cliniciens, et annoté chaque identifiant jusqu'à sa position sur la page.

Regarder les documents
200documentsdix par patient, vingt patients
246pageschaque caractère localisé
6 718identifiants annotésavec leur cadre sur la page
47au niveau le plus difficilephotocopié, de travers, manuscrit
Les trois niveaux de difficulté
NiveauDocsLivré sous forme de
facile67PDF numérique, saisi, propre
moyen86scan à 200 dpi, écriture soignée
difficile47photocopie ou fax, écriture hâtive, tamponné

Récupérer le jeu de données

Tous les documents, et pour chacun une vérité terrain JSON donnant à chaque identifiant son étiquette, son propriétaire et son cadre sur la page. Le contenu clinique est sous CC BY 4.0 (PARHAF) ; tout ce qui identifie y est inventé.

Télécharger medical-dataset-v1
Comment le corpus a été construit, en quatre étapes
  1. 1Partir d'écrits cliniques réelsPARHAF (Health Data Hub / AP-HP, CC BY 4.0) réunit des comptes rendus fictifs rédigés par des cliniciens. Une langue clinique réelle, sans mise en page et presque sans identifiants.
  2. 2Fabriquer une identité cohérenteChaque patient reçoit un nom, une adresse, un NIR, un IPP et une équipe médicale, identiques sur ses dix documents. Les numéros de téléphone proviennent des plages réservées à la fiction par l'ARCEP ; les identifiants à clé de contrôle sont valides mais inventés.
  3. 3Mettre en page comme en vraiDes Cerfa fidèles, des ordonnances sur bloc, des tableaux de biologie, des lettres d'adressage. Le générateur sait où il a écrit chaque valeur, ce qui rend possible le cadre sur la page.
  4. 4Puis l'abîmer, délibérémentDeux tiers sont rescannés en images : écriture manuscrite avec du tremblé lettre à lettre, jusqu'à 2,8 degrés d'inclinaison, bruit JPEG, photocopie en niveaux de gris, un tampon par-dessus le texte. La couche texte a disparu ; il reste ce que donnerait un scanner.

Ce qui est revenu

Deux questions, tenues séparées. L'API a-t-elle signalé une valeur couvrant chaque identifiant annoté, ce à quoi répond son propre registre d'audit. Et la valeur d'origine reste-t-elle lisible dans le document livré, ce à quoi seul le PDF livré répond. La seconde est celle qui compte, et elle se mesure sur le fichier, pas sur la déclaration.

98,6 %des identifiants directs trouvésnoms, adresses, NIR, IPP, RPPS, FINESS
0,0 %encore lisibles ensuite2 sur 5 678 identifiants
95,6 %sur les documents les plus difficilesphotocopiés, de travers, manuscrits

Ce qui a été trouvé, par type d'identifiant

Rappel par type d'identifiant
IdentifiantSur les pagesTrouvésEncore lisibles
Noms2 38599,1 %aucun
Adresses1 37098,6 %aucun
Dates1 25199,4 %aucun
Numéros de santé et administratifs72997,3 %aucun
Organisations31999,4 %aucun
Coordonnées54997,6 %aucun
Voir les 23 étiquettes

L'âge y obtient un mauvais score, délibérément. C'est un quasi-identifiant que le jeu de données annote sans exiger son retrait, et la politique par défaut le conserve : il est rapporté plutôt que discrètement exclu pour embellir la moyenne.

Rappel pour chaque étiquette
IdentifiantSur les pagesTrouvésEncore lisibles
NomSURNAME1 19998,8 %—
PrénomGIVEN_NAME1 18699,3 %—
DateDATE83899,5 %—
VilleCITY54998,9 %—
Code postalPOSTAL_CODE40199,0 %—
RueSTREET36097,5 %—
TéléphonePHONE32396,0 %—
ÉtablissementESTABLISHMENT30799,4 %—
Date de naissanceBIRTH_DATE28699,7 %—
Identifiant patient (IPP)IPP22598,7 %—
Identifiant médecin (RPPS)RPPS18298,9 %—
HeureTIME12798,4 %—
URLURL106100,0 %—
Numéro d'établissement (FINESS)FINESS10186,1 %—
Identité nationale de santé (INS)INS10199,0 %—
ÂgeAGE7528,0 %—
FaxFAX60100,0 %—
CourrielEMAIL60100,0 %—
Numéro de séjour (NDA)NDA60100,0 %—
Lieu de naissanceBIRTH_PLACE60100,0 %—
Numéro d'assuréAM_NUMBER60100,0 %—
Référence laboratoireLAB_ID40100,0 %2
EmployeurEMPLOYER12100,0 %—

Et selon la difficulté de lecture de la page

Rappel et fuites par difficulté
DifficultéIdentifiantsTrouvésEncore lisibles après
facilenumérique, saisi2 18598,9 %aucun
moyenscanné, manuscrit2 54099,6 %aucun
difficilephotocopié, tamponné95395,6 %2 · 0,2 %

Les documents les plus difficiles trouvent le moins d'identifiants et en laissent fuir le moins, et ces deux faits ont la même cause. Une page photocopiée passe par l'OCR, et là où l'OCR lit mal une valeur le pipeline ne la voit jamais : c'est un défaut de détection. Mais la lecture erronée n'est pas la valeur non plus, et la page livrée est reconstruite à partir de ce que l'OCR a lu : l'original y survit donc rarement. Un faible taux de fuite sur un scan est ainsi une affirmation plus faible que le même taux sur un PDF numérique, et cela mérite d'être dit.

Regarder les documents

Chaque document de l'exécution, l'original et ce que l'API a livré, avec les annotations du jeu de données à leur place. Faites glisser la poignée sur la page pour voir l'un devenir l'autre. Les chiffres ci-dessus sont une moyenne de tout ceci ; voici comment en vérifier un.

0 documents
  • Aucun résultat.

Les images de page sont des rendus des PDF réels, ceux que le jeu de données fournit et ceux que l'API a renvoyés. Rien n'est ressaisi d'un côté ou de l'autre.

Comment lire ces résultats

Quels documents sont notés

Les 200 : tous les documents ont été envoyés, y compris ceux qui contiennent un exposant, et tous ont été livrés.

Ce qui compte comme trouvé

L'API a signalé une valeur couvrant celle qui est annotée. Un nom complet signalé une fois répond à deux étiquettes, et une valeur légèrement mal lue par l'OCR compte quand même : un benchmark qui punit un scanner d'être un scanner mesure le scanner.

Ce qui compte comme une fuite

La valeur d'origine est encore dans le texte du PDF livré, sur une frontière de mot, ou ses chiffres y figurent encore avec seulement des séparateurs entre eux. Lu depuis le fichier, jamais depuis le registre d'audit.

Ce qui n'a pas été mesuré

La ré-identification. Tous les identifiants peuvent avoir disparu, un diagnostic rare dans une petite ville désigne encore quelqu'un ; c'est une autre étude et cette page ne la revendique pas. L'écriture manuscrite est en outre synthétique : convaincante, mais ce n'est pas une vraie main.

Testez-le sur vos propres documents.

Un benchmark, ce sont les données de quelqu'un d'autre. Une semaine gratuite, sans carte bancaire, et les fichiers ne quittent jamais votre machine : vous ne risquez rien à vérifier vous-même.