4NK_IA/README.md
root 5d8ad901d1 Initial commit: Pipeline notarial complet
- Infrastructure complète de traitement de documents notariaux
- API FastAPI d'ingestion et d'orchestration
- Pipelines Celery pour le traitement asynchrone
- Support des formats PDF, JPEG, PNG, TIFF, HEIC
- OCR avec Tesseract et correction lexicale
- Classification automatique des documents avec Ollama
- Extraction de données structurées
- Indexation dans AnythingLLM et OpenSearch
- Système de vérifications et contrôles métier
- Base de données PostgreSQL pour le métier
- Stockage objet avec MinIO
- Base de données graphe Neo4j
- Recherche plein-texte avec OpenSearch
- Supervision avec Prometheus et Grafana
- Scripts d'installation pour Debian
- Documentation complète
- Tests unitaires et de performance
- Service systemd pour le déploiement
- Scripts de déploiement automatisés
2025-09-08 22:05:22 +02:00

6.2 KiB

Pipeline Notarial - Infrastructure as Code

Vue d'ensemble

Ce projet implémente un pipeline complet de traitement de documents notariaux en infrastructure as code. Il permet l'ingestion, le préprocessing, l'OCR, la classification, l'extraction de données, l'indexation et la recherche de documents notariaux.

Architecture

Composants principaux

  • host-api : API FastAPI d'ingestion et d'orchestration
  • worker : Tâches asynchrones Celery pour le traitement
  • PostgreSQL : Base de données métier
  • MinIO : Stockage objet S3-compatible
  • Redis : Queue de messages et cache
  • Ollama : Modèles LLM locaux
  • AnythingLLM : Workspaces et embeddings
  • Neo4j : Base de données graphe pour les contextes
  • OpenSearch : Recherche plein-texte
  • Prometheus + Grafana : Supervision et métriques

Pipeline de traitement

  1. Préprocessing : Validation et préparation des documents
  2. OCR : Extraction de texte avec correction lexicale
  3. Classification : Identification du type de document
  4. Extraction : Extraction de données structurées
  5. Indexation : Indexation dans AnythingLLM et OpenSearch
  6. Vérifications : Contrôles métier et validation
  7. Finalisation : Mise à jour de la base de données

Installation

Prérequis

  • Docker et Docker Compose
  • 8 Go de RAM minimum
  • 20 Go d'espace disque

Installation automatique

Debian/Ubuntu

# Installation des dépendances
sudo bash ops/install-debian.sh

# Reconnectez-vous ou exécutez
newgrp docker

Configuration

  1. Cloner le dépôt
  2. Copier le fichier d'environnement :
    cp infra/.env.example infra/.env
    
  3. Modifier les variables dans infra/.env
  4. Initialiser l'infrastructure :
    make bootstrap
    

Utilisation

Démarrage des services

# Démarrer tous les services
make up

# Vérifier le statut
make ps

# Voir les logs
make logs

Import d'un document

curl -F "file=@mon_document.pdf" \
     -F "id_dossier=D-2025-001" \
     -F "source=upload" \
     -F "etude_id=E-001" \
     -F "utilisateur_id=U-123" \
     http://localhost:8000/api/import

Accès aux interfaces

Configuration

Variables d'environnement

Les principales variables à configurer dans infra/.env :

# Base de données
POSTGRES_USER=notariat
POSTGRES_PASSWORD=notariat_pwd
POSTGRES_DB=notariat

# MinIO
MINIO_ROOT_USER=minio
MINIO_ROOT_PASSWORD=minio_pwd
MINIO_BUCKET=ingest

# AnythingLLM
ANYLLM_API_KEY=change_me
ANYLLM_BASE_URL=http://anythingllm:3001

# Ollama
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_MODELS=llama3:8b,mistral:7b

# Neo4j
NEO4J_AUTH=neo4j/neo4j_pwd

# OpenSearch
OPENSEARCH_PASSWORD=opensearch_pwd

Modèles Ollama

Les modèles sont téléchargés automatiquement au bootstrap :

  • llama3:8b (recommandé)
  • mistral:7b (alternative)

API

Endpoints principaux

  • POST /api/import : Import d'un document
  • GET /api/documents/{id} : Récupération d'un document
  • GET /api/documents : Liste des documents
  • GET /api/health : Santé de l'API
  • GET /api/admin/stats : Statistiques

Formats supportés

  • PDF (avec ou sans texte)
  • Images : JPEG, PNG, TIFF, HEIC

Types de documents supportés

  • Actes de vente immobilière
  • Actes d'achat immobilière
  • Donations
  • Testaments
  • Successions
  • Contrats de mariage
  • Procurations
  • Attestations
  • Factures notariales

Supervision

Métriques Prometheus

  • Taux d'erreur par étape
  • Latence de traitement
  • Qualité OCR (CER/WER)
  • Précision de classification
  • Performance d'extraction

Dashboards Grafana

  • Vue d'ensemble du pipeline
  • Métriques de performance
  • Qualité des traitements
  • Utilisation des ressources

Développement

Structure du projet

notariat-pipeline/
├── docker/           # Dockerfiles
├── infra/           # Docker Compose et configuration
├── ops/             # Scripts d'installation et seeds
├── services/        # Code applicatif
│   ├── host_api/    # API FastAPI
│   ├── worker/      # Pipelines Celery
│   └── charts/      # Dashboards Grafana
└── tests/           # Tests automatisés

Tests

# Tests unitaires
pytest tests/

# Tests d'intégration
pytest tests/integration/

# Tests de performance
locust -f tests/performance/locustfile.py

Sécurité

Chiffrement

  • Chiffrement des volumes Docker
  • Chiffrement applicatif des données sensibles

Cloisonnement

  • Séparation par étude via workspaces
  • Index nommés par étude
  • Labels Neo4j par contexte

Audit

  • Journaux structurés JSON
  • Traçabilité complète des traitements
  • Horodatage et versions

Maintenance

Sauvegarde

# Sauvegarde de la base de données
docker exec postgres pg_dump -U notariat notariat > backup.sql

# Sauvegarde des volumes
docker run --rm -v notariat_pgdata:/data -v $(pwd):/backup alpine tar czf /backup/pgdata.tar.gz -C /data .

Mise à jour

# Mise à jour des images
make build

# Redémarrage des services
make restart

Dépannage

Logs

# Logs de tous les services
make logs

# Logs d'un service spécifique
docker compose logs -f host-api

Vérification de santé

# Statut des services
make status

# Test de connectivité
curl http://localhost:8000/api/health

Problèmes courants

  1. Modèles Ollama non téléchargés : Vérifier la connectivité et relancer le bootstrap
  2. Erreurs MinIO : Vérifier les credentials et la connectivité
  3. Problèmes de mémoire : Augmenter les limites Docker
  4. Erreurs OCR : Vérifier l'installation de Tesseract

Contribution

  1. Fork le projet
  2. Créer une branche feature
  3. Commiter les changements
  4. Pousser vers la branche
  5. Ouvrir une Pull Request

Licence

MIT License - voir le fichier LICENSE pour plus de détails.

Support

Pour toute question ou problème :

  • Ouvrir une issue sur GitHub
  • Consulter la documentation
  • Contacter l'équipe de développement