Spaces:
Running
Running
| # Lire les 3 vues canoniques ensemble | |
| Sprint A14-S16 livre la troisième vue canonique du rewrite ciblé : | |
| `SearchView`. Avec `TextView` (S14) et `AltoView` (S15), on a | |
| maintenant **trois lentilles complémentaires** pour évaluer un | |
| même pipeline. | |
| ## Le tableau des 3 vues | |
| | Vue | Question | Métriques | Direction | | |
| |---|---|---|---| | |
| | **TextView** (S14) | Quel pipeline produit le meilleur **texte final** ? | CER, WER, MER, WIL | `lower_is_better` (erreurs) | | |
| | **AltoView** (S15) | Quel pipeline produit le meilleur **ALTO exploitable** ? | alto_validity, line_count_ratio, word_box_coverage | `higher_is_better` (qualité) | | |
| | **SearchView** (S16) | Quel pipeline maximise la **recherchabilité plein-texte** ? | searchability_recall, numerical_sequence_preservation | `higher_is_better` (rappel) | | |
| Aucune des trois vues ne dit toute la vérité sur un pipeline. | |
| **Ensemble, elles racontent l'histoire complète.** | |
| ## Pourquoi les trois vues sont nécessaires | |
| Un même pipeline peut être **excellent dans une vue et médiocre | |
| dans une autre**. C'est précisément ce qui rend la comparaison | |
| hétérogène utile pour la BnF — un seul score (CER global) | |
| masquerait des informations critiques. | |
| ### Pattern 1 : CER excellent, recherchabilité numérique catastrophique | |
| Démontré dans le test | |
| `tests/evaluation/test_sprint_a14_s16_views_consistency.py::TestDivergencePattern::test_year_corruption_invisible_to_cer_visible_to_search` : | |
| - **GT** : *"Charte signée à Paris le 14 juillet 1789 en présence du roi"* | |
| - **Hypothèse** : *"Charte signée à Paris le 14 juillet 1798 en présence du roi"* | |
| Le LLM de post-correction a "amélioré" la date (1789 → 1798). | |
| Conséquences : | |
| | Vue | Métrique | Valeur | Lecture | | |
| |---|---|---|---| | |
| | TextView | CER | ~0.03 | Excellent (3 chars sur 58) | | |
| | TextView | WER | ~0.09 | Très bon (1 mot sur 11) | | |
| | SearchView | searchability_recall | ~0.91 | Bon (1798 fuzzy match 1789) | | |
| | SearchView | **numerical_sequence_preservation** | **0.0** | **Catastrophique** | | |
| Pour un historien qui veut indexer ses chartes par date, ce | |
| pipeline est **inutilisable** — l'année 1789 est silencieusement | |
| réécrite en 1798. Le CER ne le révèle pas. `SearchView` le | |
| révèle. | |
| ### Pattern 2 : Texte parfait, ALTO inexistant | |
| Un OCR Tesseract qui ne produit que du texte brut : | |
| | Vue | Statut | Lecture | | |
| |---|---|---| | |
| | TextView | CER = 0.0 | Pipeline parfait pour la lecture | | |
| | SearchView | recall = 1.0 | Pipeline parfait pour l'indexation | | |
| | **AltoView** | **OMIS** | Pipeline non éligible | | |
| Pour un workflow IIIF / Mirador qui veut surligner les mots dans | |
| l'image, ce pipeline est **inutilisable** — pas de coordonnées. | |
| `AltoView` ne lui attribue pas un score factice à 0 ; le rapport | |
| affiche *"Tesseract texte brut n'est pas évalué dans AltoView | |
| (ne produit pas d'ALTO)"*. | |
| ### Pattern 3 : ALTO valide mais texte hallucinant | |
| Un VLM avec module ALTO_reconstruction peut produire un ALTO | |
| structurellement parfait (validity=1, lignes correctes, | |
| coordonnées présentes) mais avec du texte inventé : | |
| | Vue | Métrique | Valeur | Lecture | | |
| |---|---|---|---| | |
| | AltoView | tous | 1.0 | Pipeline parfait structurellement | | |
| | TextView | CER | élevé | Pipeline mauvais textuellement | | |
| | SearchView | recall | bas | Pipeline inutile pour la recherche | | |
| `AltoView` seul ferait passer ce VLM pour le meilleur pipeline. | |
| Lire les trois vues ensemble révèle le vrai problème. | |
| ## Recommandation de lecture pour le rapport BnF | |
| Le rapport HTML (S22) présentera les 3 vues côte-à-côte avec | |
| cette grille de lecture : | |
| 1. **Tableau de synthèse** : un tableau par vue, chaque ligne = | |
| un pipeline, chaque colonne = une métrique. Les pipelines | |
| omis sont indiqués explicitement (pas de valeur factice). | |
| 2. **Encart "divergences notables"** : signale automatiquement | |
| les pipelines dont le rang change fortement entre vues | |
| (par exemple "rang 1 en TextView, rang 5 en SearchView"). | |
| C'est un signal pour l'utilisateur d'aller regarder en | |
| détail ce qui se passe. | |
| 3. **Pour chaque vue** : warnings explicites de ce qu'elle | |
| **n'évalue pas** (cf. `ignored_dimensions` dans chaque | |
| `ViewResult`). L'utilisateur ne peut pas conclure | |
| "TextView dit que X est le meilleur" sans avoir vu ce que | |
| `TextView.ignored_dimensions` ne dit PAS. | |
| ## Critères de choix selon l'usage | |
| | Usage cible | Vue principale | Vues secondaires | | |
| |---|---|---| | |
| | Lecture humaine (édition critique) | TextView | AltoView (si édition diplomatique) | | |
| | Indexation Elastic / Solr / Gallica | SearchView | TextView | | |
| | Réinjection IIIF / Mirador (mots cliquables) | AltoView | TextView | | |
| | Citation académique | TextView + SearchView | AltoView | | |
| | Reproduction d'un fac-similé | AltoView | TextView | | |
| ## Statut | |
| - ✅ Sprint S14 — `TextView` | |
| - ✅ Sprint S15 — `AltoView` | |
| - ✅ Sprint S16 — `SearchView` + cohérence inter-vues | |
| - ⏳ Sprint S17 — intégration runner + RunManifest | |
| - ⏳ Sprint S18 — tests E2E sur le cas BnF central | |