# T2A Extractor Extraction structurée de rapports de contrôle T2A (décisions UCR) depuis des PDF natifs et scannés. ## Architecture ``` PDF UCR → [pymupdf/docTR] → texte brut → [regex] → blocs OGC → [VLM Ollama] → JSON → [validation] → Excel/CSV ``` ### Pipeline 1. **Extraction texte** — Détection automatique natif/scanné par page. pymupdf pour le natif, docTR pour l'OCR. 2. **Segmentation** — Découpage en blocs par Champ et par OGC (individuels et groupés) via regex. 3. **Extraction structurée** — Chaque bloc est envoyé au VLM local (Ollama) qui retourne un JSON structuré. 4. **Validation** — Vérification des codes CIM-10/CCAM, cohérence des décisions. 5. **Export** — Excel formaté (avec coloration des décisions) et CSV optionnel. ## Schéma de sortie (11 colonnes) | Colonne | Description | |---|---| | `champ` | Numéro de champ | | `num_ogc` | Numéro OGC | | `type_desaccord` | DP / DAS / DP+DAS / Actes | | `codes_etablissement` | Codes CIM-10/CCAM de l'établissement | | `libelle_etablissement` | Libellé du codage établissement | | `codes_controleurs` | Codes CIM-10/CCAM des contrôleurs | | `libelle_controleurs` | Libellé du codage contrôleurs | | `decision_ucr` | Favorable / Défavorable (pour l'établissement) | | `codes_retenus` | Codes finalement retenus | | `ghm_ghs` | GHM/GHS si mentionnés | | `texte_decision` | Texte intégral de la décision UCR | ## Installation ```bash chmod +x setup.sh ./setup.sh ``` ## Usage ```bash source .venv/bin/activate python main.py rapport_ucr.pdf python main.py rapport_ucr.pdf --csv --verbose python main.py rapport_ucr.pdf -o /chemin/sortie --csv -v ``` ## Prérequis - Python 3.12+ - Ollama avec un VLM (gemma3:27b-cloud par défaut) - GPU recommandé pour docTR (fonctionne aussi en CPU) ## Configuration Éditer `config.py` pour ajuster : - `OLLAMA_MODEL` — modèle à utiliser - `OLLAMA_BASE_URL` — URL du serveur Ollama - `OCR_DPI` — résolution OCR (défaut: 200) - `NATIVE_TEXT_MIN_CHARS` — seuil de détection natif/scanné