#!/usr/bin/env python3 """Génère ui_mockup_v6.html — logo embarqué en base64, JS sans apostrophes dans les strings.""" import base64 from pathlib import Path LOGO_PATH = Path(__file__).parent.parent / "assets" / "logo_header.png" OUT_PATH = Path(__file__).parent / "ui_mockup_v6.html" logo_b64 = base64.b64encode(LOGO_PATH.read_bytes()).decode() LOGO_SRC = "data:image/png;base64," + logo_b64 HTML = r""" aivanonym v6 — Prototype UI
aivanonym
v6.0 · prototype
🎨 Apparence
📂 Documents à anonymiser
⬆️
Glissez-déposez vos fichiers ici
PDF · Word · Images · Texte
💾 Format de sortie
📄
PDF anonymisé
Zones noircies
📝
Texte .txt
Mots remplacés par [NOM]…
⌛ Traitement en cours…
Fichier 1 / 30 %
📖 Extraction 🧠 Détection 🔒 Masquage 📄 PDF final
✅ Résultats
3
Documents
142
PII masqués
4s
Durée
A+
Qualité
100.0
/ 100 · A+
Aucune fuite détectée
CR_23456.pdf → 47 PII masqués
CRO_81234.pdf → 38 PII masqués
LETTRE_SORTIE.pdf → 57 PII masqués
🔍 Données à détecter
Noms et prénoms
Gazetteers INSEE · CamemBERT
Dates de naissance
Uniquement la date de naissance
Etablissements
Répertoire FINESS + contexte
Adresses et codes postaux
N° sécurité sociale
Téléphones et e-mails
N° adhérent mutuelle
🧠 Moteurs NER
CamemBERT-bio RAPIDE
~10 ms/doc · F1 = 0.963
EDS-Pseudo PRECIS
~200 ms/doc · médical français
GLiNER OPTIONNEL
~95 ms/doc · vote croisé
✅ Termes à toujours conserver
Ces termes ne seront jamais masqués, même s’ils ressemblent à un nom propre.
FUROSEMIDE × rééducation fonctionnelle × classification internationale ×
🚫 Termes à toujours masquer
Ces termes seront toujours masqués, même sans contexte médical autour.
CHUXX ×
⬛ Couleur de masquage (PDF)
Couleur des rectangles dans le PDF final.
🏷️ Style des marqueurs (texte)
📐 Epaisseur du masque
Marge autour du texte masqué (en points).
Marge horizontale
Marge verticale
Coins arrondis
🔒 Codes de remplacement
Nom/Prénom
[NOM]
Date naissance
[DATE_NAISSANCE]
Etablissement
[ETABLISSEMENT]
Adresse
[ADRESSE]
Téléphone
[TEL]
N° sécu
[NIR]
IPP
[IPP]
Email
[EMAIL]
🏠 Masques de zones fixes (logos, en-têtes)
Dessinez des rectangles sur un PDF modèle pour masquer systématiquement les logos, en-têtes ou zones fixes — indépendamment de l’OCR.
100%
Template :
📄 Ouvrez un PDF pour commencer à dessiner des zones de masquage.
Cliquez-glissez pour tracer un rectangle • Clic sur un masque pour le supprimer
DPI raster :
Aucun PDF chargé 0 masque(s)
📤 Exporter la configuration
Génère un fichier .json avec vos listes, à envoyer par e-mail à d’autres établissements.
📥 Importer une configuration
Importez un fichier reçu. Vos réglages locaux ne seront pas supprimés.
🛡️ Règles actives
Ces règles adaptent le moteur à votre établissement. Chaque règle est validée avant activation.
LabelTypeCible → RésultatStatut
Masquer le sigle CHUXX exact CHUXX[MASK] Actif
Préserver “classification internationale” preserve conservé tel quel Actif
Identifier N° 1234567 norm-id N° 1234567[NDA] Candidat
ℹ️ Informations
🏷️
Version
v6.0 (prototype)
📅
Build
2026-04-28
🧠
Moteurs NER
CamemBERT · EDS-Pseudo · GLiNER
🔒
Traitement
100 % local — aucune donnée transmise
📚
Gazetteers
INSEE 219K · FINESS 108K · BDPM 7K
📁
Formats
PDF · DOCX · ODT · RTF · TXT · Images
📊 Dernière session
100.0
/ 100 · A+
22 PDFs · 0 fuite détectée
""" HTML = HTML.replace("LOGO_PLACEHOLDER", LOGO_SRC) OUT_PATH.write_text(HTML, encoding="utf-8") print("OK — {} ({} Ko)".format(OUT_PATH, OUT_PATH.stat().st_size // 1024))