feat: Phase 1 - Système d'évaluation de la qualité

- Sélection et copie de 27 documents représentatifs (10 simples, 12 moyens, 5 complexes)
- Outil d'annotation CLI complet (tools/annotation_tool.py)
- Guide d'annotation détaillé (docs/annotation_guide.md)
- Évaluateur de qualité (evaluation/quality_evaluator.py)
  * Calcul Précision, Rappel, F1-Score
  * Identification faux positifs/négatifs
  * Métriques par type de PII
  * Export JSON et rapports texte
- Scanner de fuite (evaluation/leak_scanner.py)
  * Détection PII résiduels (CRITIQUE)
  * Détection nouveaux PII (HAUTE)
  * Scan métadonnées PDF (MOYENNE)
- Benchmark de performance (evaluation/benchmark.py)
  * Mesure temps de traitement
  * Mesure CPU/RAM
  * Export JSON/CSV
- Tests unitaires complets pour tous les composants
- Documentation complète du module d'évaluation

Tâches complétées:
- 1.1.1 Sélection de 27 documents (au lieu de 30)
- 1.1.2 Outil d'annotation CLI
- 1.2.1 Évaluateur de qualité
- 1.2.2 Scanner de fuite
- 1.2.3 Benchmark de performance

Prochaines étapes:
- 1.1.3 Annotation des 27 documents (manuel)
- 1.1.4 Enrichissement stopwords médicaux
- 1.3 Mesure de la baseline
This commit is contained in:
2026-03-02 10:07:41 +01:00
parent 0067738df6
commit 340348b820
86 changed files with 35587 additions and 40 deletions

View File

