Phase 2 de l'amélioration qualité anonymisation :
1. Extraction multi-colonnes (PyMuPDF layout-aware) :
- Nouvelle fonction _extract_page_layout_aware() détecte les layouts
sidebar+corps (typiques des CRH/CRO hospitaliers)
- Remplace pdfplumber comme extraction primaire (PyMuPDF blocks)
- Élimine l'entrelacement de texte entre sidebar et corps médical
- pdfplumber conservé pour les tables et comme fallback
2. Masquage FINESS multiline :
- Détection "N° Finess\n[...]\n640000162" (label et numéro séparés)
- Propagation globale du numéro FINESS sur toutes les pages
- Gestion du format *640000162* (avec astérisques Trackare)
3. Masquage URLs hospitalières (www.ch-xxx.fr)
4. Nettoyage crochets doubles [[PLACEHOLDER]] → [PLACEHOLDER]
Résultats non-régression (30 fichiers audit) :
- Fuites : 322 → 0 (-100%)
- Faux positifs : 113 → 10 (-91%)
- 0 régression fonctionnelle
- OGC 1-59 : 0 fuite soignant, 0 FINESS, 0 lieu de naissance
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
109 lines
11 KiB
JSON
109 lines
11 KiB
JSON
{"page": 0, "kind": "NOM", "original": "Aurélie VALADE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Céline BELLEAU", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Catherine DIDAILLER", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Hélène LANGLOIS MEURINNE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Claudine EMBAREK", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Mathilde LE GALL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Aurélie VALADE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Alice MANAUD", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Elise BADOUR", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Marie DUBREL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Leire ETCHANDY", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Fanny HENAFF", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Céline BELLEAU", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Leire ETCHANDY", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Fanny HENAFF", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Violette SUC", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Kaiet ECHEVERRIA-ARRUTY", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Philippe JOUVENCEL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Hélène LANGLOIS MEURINNE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Gaël MAZEIRAS", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Justine LABAT", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Chloé LAPEYRE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Camille OGER", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Caroline DE BARBEYRAC", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Maeva GRONDARD", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Catherine DIDAILLER", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Claudine EMBAREK", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Julie ALSUGUREN", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Leïla LAZARO", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Serge RIVERA", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Marie-Elise PICAMILH", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Léna MARIOTTE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Charlotte PETRIAT", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Pierre-Marie DUBOUE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Christel BUZENET", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Sabrina DUBOIS-ZUAZO", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Sophie NAUDION", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Marine LEGENDRE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Julien VAN-GILS", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Véronique OYHARCABAL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Agnès PUEL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Stéphane DEBELLEIX", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "Valérie TERRIER", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "SKILBECQ", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "NOM", "original": "JUZAN", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 0, "kind": "force_term", "original": "CENTRE HOSPITALIER COTE BASQUE", "placeholder": "[MASK]", "bbox_hint": null}
|
|
{"page": 0, "kind": "ETAB", "original": "Pôle Femme - Mère - Enfant", "placeholder": "[MASK]", "bbox_hint": null}
|
|
{"page": 0, "kind": "ADRESSE", "original": "12 PLACE GRAMONT", "placeholder": "[ADRESSE]", "bbox_hint": null}
|
|
{"page": 0, "kind": "CODE_POSTAL", "original": "64000 PAU", "placeholder": "[CODE_POSTAL]", "bbox_hint": null}
|
|
{"page": 0, "kind": "DATE_NAISSANCE", "original": "né le 18/01/2008", "placeholder": "[DATE_NAISSANCE]", "bbox_hint": null}
|
|
{"page": 0, "kind": "ETAB", "original": "Service de Pédiatrie Générale - HDJ - Urgences Pédiatriques - UHCD", "placeholder": "[MASK]", "bbox_hint": null}
|
|
{"page": 0, "kind": "ETAB", "original": "Service de Néonatologie - Réanimation Néonatale - Soins Continus Pédiatriques", "placeholder": "[MASK]", "bbox_hint": null}
|
|
{"page": 0, "kind": "IPP", "original": "23009267", "placeholder": "[IPP]", "bbox_hint": null}
|
|
{"page": 0, "kind": "EPISODE", "original": "23079402", "placeholder": "[EPISODE]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Aurélie VALADE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Céline BELLEAU", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Catherine DIDAILLER", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Hélène LANGLOIS MEURINNE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Claudine EMBAREK", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Mathilde LE GALL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Aurélie VALADE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Alice MANAUD", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Elise BADOUR", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Marie DUBREL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Leire ETCHANDY", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Fanny HENAFF", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Céline BELLEAU", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Leire ETCHANDY", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Fanny HENAFF", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Violette SUC", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Kaiet ECHEVERRIA-ARRUTY", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Philippe JOUVENCEL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Hélène LANGLOIS MEURINNE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Gaël MAZEIRAS", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Justine LABAT", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Chloé LAPEYRE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Camille OGER", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Caroline DE BARBEYRAC", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Maeva GRONDARD", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Catherine DIDAILLER", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Claudine EMBAREK", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Julie ALSUGUREN", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Leïla LAZARO", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Serge RIVERA", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Marie-Elise PICAMILH", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Léna MARIOTTE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Charlotte PETRIAT", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Pierre-Marie DUBOUE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Christel BUZENET", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Sabrina DUBOIS-ZUAZO", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Sophie NAUDION", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Marine LEGENDRE", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Julien VAN-GILS", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Véronique OYHARCABAL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Agnès PUEL", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Stéphane DEBELLEIX", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "Valérie TERRIER", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "SKILBECQ", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "JUZAN", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "force_term", "original": "CENTRE HOSPITALIER COTE BASQUE", "placeholder": "[MASK]", "bbox_hint": null}
|
|
{"page": 1, "kind": "ETAB", "original": "Pôle Femme - Mère - Enfant", "placeholder": "[MASK]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "PICAMILH Marie-Elise", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "PORTET Guillaume", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "NOM", "original": "TOULOUZET JOSH", "placeholder": "[NOM]", "bbox_hint": null}
|
|
{"page": 1, "kind": "ETAB", "original": "Service de Pédiatrie Générale - HDJ - Urgences Pédiatriques - UHCD", "placeholder": "[MASK]", "bbox_hint": null}
|
|
{"page": 1, "kind": "ETAB", "original": "Service de Néonatologie - Réanimation Néonatale - Soins Continus Pédiatriques", "placeholder": "[MASK]", "bbox_hint": null}
|
|
{"page": 1, "kind": "IPP", "original": "23009267", "placeholder": "[IPP]", "bbox_hint": null}
|
|
{"page": 1, "kind": "EPISODE", "original": "23079402", "placeholder": "[EPISODE]", "bbox_hint": null}
|