4NK_IA_back/docs/API-NOTARIALE.md
root 5a8cc38eaa fix: Correction configuration MinIO et amélioration déploiement
- Correction de l'endpoint MinIO dans docker-compose.yml (suppression du protocole http://)
- Création automatique du fichier .env avec les bonnes configurations
- Ajout du script start-stack.sh pour faciliter le déploiement
- Suppression du fichier docker-compose.simple.yml
- Mise à jour de la documentation avec section de dépannage
- Mise à jour du numéro de version à 1.2.1

Résout le problème 'path in endpoint is not allowed' de MinIO
2025-09-10 21:29:25 +02:00

448 lines
10 KiB
Markdown

# API Notariale 4NK - Documentation Complète
## 🎯 Vue d'ensemble
L'API Notariale 4NK est un système complet de traitement de documents notariaux utilisant l'IA pour l'OCR, la classification, l'extraction d'entités, la vérification externe et l'analyse contextuelle via LLM.
## 🏗️ Architecture
### Composants Principaux
1. **API FastAPI** (`services/host_api/`)
- Endpoints REST pour l'upload et l'analyse
- Gestion des tâches asynchrones
- Intégration avec les services externes
2. **Pipeline de Traitement Avancé** (`services/worker/`)
- **Préprocessing** : Validation, conversion et optimisation des documents
- **OCR** : Extraction de texte avec Tesseract et correction lexicale notariale
- **Classification** : Détection du type de document via LLM
- **Extraction** : Extraction d'entités (identités, adresses, biens, montants, dates)
- **Indexation** : Indexation multi-système (AnythingLLM, OpenSearch, Neo4j)
- **Vérifications** : Contrôles métier et vérifications externes automatisées
- **Finalisation** : Synthèse et archivage avec score de vraisemblance
3. **Traitement Asynchrone** (Celery)
- Queues spécialisées pour chaque étape du pipeline
- Scalabilité horizontale des workers
- Monitoring des tâches en temps réel
- Gestion robuste des erreurs
4. **Services Externes Intégrés**
- **Ollama** : Modèles LLM locaux (Llama 3, Mistral)
- **APIs Gouvernementales** : Cadastre, Géorisques, BODACC, Infogreffe, RBE
- **Base de données PostgreSQL** : Métadonnées et résultats
- **Stockage MinIO** : Documents et artefacts
- **Cache Redis** : Performance et queues Celery
- **Neo4j** : Graphe de connaissances
- **OpenSearch** : Recherche plein-texte
- **AnythingLLM** : Indexation sémantique
## 📋 Types de Documents Supportés
### Documents Notariaux
- **Acte de Vente** : Vente immobilière
- **Acte de Donation** : Donation entre vifs
- **Acte de Succession** : Succession et notoriété
- **Contrat** : Contrats divers
- **CNI** : Carte nationale d'identité
- **Autre** : Documents non classés
### Formats Supportés
- **PDF** : Documents scannés ou natifs
- **Images** : JPEG, PNG, TIFF, HEIC
## 🔧 Installation et Configuration
### Prérequis
```bash
# Python 3.11+
python3 --version
# Docker et Docker Compose
docker --version
docker-compose --version
# Tesseract OCR
sudo apt-get install tesseract-ocr tesseract-ocr-fra
# Autres dépendances système
sudo apt-get install poppler-utils imagemagick ghostscript
```
### Installation
```bash
# 1. Cloner le projet
git clone <repository>
cd 4NK_IA
# 2. Créer l'environnement virtuel
python3 -m venv venv
source venv/bin/activate
# 3. Installer les dépendances
pip install -r docker/host-api/requirements.txt
# 4. Configuration
cp infra/.env.example infra/.env
# Éditer infra/.env avec vos paramètres
# 5. Démarrer les services
make bootstrap
```
## 🚀 Utilisation
### API REST
#### Upload d'un Document
```bash
curl -X POST "http://localhost:8000/api/notary/upload" \
-F "file=@document.pdf" \
-F "id_dossier=D-2025-001" \
-F "etude_id=E-001" \
-F "utilisateur_id=U-123" \
-F "type_document_attendu=acte_vente"
```
**Réponse :**
```json
{
"document_id": "uuid-123",
"status": "queued",
"message": "Document mis en file de traitement",
"estimated_processing_time": 120
}
```
#### Statut de Traitement
```bash
curl "http://localhost:8000/api/notary/document/{document_id}/status"
```
**Réponse :**
```json
{
"document_id": "uuid-123",
"status": "processing",
"progress": 45,
"current_step": "extraction_entites",
"estimated_completion": 1640995200
}
```
#### Analyse Complète
```bash
curl "http://localhost:8000/api/notary/document/{document_id}/analysis"
```
**Réponse :**
```json
{
"document_id": "uuid-123",
"type_detecte": "acte_vente",
"confiance_classification": 0.95,
"texte_extrait": "Texte extrait du document...",
"entites_extraites": {
"identites": [
{
"nom": "DUPONT",
"prenom": "Jean",
"type": "vendeur",
"confidence": 0.9
}
],
"adresses": [
{
"adresse_complete": "123 rue de la Paix, 75001 Paris",
"type": "bien_vendu",
"confidence": 0.8
}
],
"biens": [
{
"description": "Appartement 3 pièces",
"surface": "75m²",
"prix": "250000€",
"confidence": 0.9
}
]
},
"verifications_externes": {
"cadastre": {
"status": "verified",
"data": {
"parcelle": "1234",
"section": "A",
"surface": "75m²"
},
"confidence": 0.9
},
"georisques": {
"status": "verified",
"data": {
"risques": [
{
"type": "retrait_gonflement_argiles",
"niveau": "moyen"
}
]
},
"confidence": 0.8
}
},
"score_vraisemblance": 0.92,
"avis_synthese": "Document cohérent et vraisemblable...",
"recommandations": [
"Vérifier l'identité des parties",
"Contrôler la conformité du prix"
],
"timestamp_analyse": "2025-01-09 10:30:00"
}
```
### Interface Web
#### Démarrage
```bash
# Démarrer l'API
cd services/host_api
uvicorn app:app --host 0.0.0.0 --port 8000
# Démarrer l'interface web (dans un autre terminal)
cd services/web_interface
python start_web.py
```
#### Accès
- **Interface Web** : http://localhost:8080
- **API Documentation** : http://localhost:8000/docs
- **API Health** : http://localhost:8000/api/health
## 🔍 Pipeline de Traitement
### 1. Upload et Validation
- Validation du type de fichier
- Génération d'un ID unique
- Sauvegarde du document original
### 2. OCR et Extraction de Texte
- Conversion PDF en images (si nécessaire)
- Amélioration de la qualité d'image
- OCR avec Tesseract (optimisé pour le français)
- Correction lexicale notariale
- Post-traitement du texte
### 3. Classification du Document
- Classification par règles (mots-clés)
- Classification par LLM (Ollama)
- Fusion des résultats
- Validation de cohérence
### 4. Extraction d'Entités
- Extraction par patterns regex
- Extraction par LLM
- Fusion et déduplication
- Classification des entités par type
### 5. Vérifications Externes
- **Cadastre** : Vérification des parcelles
- **Géorisques** : Analyse des risques
- **BODACC** : Vérification des annonces
- **Gel des Avoirs** : Contrôle des sanctions
- **Infogreffe** : Vérification des entreprises
- **RBE** : Bénéficiaires effectifs
### 6. Calcul du Score de Vraisemblance
- Score OCR (qualité de l'extraction)
- Score classification (confiance du type)
- Score entités (complétude et qualité)
- Score vérifications (cohérence externe)
- Score cohérence (règles métier)
- Application de pénalités
### 7. Analyse Contextuelle LLM
- Génération d'un avis de synthèse
- Analyse de cohérence
- Recommandations spécifiques
- Identification des risques
## 🛠️ Configuration Avancée
### Variables d'Environnement
```bash
# Base de données
POSTGRES_USER=notariat
POSTGRES_PASSWORD=notariat_pwd
POSTGRES_DB=notariat
# Redis
REDIS_PASSWORD=
# MinIO
MINIO_ROOT_USER=minio
MINIO_ROOT_PASSWORD=minio_pwd
MINIO_BUCKET=ingest
# Ollama
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_DEFAULT_MODEL=llama3:8b
# APIs Externes
API_GOUV_KEY=your_api_gouv_key
RBE_API_KEY=your_rbe_key
GEOFONCIER_USERNAME=your_username
GEOFONCIER_PASSWORD=your_password
```
### Modèles LLM
#### Modèles Recommandés
- **llama3:8b** : Équilibré, bon pour la classification
- **mistral:7b** : Rapide, bon pour l'extraction
- **llama3:70b** : Plus précis, nécessite plus de ressources
#### Configuration Ollama
```bash
# Télécharger un modèle
ollama pull llama3:8b
# Vérifier les modèles disponibles
ollama list
```
## 📊 Monitoring et Logs
### Logs
```bash
# Logs de l'API
docker-compose logs -f host-api
# Logs des workers
docker-compose logs -f worker
# Logs de tous les services
make logs
```
### Métriques
- **Temps de traitement** : Moyenne par type de document
- **Taux de réussite** : Pourcentage de documents traités avec succès
- **Qualité OCR** : Confiance moyenne de l'extraction
- **Score de vraisemblance** : Distribution des scores
### Health Checks
```bash
# Statut de l'API
curl http://localhost:8000/api/health
# Statut des services
curl http://localhost:8000/api/notary/stats
```
## 🔒 Sécurité
### Authentification
- JWT tokens pour l'API
- Sessions utilisateur pour l'interface web
- Clés API pour les services externes
### Chiffrement
- TLS pour les communications
- Chiffrement des données sensibles
- Stockage sécurisé des clés
### Conformité
- RGPD : Anonymisation des données
- Audit trail complet
- Rétention des données configurable
## 🚨 Dépannage
### Problèmes Courants
#### OCR de Mauvaise Qualité
```bash
# Vérifier Tesseract
tesseract --version
# Tester l'OCR
tesseract image.png output -l fra
```
#### Erreurs de Classification
```bash
# Vérifier Ollama
curl http://localhost:11434/api/tags
# Tester un modèle
curl http://localhost:11434/api/generate -d '{"model":"llama3:8b","prompt":"Test"}'
```
#### APIs Externes Inaccessibles
```bash
# Tester la connectivité
curl https://apicarto.ign.fr/api/cadastre/parcelle
# Vérifier les clés API
echo $API_GOUV_KEY
```
### Logs de Debug
```python
# Activer les logs détaillés
import logging
logging.basicConfig(level=logging.DEBUG)
```
## 📈 Performance
### Optimisations
- **Cache Redis** : Mise en cache des résultats
- **Traitement parallèle** : Workers multiples
- **Compression** : Images optimisées pour l'OCR
- **Indexation** : Base de données optimisée
### Benchmarks
- **PDF simple** : ~30 secondes
- **PDF complexe** : ~2 minutes
- **Image haute résolution** : ~45 secondes
- **Débit** : ~10 documents/heure (configuration standard)
## 🔄 Mise à Jour
### Mise à Jour du Code
```bash
git pull origin main
pip install -r docker/host-api/requirements.txt
docker-compose down
docker-compose up -d
```
### Mise à Jour des Modèles
```bash
# Nouveau modèle
ollama pull llama3:70b
# Mise à jour de la configuration
export OLLAMA_DEFAULT_MODEL=llama3:70b
```
## 📞 Support
### Documentation
- **API Docs** : http://localhost:8000/docs
- **Code Source** : Repository Git
- **Issues** : git.4nkweb.com Issues
### Contact
- **Email** : support@4nkweb.com
- **Documentation** : docs/README.md
---
**Version** : 1.0.0
**Dernière mise à jour** : 9 janvier 2025
**Auteur** : Équipe 4NK