Files
t2a-extractor/README.md
dom 751922d032 fix: align model name to gemma3:27b-cloud + add architecture diagram & deployment zip
setup.sh and README.md referenced gemma3:27b-it-qat while config.py uses
gemma3:27b-cloud. Added architecture.html (Mermaid pipeline diagram) and
t2a-extractor.zip for collaborator deployment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 21:31:57 +01:00

64 lines
2.0 KiB
Markdown

# 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é