# Bench V2 (Qwen2.5-VL-3B) vs V0 legacy — 18 dossiers OGC 2018 Bench terminé (18/18 JSONs dans `output/v2/`, 0 parse_error, 0 truncated_loop). Temps VLM cumulé **495 s** ≈ **27.5 s / dossier** sur 6 pages. Legacy non-GT : les chiffres ci-dessous mesurent l'écart, pas la justesse absolue. ## Couverture & accord (page `recueil`) | Champ | V2 extr. | Legacy extr. | Accord (both) | Diffs | |---|---:|---:|---:|---:| | n_ogc / finess / date_debut_controle | 100% | 94% | 100% | 0 | | etablissement / dates_sejour | 100% | 94% | 94% | 1 | | codage_etab.dp | 100% | 94% | 76% | 4 | | codage_etab.dp_libelle | 94% | 94% | 69% | 5 | | codage_etab.dr | 77% | 38% | 20% | 4 | | **codage_reco.dp** | **27%** | 94% | 25% | 3 | | ghm_etab / ghs_etab | 100% | 83–88% | 81–87% | 2–3 | | ghm_reco / ghs_reco | 100% | 77% | 93% | 1 | | recodage_impactant | 100% | 88% | 75% | 4 | | ghs_injustifie | 100% | 66% | 42% | 7 | | accord_desaccord | 100% | 94% | 82% | 3 | | praticien_conseil | 88% | 94% | 47% | 8 | **DAS** : etab 31/47 récupérés (66%), **reco 5/41 (12%)**. ## Audit visuel — 3 divergences `codage_reco.dp` | Dossier | Legacy | V2 | Réalité (image) | Gagnant | |---|---|---|---|---| | OGC 20 | `D274` | `D374` | **D374** | **V2** (legacy fautif) | | OGC 66 | `C780` | `C07` (copie etab) | **C780** | **Legacy** | | OGC 74 | `B991` | `A099` (copie etab) | **≈B991** | **Legacy** | Pattern : V2 laisse vide (13/18) ou recopie `codage_etab.dp` (3/18) au lieu de lire la colonne droite. ## Top 5 améliorations V2 1. **GHM/GHS reco** 100% vs 77% couverture (+4 dossiers). 2. **Corrections OCR crédibles** : OGC 27 `1652` (invalide CIM-10) → `I652` ; OGC 66 `CO7` → `C07`. 3. **Zéro parse error** / JSON toujours bien formé (vs boucles DAS tronquées en legacy). 4. **`codage_etab.dr`** mieux rempli : 77% vs 38%. 5. **Entête 100% stable** (finess, dates, n_ogc, étab) — plus aucun rateau. ## Top 3 régressions V2 1. **`codage_reco.*` sous-extrait** : dp 27% vs 94%, DAS reco 12% de récupération. La colonne Recodage est structurellement ignorée. 2. **`praticien_conseil` halluciné** : « DR VIGNAU » dans **15/18** dossiers, y compris où legacy lit clairement PIAU, POSE CATHERINE, Masson. Biais fréquentiel. 3. **`ghs_injustifie` non structuré** : renvoie le libellé complet « 0 SE 1 2 3 4 ATU FFM FSD » au lieu de la case cochée (7 désaccords). ## Verdict **V2 n'est PAS prêt à remplacer V0 en l'état.** Les champs d'entête, GHM/GHS et DP etab progressent clairement, mais la **colonne Recodage — cœur métier du contrôle T2A** — est quasi-ignorée. Déployer perdrait l'information la plus utile du dossier. Blocages : (a) extraction `codage_reco.*`, (b) hallucination `praticien_conseil`, (c) `ghs_injustifie` non structuré. ## Actions priorisées 1. **P0 — Prompt `recueil` avec colonne Recodage explicite** : few-shot montrant les deux colonnes (Codage étab | Recodage), demander séparément `codage_reco.{dp,dr,das}`. Tester un crop ciblé demi-page droite avec passe dédiée. 2. **P1 — Anti-hallucination `praticien_conseil`** : contrainte prompt (« si illisible, chaîne vide, ne jamais deviner ») + éventuelle passe OCR manuscrit sur crop bas de page. Valider que VIGNAU ne redevient pas défaut. 3. **P2 — Structurer `ghs_injustifie`** via `checkboxes.py` (case cochée, pas libellé). Au passage corriger `pipeline/persist.py` : `ocr_model="Qwen/Qwen2.5-VL-3B-Instruct"`, `pipeline_version="v2"` (actuellement tag "GLM-OCR" obsolète dans `_meta`).