Projet de Classification des Actifs Informationnels
Développeur solo•Projet Professionnel•2026
Pipeline de classification des actifs informationnels conforme à la loi marocaine 05-20 et aux référentiels DGSSI / ISO 27001. Extraction par OCR (Tesseract) ou parsing natif (DOCX, XLSX, PPTX, CSV), détection de données sensibles (CIN, IBAN, RIB, emails) et moteur de règles YAML entièrement déterministe et explicable — sans dépendance à un modèle de ML. Classifie aussi les métadonnées structurées extraites de Dremio Cloud, avec scoring CIA, garde-fous PII automatiques et piste d'audit SHA-256.
Technologies
Contexte & Objectif
Une organisation qui traite des actifs informationnels hétérogènes (documents scannés, fichiers bureautiques, colonnes de base de données) doit classifier chacun selon son niveau de sensibilité avant stockage, partage ou revue — une obligation légale au titre de la loi marocaine 05-20 sur la cybersécurité, pas un simple confort.
Objectifs techniques :
- Classifier aussi bien des documents non structurés (PDF scanné ou natif, DOCX, XLSX, PPTX, CSV) que des métadonnées structurées (colonnes profilées depuis un data lake Dremio Cloud) via un pipeline unique et cohérent
- Chaque décision de classification doit être explicable et auditable a posteriori — une exigence de conformité qui écarte d'emblée un classifieur ML opaque
- Détecter les données personnelles sensibles (CIN, IBAN, RIB, emails, téléphones) et appliquer automatiquement les règles de protection, sans compter sur la vigilance d'un humain
Architecture & Choix Techniques
Un moteur entièrement déterministe, fondé sur des règles — aucun modèle statistique dans le chemin de décision. Chaque actif (fichier ou colonne Dremio) devient un objet Asset, évalué face à des règles YAML explicites pour produire des CIAScores (Confidentialité, Intégrité, Disponibilité), résolu en une classe DGSSI (I à V) en prenant le max des trois, puis associé à une politique de protection concrète.
Le code est organisé autour de ce pipeline : ocr/ (extraction Tesseract avec profils de prétraitement par type de document), extraction/ (parseurs natifs pour les formats bureautiques + client REST Dremio), classification/ (moteur de règles YAML, scoring CIA, garde-fous) et exporters/ (trois tables CSV normalisées). Les règles YAML ont été choisies précisément parce qu'elles sont lisibles et versionnables par un relecteur conformité non-développeur — à l'opposé des poids d'un modèle entraîné.
Le Processus
Extraction — process_file() route selon le format : extraction native du texte pour les PDF/formats bureautiques textuels, OCR pour les PDF scannés et images. Le chemin OCR exécute un pipeline en 9 étapes par image (correction d'orientation via OSD Tesseract + deskew OpenCV, détection de layout formulaire, prétraitement adaptatif sur 5 profils, extraction de tableaux, extraction clés/valeurs, nettoyage post-OCR).
Classification — le moteur de règles évalue toutes les règles YAML face à l'actif, agrège les scores CIA, résout la classe finale, décide si une revue humaine est requise (toujours pour la classe I, ou en cas de première source, ou de déclassement), puis applique trois garde-fous : plancher PII en classe III, hébergement national obligatoire pour les classes I-II, et revue humaine obligatoire sur PII détectée.
Export & audit — les résultats s'ajoutent (jamais d'écrasement) dans trois tables CSV indexées par un doc_id dérivé d'un hash SHA-256 tronqué, garantissant l'absence de doublons entre exécutions ; chaque exécution écrit aussi une piste d'audit JSON Lines avec l'empreinte du fichier source et les paramètres OCR utilisés.
Défis Techniques & Solutions
Défi — des documents scannés hétérogènes mettent en échec un pipeline OCR unique. Formulaires administratifs, tableaux denses et scans à faible contraste ont chacun besoin d'un prétraitement image différent pour un OCR propre. Solution : une heuristique de détection de layout profile d'abord chaque image (densité de lignes, structure de formulaire) et choisit l'un de cinq profils de prétraitement adaptatifs (text_clean, form_enhanced, scan_enhanced, text_low_contrast, table_cells) plutôt qu'un filtre universel.
Défi — la classification doit résister à un audit de conformité, ce qui écarte le ML. Solution : tout le chemin de décision repose sur évaluation de règles + scoring déterministe, avec chaque étape (règles matchées, classe résolue, motif de revue) traçable — le compromis est davantage de travail de rédaction de règles en amont, contre un système qu'un auditeur non-technique peut effectivement vérifier.
Résultats & Impact
- Moteur de classification déterministe et entièrement explicable — zéro ML dans le chemin de décision, chaque verdict traçable jusqu'aux règles YAML précises qui se sont déclenchées
- Couvre à la fois les documents non structurés (image/PDF/DOCX/PPTX/XLSX/CSV/TXT) et les métadonnées structurées Dremio Cloud via un pipeline unique
- Trois tables CSV normalisées, en mode append (unstructured, structured, master) plus une piste d'audit JSON Lines avec empreintes SHA-256 à chaque exécution
- Garde-fous de conformité automatisés alignés sur la loi marocaine 05-20 et DGSSI/ISO 27001 (plancher PII, hébergement national obligatoire par classe, revue humaine obligatoire sur PII)