306 lines
8.5 KiB
Markdown
306 lines
8.5 KiB
Markdown
# 🏛️ 4NK Notariat - Système de Traitement de Documents Notariaux
|
||
|
||
## 🎯 Vue d'ensemble
|
||
|
||
Le système 4NK Notariat est une solution complète d'IA pour le traitement automatisé de documents notariaux. Il combine OCR avancé, classification intelligente, extraction d'entités, vérifications externes et analyse contextuelle via LLM pour fournir aux notaires un outil puissant d'analyse et de validation de documents.
|
||
|
||
## ✨ Fonctionnalités Principales
|
||
|
||
### 🔍 **Traitement de Documents**
|
||
- **OCR Avancé** : Extraction de texte avec correction lexicale notariale
|
||
- **Classification Automatique** : Détection du type de document (acte de vente, donation, succession, CNI, etc.)
|
||
- **Extraction d'Entités** : Identification automatique des identités, adresses, biens, montants
|
||
- **Support Multi-format** : PDF, JPEG, PNG, TIFF, HEIC
|
||
|
||
### 🔗 **Vérifications Externes**
|
||
- **Cadastre** : Vérification des parcelles et propriétés
|
||
- **Géorisques** : Analyse des risques (inondation, argiles, radon, etc.)
|
||
- **BODACC** : Vérification des annonces légales
|
||
- **Gel des Avoirs** : Contrôle des sanctions
|
||
- **Infogreffe** : Vérification des entreprises
|
||
- **RBE** : Bénéficiaires effectifs
|
||
|
||
### 🧠 **Intelligence Artificielle**
|
||
- **LLM Local** : Analyse contextuelle avec Ollama (Llama 3, Mistral)
|
||
- **Score de Vraisemblance** : Évaluation automatique de la cohérence
|
||
- **Avis de Synthèse** : Analyse intelligente et recommandations
|
||
- **Détection d'Anomalies** : Identification des incohérences
|
||
|
||
### 🌐 **Accès Applicatif**
|
||
- **API REST** : Intégration avec les systèmes existants (IHM supprimée — back only)
|
||
- **Tableaux de Bord** : via Grafana (optionnel)
|
||
|
||
## 🚀 Démarrage Rapide
|
||
|
||
### Prérequis
|
||
```bash
|
||
# Système
|
||
- Ubuntu/Debian 20.04+
|
||
- Python 3.11+
|
||
- Docker & Docker Compose
|
||
- 8GB RAM minimum (16GB recommandé)
|
||
- 50GB espace disque
|
||
|
||
# Dépendances système
|
||
sudo apt-get update
|
||
sudo apt-get install -y python3 python3-pip python3-venv docker.io docker-compose
|
||
sudo apt-get install -y tesseract-ocr tesseract-ocr-fra poppler-utils imagemagick
|
||
```
|
||
|
||
### Installation
|
||
```bash
|
||
# 1. Cloner le projet
|
||
git clone <repository>
|
||
cd 4NK_IA
|
||
|
||
# 2. Démarrage automatique
|
||
./start_notary_system.sh
|
||
```
|
||
|
||
### Accès
|
||
- **API Documentation** : http://localhost:8000/docs
|
||
- **MinIO Console** : http://localhost:9001
|
||
|
||
## 📋 Types de Documents Supportés
|
||
|
||
| Type | Description | Entités Extraites |
|
||
|------|-------------|-------------------|
|
||
| **Acte de Vente** | Vente immobilière | Vendeur, acheteur, bien, prix, adresse |
|
||
| **Acte de Donation** | Donation entre vifs | Donateur, donataire, bien, valeur |
|
||
| **Acte de Succession** | Succession et notoriété | Héritiers, défunt, biens, parts |
|
||
| **CNI** | Carte d'identité | Identité, date de naissance, nationalité |
|
||
| **Contrat** | Contrats divers | Parties, obligations, clauses |
|
||
| **Autre** | Documents non classés | Entités génériques |
|
||
|
||
## 🔧 Configuration
|
||
|
||
### Variables d'Environnement
|
||
```bash
|
||
# Base de données
|
||
POSTGRES_USER=notariat
|
||
POSTGRES_PASSWORD=notariat_pwd
|
||
POSTGRES_DB=notariat
|
||
|
||
# APIs Externes
|
||
API_GOUV_KEY=your_api_gouv_key
|
||
RBE_API_KEY=your_rbe_key
|
||
GEOFONCIER_USERNAME=your_username
|
||
GEOFONCIER_PASSWORD=your_password
|
||
|
||
# LLM
|
||
OLLAMA_BASE_URL=http://ollama:11434
|
||
OLLAMA_DEFAULT_MODEL=llama3:8b
|
||
```
|
||
|
||
### Modèles LLM Recommandés
|
||
- **llama3:8b** : Équilibré, bon pour la classification (8GB RAM)
|
||
- **mistral:7b** : Rapide, bon pour l'extraction (7GB RAM)
|
||
- **llama3:70b** : Plus précis, nécessite plus de ressources (40GB RAM)
|
||
|
||
## 📊 Pipeline de Traitement
|
||
|
||
```mermaid
|
||
graph TD
|
||
A[Upload Document] --> B[Validation Format]
|
||
B --> C[OCR & Extraction Texte]
|
||
C --> D[Classification Document]
|
||
D --> E[Extraction Entités]
|
||
E --> F[Vérifications Externes]
|
||
F --> G[Calcul Score Vraisemblance]
|
||
G --> H[Analyse LLM]
|
||
H --> I[Rapport Final]
|
||
```
|
||
|
||
### Étapes Détaillées
|
||
|
||
1. **Upload & Validation** : Vérification du format et génération d'un ID unique
|
||
2. **OCR** : Extraction de texte avec correction lexicale notariale
|
||
3. **Classification** : Détection du type via règles + LLM
|
||
4. **Extraction** : Identification des entités (identités, adresses, biens)
|
||
5. **Vérifications** : Appels aux APIs externes (Cadastre, Géorisques, etc.)
|
||
6. **Score** : Calcul du score de vraisemblance (0-1)
|
||
7. **Analyse** : Synthèse contextuelle et recommandations via LLM
|
||
|
||
## 🛠️ Utilisation
|
||
|
||
### Utilisation via API
|
||
Utilisez les endpoints REST pour l’upload et la récupération des analyses.
|
||
|
||
### API REST
|
||
```bash
|
||
# Upload d'un document
|
||
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"
|
||
|
||
# Récupération de l'analyse
|
||
curl "http://localhost:8000/api/notary/document/{document_id}/analysis"
|
||
```
|
||
|
||
## 📈 Performance
|
||
|
||
### Benchmarks
|
||
- **PDF simple** : ~30 secondes
|
||
- **PDF complexe** : ~2 minutes
|
||
- **Image haute résolution** : ~45 secondes
|
||
- **Débit** : ~10 documents/heure (configuration standard)
|
||
|
||
### 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
|
||
|
||
## 🔒 Sécurité
|
||
|
||
### Authentification
|
||
- JWT tokens pour l'API
|
||
- Sessions utilisateur pour l'interface web
|
||
- Clés API pour les services externes
|
||
|
||
### Conformité
|
||
- **RGPD** : Anonymisation des données
|
||
- **Audit trail** : Traçabilité complète
|
||
- **Rétention** : Gestion configurable des données
|
||
|
||
## 🚨 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
|
||
```bash
|
||
# Logs de l'API
|
||
tail -f logs/api.log
|
||
|
||
# Logs des services Docker
|
||
docker-compose logs -f
|
||
|
||
# Logs de tous les services
|
||
make logs
|
||
```
|
||
|
||
## 📚 Documentation
|
||
|
||
- **[API Documentation](docs/API-NOTARIALE.md)** : Documentation complète de l'API
|
||
- **[Tests](tests/)** : Suite de tests complète
|
||
- **[Configuration](infra/)** : Fichiers de configuration Docker
|
||
|
||
|
||
## 🔄 Mise à Jour
|
||
|
||
```bash
|
||
# Mise à jour du code
|
||
git pull origin main
|
||
pip install -r docker/host-api/requirements.txt
|
||
|
||
# Redémarrage
|
||
./stop_notary_system.sh
|
||
./start_notary_system.sh
|
||
```
|
||
|
||
## 📞 Support
|
||
|
||
### Ressources
|
||
- **Documentation** : `docs/` directory
|
||
- **Tests** : `tests/` directory
|
||
- **Issues** : GitHub Issues
|
||
|
||
### Contact
|
||
- **Email** : support@4nkweb.com
|
||
- **Documentation** : Voir `docs/README.md`
|
||
|
||
## 🏗️ Architecture Technique
|
||
|
||
### Stack Technologique
|
||
- **Backend** : FastAPI (Python 3.11+)
|
||
- **Base de données** : PostgreSQL
|
||
- **Cache** : Redis
|
||
- **Stockage** : MinIO (S3-compatible)
|
||
- **LLM** : Ollama (Llama 3, Mistral)
|
||
- **OCR** : Tesseract + OpenCV
|
||
- **Conteneurisation** : Docker & Docker Compose
|
||
|
||
### Services
|
||
- **host-api** : API principale FastAPI
|
||
- **worker** : Tâches de traitement asynchrones
|
||
- **postgres** : Base de données relationnelle
|
||
- **redis** : Cache et queues
|
||
- **minio** : Stockage objet
|
||
- **ollama** : Modèles LLM locaux
|
||
- **anythingllm** : Interface LLM (optionnel)
|
||
|
||
## 📊 Monitoring
|
||
|
||
### Métriques Disponibles
|
||
- **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
|
||
```
|
||
|
||
## 🎯 Roadmap
|
||
|
||
### Version 1.1
|
||
- [ ] Support de nouveaux types de documents
|
||
- [ ] Amélioration de la précision OCR
|
||
- [ ] Intégration de nouvelles APIs externes
|
||
- [ ] Interface mobile responsive
|
||
|
||
### Version 1.2
|
||
- [ ] Machine Learning pour l'amélioration continue
|
||
- [ ] Support multi-langues
|
||
- [ ] Intégration avec les systèmes notariaux existants
|
||
- [ ] API GraphQL
|
||
|
||
---
|
||
|
||
**Version** : 1.0.0
|
||
**Dernière mise à jour** : 9 janvier 2025
|
||
**Auteur** : Équipe 4NK
|
||
**Licence** : MIT
|
||
|
||
## 🚀 Démarrage Immédiat
|
||
|
||
```bash
|
||
# Cloner et démarrer en une commande
|
||
git clone <repository> && cd 4NK_IA && ./start_notary_system.sh
|
||
```
|
||
|
||
**Votre système de traitement de documents notariaux est prêt en quelques minutes !** 🎉 |