Extraction et Classification de Risques à partir de Documents PDF
CritiRiskExtract est une application de traitement automatique du langage naturel (NLP) spécialisée dans l'extraction et la classification de risques et d'opportunités à partir de documents PDF. Le système utilise des modèles de machine learning avancés pour identifier, classifier et structurer les informations de risque dans des chaînes d'approvisionnement et des matières premières critiques.
- Extraction de texte PDF : Traitement automatique de documents PDF avec métadonnées
- Classification de risques/opportunités : Scoring automatique des phrases selon leur potentiel de risque
- Extraction d'entités : Identification automatique de lieux, matériaux, impacts, événements déclencheurs
- Traduction automatique : Support multilingue avec traduction français/anglais
- Embeddings vectoriels : Génération d'embeddings pour recherche sémantique
- Base de données vectorielle : Stockage optimisé avec PostgreSQL + pgvector
- Graphe de connaissances : Intégration Neo4j pour les relations complexes
- Fine-tuning : Entraînement personnalisé de modèles RoBERTa
- Export multi-format : CSV avec résultats structurés
├── src/
│ ├── preprocessing/ # Nettoyage et préparation du texte
│ ├── extraction/ # Extraction d'entités et classification
│ ├── embedding/ # Génération d'embeddings vectoriels
│ ├── database/ # Connecteurs DB (PostgreSQL, Neo4j)
│ └── export/ # Export des résultats
├── docker-compose.yml # Orchestration des services
├── Dockerfile # Image de l'application
├── main.py # Point d'entrée principal
└── fine_tuning_debug.py # Script de fine-tuning
- Docker & Docker Compose
- NVIDIA GPU avec pilotes CUDA (recommandé)
- Python 3.8+ (pour développement local)
-
Cloner le repository
-
Préparer les volumes de données
# Créer les dossiers de données partagées
mkdir -p /work/share/databases/docker_volumes/critirisk_db/docker_volumes/{pdfs,results,config,fine_tuning_R}- Lancer les services
docker compose build
docker compose up -d-
PostgreSQL + pgvector :
localhost:5444- Base de données principale avec support vectoriel
-
Neo4j :
localhost:7474(HTTP) /localhost:7687(Bolt)- Graphe de connaissances pour relations complexes
- Utilisateur :
neo4j/ Mot de passe :2024P@P@
-
Application CritiRiskExtract
- Traitement automatique des PDFs du dossier
/pdfs
- Traitement automatique des PDFs du dossier
voir fichier init2.sql
- RoBERTa fine-tuné pour classification binaire risque/opportunité
- Seuils configurables pour ajustement de sensibilité
- SpaCy : Entités nommées génériques (PERSON, ORG, GPE, etc.)
- Mixtral : Extraction spécialisée via API
- Mistral : Extraction locale via Ollama
- Sentence-BERT : Génération d'embeddings de 384 dimensions
- pgvector : Recherche de similarité vectorielle
-
Placer les PDFs dans le dossier
/work/share/databases/docker_volumes/critirisk_db/docker_volumes/pdfs -
L'application traite automatiquement :
- Extraction du texte des PDFs
- Nettoyage et segmentation en phrases
- Classification risque/opportunité
- Extraction d'entités multiples
- Traduction française si nécessaire
- Génération d'embeddings vectoriels
- Stockage en base de données
-
Récupérer les résultats dans
/work/share/databases/docker_volumes/critirisk_db/docker_volumes/results