Snapshot des 18 JSONs produits par le pipeline V2 (Qwen2.5-VL-3B +
checkboxes densité + validation ATIH), utiles au collaborateur comme
référence de ce que la chaîne actuelle produit.
Rapports :
- bench_v2_report.md : comparaison V2 vs legacy docTR+VLM
(couverture, divergences, régressions
notables sur codage_reco et praticien).
- validation_report.md : résumé de la validation ATIH sur les 18
JSONs (131/149 → 140/149 codes valides
après fix suffixes `*` et `+N`, 0
incohérence GHM↔GHS, 8 suggestions de
correction OCR).
Script de comparaison :
- bench_v11_vs_legacy.py : tableau d'accord champ par champ entre
un run du pipeline (output/v2/) et les
JSONs legacy (output/).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.5 KiB
3.5 KiB
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
- GHM/GHS reco 100% vs 77% couverture (+4 dossiers).
- Corrections OCR crédibles : OGC 27
1652(invalide CIM-10) →I652; OGC 66CO7→C07. - Zéro parse error / JSON toujours bien formé (vs boucles DAS tronquées en legacy).
codage_etab.drmieux rempli : 77% vs 38%.- Entête 100% stable (finess, dates, n_ogc, étab) — plus aucun rateau.
Top 3 régressions V2
codage_reco.*sous-extrait : dp 27% vs 94%, DAS reco 12% de récupération. La colonne Recodage est structurellement ignorée.praticien_conseilhalluciné : « DR VIGNAU » dans 15/18 dossiers, y compris où legacy lit clairement PIAU, POSE CATHERINE, Masson. Biais fréquentiel.ghs_injustifienon 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
- P0 — Prompt
recueilavec colonne Recodage explicite : few-shot montrant les deux colonnes (Codage étab | Recodage), demander séparémentcodage_reco.{dp,dr,das}. Tester un crop ciblé demi-page droite avec passe dédiée. - 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. - P2 — Structurer
ghs_injustifieviacheckboxes.py(case cochée, pas libellé). Au passage corrigerpipeline/persist.py:ocr_model="Qwen/Qwen2.5-VL-3B-Instruct",pipeline_version="v2"(actuellement tag "GLM-OCR" obsolète dans_meta).