Files
Presidio/custom_recognizers/__init__.py
2025-06-23 11:16:44 +02:00

80 lines
3.1 KiB
Python

from presidio_analyzer import PatternRecognizer, AnalyzerEngine
class MyCustomRecognizerClass:
"""
A class to hold and register custom Presidio recognizers.
This class is referenced in the default.yaml.
"""
# Recognizer pour les numéros de registre national belges (BE_NATIONAL_REGISTER_NUMBER)
belgian_nrn_recognizer = PatternRecognizer(
entity_name="BE_NATIONAL_REGISTER_NUMBER",
supported_language="fr",
patterns=[
{"name": "NRN_Pattern", "regex": "\\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}
],
context=["registre national", "nrn", "niss", "numéro national"]
)
# Recognizer pour les numéros d'entreprise belges (BE_ENTERPRISE_NUMBER)
belgian_enterprise_recognizer = PatternRecognizer(
entity_name="BE_ENTERPRISE_NUMBER",
supported_language="fr",
patterns=[
{"name": "BTW_Pattern", "regex": "\\bBE\\s?0\\d{3}[\\.\\s]?\\d{3}[\\.\\s]?\\d{3}\\b", "score": 0.95}
],
context=["entreprise", "btw", "tva", "numéro d'entreprise", "rcs", "kbo"]
)
# Recognizer pour les IBAN (qui inclura les IBAN belges)
iban_recognizer = PatternRecognizer(
entity_name="IBAN",
supported_language="fr",
patterns=[
{"name": "IBAN_Pattern", "regex": "\\b[A-Z]{2}\\d{2}\\s?(?:[A-Z0-9]{4}\\s?){2,7}[A-Z0-9]{1,4}\\b", "score": 0.95}
],
context=["iban", "compte", "bancaire", "bancaires", "bic", "swift"]
)
# Recognizer pour les numéros de téléphone
phone_recognizer = PatternRecognizer(
entity_name="PHONE_NUMBER",
supported_language="fr",
patterns=[
{"name": "Phone_Pattern", "regex": "\\b(?:(?:\\+|00)?(?:32|33|352)|0)\\s?[1-9](?:[\\s.-]?\\d{2}){3,4}\\b", "score": 0.8}
],
context=["téléphone", "tel", "mobile", "gsm", "contact"]
)
# Recognizer pour les adresses email
email_recognizer = PatternRecognizer(
entity_name="EMAIL_ADDRESS",
supported_language="fr",
patterns=[
{"name": "Email_Pattern", "regex": "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b", "score": 1.0}
],
context=["email", "courriel", "adresse électronique"]
)
# Recognizer pour les montants monétaires
money_recognizer = PatternRecognizer(
entity_name="MONEY",
supported_language="fr",
patterns=[
{"name": "Money_Pattern", "regex": "(?:EUR|€)\\s*\\d{1,3}(?:[.,\\s]\\d{3})*(?:[.,]\\d{2})?|\\d{1,3}(?:[.,\\s]\\d{3})*(?:[.,]\\d{2})?\\s*(?:EUR|€)", "score": 0.85}
]
)
# La liste des recognizers qui seront exposés par ce module
# Presidio va les trouver automatiquement s'ils sont des instances de Recognizer
# et accessibles dans le module spécifié.
# On met directement les instances de PatternRecognizer ici
__all__ = [
"belgian_nrn_recognizer",
"belgian_enterprise_recognizer",
"iban_recognizer",
"phone_recognizer",
"email_recognizer",
"money_recognizer"
]