# TopoAudit Bénin
Prototype SaaS local pour auditer de façon préliminaire des plans topographiques scannés au Bénin : upload d'un plan, extraction OCR, validation humaine des coordonnées, calcul géométrique, score de risque et génération d'un rapport PDF.
> Le produit ne fournit pas de verdict juridique. Il aide à repérer des incohérences techniques et doit toujours être complété par une validation humaine/métier.
## Démarrage démo en moins de 15 minutes
### Prérequis
- Docker Desktop ou Docker Engine avec le plugin `docker compose`.
- Ports libres : `3000` pour le frontend, `8000` pour l'API, `5432` pour PostgreSQL/PostGIS.
- Optionnel pour développer hors Docker : Python 3.11+ et Node.js 20+.
### 1. Configurer l'environnement
```bash
cp .env.example .env
```
La configuration par défaut lance une démo locale sans clé externe obligatoire. `docker-compose.yml` sélectionne `OCR_PROVIDER=gemini`, mais si `GEMINI_API_KEY` est vide en environnement local, l'API utilise le fournisseur OCR mock pour que la démo reste exécutable immédiatement.
Pour tester Gemini réellement, renseigner au minimum dans `.env` :
```env
GEMINI_API_KEY=...votre-cle...
GEMINI_MODEL=gemma-4-31b-it
```
Le **moteur OCR est sélectionnable à l'étape Import** :
- **Gemma 4 / Gemini — recommandé** pour les plans topographiques scannés (prompt
spécialisé, plus fiable sur les coordonnées visibles) ;
- **Mistral OCR 4 — rapide / expérimental** : plus rapide et peut fournir une confiance
par borne, mais peut mal structurer les tables de coordonnées sur certains plans ;
- **Mock OCR — démo locale**.
Le choix est envoyé au backend (`?provider=`). Pour Mistral, renseigner dans `.env` (voir
docs/external_services/mistral_ocr_4.md) —
**ne jamais committer/logger `MISTRAL_API_KEY`** :
```env
MISTRAL_API_KEY=...votre-cle...
MISTRAL_OCR_MODEL=mistral-ocr-latest
```
`GET /api/ocr/providers` liste les providers et leur état (jamais les clés). Mistral peut
fournir une **confiance OCR machine par borne** …