docs: Analyse complète de la régression de qualité - Causes racines identifiées
This commit is contained in:
@@ -88,11 +88,100 @@
|
||||
|
||||
---
|
||||
|
||||
## Phase 2 : Amélioration de la Détection (3 semaines)
|
||||
## Phase 2 : Correction de la Régression de Qualité (3-4 jours) - PRIORITÉ CRITIQUE
|
||||
|
||||
### 2.1 Amélioration des Regex
|
||||
### 2.0 Analyse de la Régression (COMPLÉTÉ ✅)
|
||||
|
||||
- [ ] 2.1.1 Améliorer la détection des téléphones
|
||||
- [x] 2.0.1 Analyser la régression de qualité en production
|
||||
- [x] 2.0.1.1 Comparer documents originaux vs anonymisés
|
||||
- [x] 2.0.1.2 Identifier les artefacts OCR
|
||||
- [x] 2.0.1.3 Identifier les sur-masquages
|
||||
- [x] 2.0.1.4 Comparer test dataset vs production
|
||||
- [x] 2.0.1.5 Documenter les causes racines
|
||||
|
||||
### 2.1 Optimisation OCR (1-2 jours) - CRITIQUE
|
||||
|
||||
- [ ] 2.1.1 Optimiser les paramètres docTR
|
||||
- [ ] 2.1.1.1 Augmenter la résolution d'entrée (300 → 400 DPI)
|
||||
- [ ] 2.1.1.2 Activer le post-traitement docTR
|
||||
- [ ] 2.1.1.3 Tester différentes configurations sur 10 documents scannés
|
||||
- [ ] 2.1.1.4 Mesurer le taux d'artefacts OCR (cible: <5%)
|
||||
|
||||
- [ ] 2.1.2 Implémenter le nettoyage des artefacts OCR
|
||||
- [ ] 2.1.2.1 Créer `detectors/ocr_cleaner.py`
|
||||
- [ ] 2.1.2.2 Implémenter la fusion des lettres espacées (`P Nr °a t` → `Praticien`)
|
||||
- [ ] 2.1.2.3 Implémenter la fusion des chiffres espacés (`1o 0s 1p` → `10100`)
|
||||
- [ ] 2.1.2.4 Utiliser un dictionnaire médical pour corriger les mots fragmentés
|
||||
- [ ] 2.1.2.5 Intégrer dans `_extract_with_doctr()`
|
||||
- [ ] 2.1.2.6 Tester sur 20 documents scannés
|
||||
- [ ] 2.1.2.7 Mesurer l'amélioration de lisibilité (cible: >80%)
|
||||
|
||||
### 2.2 Whitelist Médicaments (1 jour) - CRITIQUE
|
||||
|
||||
- [ ] 2.2.1 Créer la whitelist de médicaments
|
||||
- [ ] 2.2.1.1 Vérifier que `_load_edsnlp_drug_names()` fonctionne
|
||||
- [ ] 2.2.1.2 Ajouter les médicaments manquants (IDACIO, etc.)
|
||||
- [ ] 2.2.1.3 Créer `config/medications_whitelist.yml`
|
||||
- [ ] 2.2.1.4 Charger la whitelist au démarrage
|
||||
|
||||
- [ ] 2.2.2 Intégrer la whitelist dans le NER
|
||||
- [ ] 2.2.2.1 Modifier `_mask_with_eds_pseudo()` pour filtrer les médicaments
|
||||
- [ ] 2.2.2.2 Ajouter le filtre dans la boucle de masquage NER
|
||||
- [ ] 2.2.2.3 Tester sur 10 documents avec médicaments
|
||||
- [ ] 2.2.2.4 Vérifier que 0 médicament est masqué
|
||||
|
||||
### 2.3 Raffiner Regex Termes Médicaux (1 jour) - CRITIQUE
|
||||
|
||||
- [ ] 2.3.1 Modifier les regex problématiques
|
||||
- [ ] 2.3.1.1 Modifier `RE_SERVICE` pour exclure "Chef de service"
|
||||
- [ ] 2.3.1.2 Modifier `RE_ETABLISSEMENT` pour exclure "Chef de Clinique"
|
||||
- [ ] 2.3.1.3 Créer `config/medical_terms_whitelist.yml`
|
||||
- [ ] 2.3.1.4 Ajouter les termes structurels (Chef de service, Praticien hospitalier, etc.)
|
||||
|
||||
- [ ] 2.3.2 Intégrer la whitelist dans le pipeline
|
||||
- [ ] 2.3.2.1 Charger la whitelist au démarrage
|
||||
- [ ] 2.3.2.2 Filtrer les détections avant masquage
|
||||
- [ ] 2.3.2.3 Tester sur 10 documents
|
||||
- [ ] 2.3.2.4 Vérifier que 0 terme médical structurel est masqué
|
||||
|
||||
### 2.4 Validation de la Correction (1 jour)
|
||||
|
||||
- [ ] 2.4.1 Ré-anonymiser le corpus de test
|
||||
- [ ] 2.4.1.1 Ré-anonymiser les 27 documents du test dataset
|
||||
- [ ] 2.4.1.2 Exécuter l'évaluateur de qualité
|
||||
- [ ] 2.4.1.3 Vérifier que Recall=100%, Precision=100%, F1=100%
|
||||
- [ ] 2.4.1.4 Mesurer les nouvelles métriques (artefacts OCR, médicaments, termes médicaux)
|
||||
|
||||
- [ ] 2.4.2 Ré-anonymiser un échantillon de production
|
||||
- [ ] 2.4.2.1 Sélectionner 50 documents de production (scannés)
|
||||
- [ ] 2.4.2.2 Ré-anonymiser avec les corrections
|
||||
- [ ] 2.4.2.3 Comparer avec la baseline (avant corrections)
|
||||
- [ ] 2.4.2.4 Mesurer l'amélioration:
|
||||
- Artefacts OCR: <5% (était ~30%)
|
||||
- Médicaments masqués: 0 (était >0)
|
||||
- Termes médicaux masqués: 0 (était >10)
|
||||
- Lisibilité: >80% (était ~60%)
|
||||
- PII/doc: <30 (était 54.8)
|
||||
|
||||
- [ ] 2.4.3 Validation manuelle
|
||||
- [ ] 2.4.3.1 Sélectionner 10 documents aléatoires
|
||||
- [ ] 2.4.3.2 Vérifier manuellement la qualité
|
||||
- [ ] 2.4.3.3 Vérifier la lisibilité médicale
|
||||
- [ ] 2.4.3.4 Documenter les observations
|
||||
|
||||
- [ ] 2.4.4 Générer le rapport de correction
|
||||
- [ ] 2.4.4.1 Créer `REGRESSION_FIX_REPORT.md`
|
||||
- [ ] 2.4.4.2 Documenter les métriques avant/après
|
||||
- [ ] 2.4.4.3 Documenter les corrections appliquées
|
||||
- [ ] 2.4.4.4 Documenter les résultats de validation
|
||||
|
||||
---
|
||||
|
||||
## Phase 3 : Amélioration Avancée de la Détection (3 semaines) - OPTIONNEL
|
||||
|
||||
### 3.1 Amélioration des Regex
|
||||
|
||||
- [ ] 3.1.1 Améliorer la détection des téléphones
|
||||
- [ ] 2.1.1.1 Créer `detectors/improved_regex.py`
|
||||
- [ ] 2.1.1.2 Implémenter `RE_TEL_IMPROVED` (formats fragmentés)
|
||||
- [ ] 2.1.1.3 Ajouter 20+ tests unitaires pour les téléphones
|
||||
|
||||
Reference in New Issue
Block a user