From 9f5645fc82d8899d94dcea99843725e92e704927 Mon Sep 17 00:00:00 2001 From: Nacim Date: Mon, 16 Jun 2025 00:49:31 +0200 Subject: [PATCH] Create custom_recognizers.py --- presidio_config/custom_recognizers.py | 48 +++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 presidio_config/custom_recognizers.py diff --git a/presidio_config/custom_recognizers.py b/presidio_config/custom_recognizers.py new file mode 100644 index 0000000..67643d8 --- /dev/null +++ b/presidio_config/custom_recognizers.py @@ -0,0 +1,48 @@ +from presidio_analyzer import Pattern, PatternRecognizer + +# Ce fichier définit nos détecteurs personnalisés sous forme de classes Python. +# C'est beaucoup plus robuste que le JSON. + +# --- DÉTECTEURS BELGES --- + +class BelgianNrnRecognizer(PatternRecognizer): + """Détecteur pour le Numéro de Registre National belge.""" + PATTERNS = [ + Pattern( + name="NRN (avec séparateurs)", + regex=r"\b(?:[0-9]{2}(?:\.0[1-9]|\.1[0-2])(?:\.0[1-9]|\.[12][0-9]|\.3[01]))-\d{3}\.\d{2}\b", + score=1.0, + ), + Pattern( + name="NRN (sans séparateurs)", + regex=r"\b(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12][0-9]|3[01]))\d{5}\b", + score=0.8, + ), + ] + CONTEXT = ["registre national", "nrn", "niss"] + SUPPORTED_ENTITY = "BE_NATIONAL_REGISTER_NUMBER" + +class BelgianEnterpriseRecognizer(PatternRecognizer): + """Détecteur pour le N° d'entreprise belge.""" + PATTERNS = [Pattern(name="BTW/TVA", regex=r"\bBE\s?0\d{3}\.\d{3}\.\d{3}\b", score=0.95)] + CONTEXT = ["numéro d'entreprise", "btw", "tva"] + SUPPORTED_ENTITY = "BE_ENTERPRISE_NUMBER" + +# --- DÉTECTEURS RGPD GÉNÉRIQUES --- + +class IbanRecognizer(PatternRecognizer): + """Détecteur pour les IBAN.""" + PATTERNS = [Pattern(name="IBAN", regex=r"\b[A-Z]{2}\d{2}\s?(?:\d{4}\s?){4,7}\d{1,4}\b", score=0.95)] + CONTEXT = ["iban", "compte", "bancaire"] + SUPPORTED_ENTITY = "IBAN" + +# Ajoutez ici d'autres classes pour les autres regex si nécessaire... +# (Ex: FrenchNIRRecognizer, PhoneRecognizer, etc.) + +# Liste de tous les reconnaisseurs à charger +custom_recognizers = [ + BelgianNrnRecognizer, + BelgianEnterpriseRecognizer, + IbanRecognizer, + # Ajoutez les autres classes de reconnaisseurs ici +]