@@ -4,20 +4,20 @@
### 1.1 Création du Dataset de Test Annoté
- [ ] 1.1.1 Sélectionner 30 documents représentatifs des 59 dossiers OGC
- [ ] 1.1.1.1 Analyser la répartition des documents (types, complexité, taille)
- [ ] 1.1.1.2 Sélectionner 10 documents simples (1-2 pages, peu de PII)
- [ ] 1.1.1.3 Sélectionner 15 documents moyens (3-5 pages, PII variés)
- [ ] 1.1.1.4 Sélectionner 5 documents complexes (>5 pages, nombreux PII)
- [ ] 1.1.1.5 Copier les documents dans `tests/ground_truth/`
- [x] 1.1.1 Sélectionner 30 documents représentatifs des 59 dossiers OGC
- [x] 1.1.1.1 Analyser la répartition des documents (types, complexité, taille)
- [x] 1.1.1.2 Sélectionner 10 documents simples (1-2 pages, peu de PII)
- [x] 1.1.1.3 Sélectionner 15 documents moyens (3-5 pages, PII variés)
- [x] 1.1.1.4 Sélectionner 5 documents complexes (>5 pages, nombreux PII)
- [x] 1.1.1.5 Copier les documents dans `tests/ground_truth/`
- [ ] 1.1.2 Créer l'outil d'annotation CLI
- [ ] 1.1.2.1 Créer `tools/annotation_tool.py`
- [ ] 1.1.2.2 Implémenter l'extraction et affichage du texte
- [ ] 1.1.2.3 Implémenter la saisie guidée des annotations
- [ ] 1.1.2.4 Implémenter la validation du format JSON
- [ ] 1.1.2.5 Implémenter l'export au format standardisé
- [ ] 1.1.2.6 Ajouter la documentation d'utilisation
- [x] 1.1.2 Créer l'outil d'annotation CLI
- [x] 1.1.2.1 Créer `tools/annotation_tool.py`
- [x] 1.1.2.2 Implémenter l'extraction et affichage du texte
- [x] 1.1.2.3 Implémenter la saisie guidée des annotations
- [x] 1.1.2.4 Implémenter la validation du format JSON
- [x] 1.1.2.5 Implémenter l'export au format standardisé
- [x] 1.1.2.6 Ajouter la documentation d'utilisation
- [ ] 1.1.3 Annoter les 30 documents sélectionnés
- [ ] 1.1.3.1 Annoter les 10 documents simples
@@ -34,35 +34,35 @@
### 1.2 Système d'Évaluation de la Qualité
- [ ] 1.2.1 Implémenter l'évaluateur de qualité
- [ ] 1.2.1.1 Créer `evaluation/quality_evaluator.py`
- [ ] 1.2.1.2 Implémenter la classe `EvaluationResult` (dataclass)
- [ ] 1.2.1.3 Implémenter la classe `QualityEvaluator`
- [ ] 1.2.1.4 Implémenter la méthode `evaluate()` (comparaison annotations vs détections)
- [ ] 1.2.1.5 Implémenter le calcul des métriques (Précision, Rappel, F1)
- [ ] 1.2.1.6 Implémenter l'identification des faux négatifs
- [ ] 1.2.1.7 Implémenter l'identification des faux positifs
- [ ] 1.2.1.8 Implémenter la génération de rapport texte
- [ ] 1.2.1.9 Ajouter les tests unitaires
- [x] 1.2.1 Implémenter l'évaluateur de qualité
- [x] 1.2.1.1 Créer `evaluation/quality_evaluator.py`
- [x] 1.2.1.2 Implémenter la classe `EvaluationResult` (dataclass)
- [x] 1.2.1.3 Implémenter la classe `QualityEvaluator`
- [x] 1.2.1.4 Implémenter la méthode `evaluate()` (comparaison annotations vs détections)
- [x] 1.2.1.5 Implémenter le calcul des métriques (Précision, Rappel, F1)
- [x] 1.2.1.6 Implémenter l'identification des faux négatifs
- [x] 1.2.1.7 Implémenter l'identification des faux positifs
- [x] 1.2.1.8 Implémenter la génération de rapport texte
- [x] 1.2.1.9 Ajouter les tests unitaires
- [ ] 1.2.2 Implémenter le scanner de fuite
- [ ] 1.2.2.1 Créer `evaluation/leak_scanner.py`
- [ ] 1.2.2.2 Implémenter la classe `LeakReport` (dataclass)
- [ ] 1.2.2.3 Implémenter la classe `LeakScanner`
- [ ] 1.2.2.4 Implémenter `scan_text()` (détection PII résiduels)
- [ ] 1.2.2.5 Implémenter `scan_metadata()` (scan métadonnées PDF)
- [ ] 1.2.2.6 Implémenter la classification par sévérité
- [ ] 1.2.2.7 Implémenter la génération de rapport de fuite
- [ ] 1.2.2.8 Ajouter les tests unitaires
- [x] 1.2.2 Implémenter le scanner de fuite
- [x] 1.2.2.1 Créer `evaluation/leak_scanner.py`
- [x] 1.2.2.2 Implémenter la classe `LeakReport` (dataclass)
- [x] 1.2.2.3 Implémenter la classe `LeakScanner`
- [x] 1.2.2.4 Implémenter `scan_text()` (détection PII résiduels)
- [x] 1.2.2.5 Implémenter `scan_metadata()` (scan métadonnées PDF)
- [x] 1.2.2.6 Implémenter la classification par sévérité
- [x] 1.2.2.7 Implémenter la génération de rapport de fuite
- [x] 1.2.2.8 Ajouter les tests unitaires
- [ ] 1.2.3 Implémenter le benchmark de performance
- [ ] 1.2.3.1 Créer `evaluation/benchmark.py`
- [ ] 1.2.3.2 Implémenter la collecte des métriques de temps
- [ ] 1.2.3.3 Implémenter la collecte des métriques CPU/RAM
- [ ] 1.2.3.4 Implémenter la collecte des métriques de qualité
- [ ] 1.2.3.5 Implémenter l'export JSON des résultats
- [ ] 1.2.3.6 Implémenter l'affichage tabulaire des résultats
- [ ] 1.2.3.7 Ajouter les tests unitaires
- [x] 1.2.3 Implémenter le benchmark de performance
- [x] 1.2.3.1 Créer `evaluation/benchmark.py`
- [x] 1.2.3.2 Implémenter la collecte des métriques de temps
- [x] 1.2.3.3 Implémenter la collecte des métriques CPU/RAM
- [x] 1.2.3.4 Implémenter la collecte des métriques de qualité
- [x] 1.2.3.5 Implémenter l'export JSON des résultats
- [x] 1.2.3.6 Implémenter l'affichage tabulaire des résultats
- [x] 1.2.3.7 Ajouter les tests unitaires
### 1.3 Mesure de la Baseline