presidio modulaire

This commit is contained in:
nBiqoz
2025-09-07 12:29:08 +02:00
parent 85d95d05e5
commit c62e5b92d5
42 changed files with 1802 additions and 324 deletions

View File

@@ -0,0 +1,44 @@
# Recognizer pour adresses belges complètes
recognizer_registry:
recognizers:
- name: BelgianAddressRecognizer
supported_language: fr
supported_entity: BE_ADDRESS
patterns:
# Pattern principal : numéro + rue + code postal + ville (SANS contexte)
- name: Adresse complète avec numéro devant
regex: "\\b\\d{1,4}[A-Za-z]?\\s+(?:Avenue|Rue|Boulevard|Chaussée|Place|Quai|Impasse|Drève|Clos|Allée)\\s+(?:de\\s+la\\s+|de\\s+|du\\s+|des\\s+|d'|la\\s+|le\\s+)?[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*\\s*,\\s*[1-9]\\d{3}\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*"
score: 1.0
# Pattern avec lookbehind positif pour exclure "demeurant" de la capture
- name: Adresse après contexte demeurant
regex: "(?<=\\bdemeurant\\s)\\d{1,4}[A-Za-z]?\\s+(?:Avenue|Rue|Boulevard|Chaussée|Place|Quai|Impasse|Drève|Clos|Allée)\\s+(?:de\\s+la\\s+|de\\s+|du\\s+|des\\s+|d'|la\\s+|le\\s+)?[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*\\s*,\\s*[1-9]\\d{3}\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*"
score: 1.0
# Pattern avec lookbehind pour autres contextes
- name: Adresse après contexte résidant
regex: "(?<=\\b(?:résidant|domicilié|habite|situé)\\s)\\d{1,4}[A-Za-z]?\\s+(?:Avenue|Rue|Boulevard|Chaussée|Place|Quai|Impasse|Drève|Clos|Allée)\\s+(?:de\\s+la\\s+|de\\s+|du\\s+|des\\s+|d'|la\\s+|le\\s+)?[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*\\s*,\\s*[1-9]\\d{3}\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*"
score: 1.0
# Pattern avec lookbehind pour contexte bureaux
- name: Adresse après contexte bureaux
regex: "(?<=\\b(?:dans les bureaux situés|siège social situé)\\s)\\d{1,4}[A-Za-z]?\\s+(?:Avenue|Rue|Boulevard|Chaussée|Place|Quai|Impasse|Drève|Clos|Allée)\\s+(?:de\\s+la\\s+|de\\s+|du\\s+|des\\s+|d'|la\\s+|le\\s+)?[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*\\s*,\\s*[1-9]\\d{3}\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*"
score: 0.9
# Pattern alternatif : rue + numéro + ville (format classique)
- name: Adresse format classique
regex: "\\b(?:Avenue|Rue|Boulevard|Chaussée|Place|Quai|Impasse|Drève|Clos|Allée)\\s+(?:de\\s+la\\s+|de\\s+|du\\s+|des\\s+|d'|la\\s+|le\\s+)?[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*(?:\\s*,?\\s*\\d{1,4}[A-Za-z]?)?\\s*,\\s*[1-9]\\d{3}\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+(?:\\s+[A-ZÀ-Ÿ][a-zà-ÿ'-]+)*"
score: 0.8
context:
[
"demeurant",
"résidant",
"domicilié",
"habite",
"situé au",
"sis à",
"dans les bureaux situés",
"siège social",
"adresse",
]

View File

@@ -0,0 +1,26 @@
# Recognizer pour documents belges
recognizer_registry:
recognizers:
- name: BelgianIDCardRecognizer
supported_language: fr
supported_entity: BE_ID_CARD
patterns:
- name: Carte d'identité belge
regex: "\\b[0-9]{3}\\-[0-9]{7}\\-[0-9]{2}\\b"
score: 0.95
- name: eID compact
regex: "\\b[0-9]{12}\\b"
score: 0.8
context: ["carte d'identité", "eID", "identiteitskaart", "pièce d'identité"]
- name: BelgianPassportRecognizer
supported_language: fr
supported_entity: BE_PASSPORT
patterns:
- name: Passeport belge
regex: "\\b[A-Z]{2}[0-9]{6}\\b"
score: 0.95
- name: Passeport avec espaces
regex: "\\b[A-Z]{2}\\s[0-9]{6}\\b"
score: 0.9
context: ["passeport", "passport", "paspoort", "document de voyage"]

View File

@@ -0,0 +1,25 @@
# Recognizer pour numéro de registre national belge
recognizer_registry:
recognizers:
- name: BelgianNRNRecognizer
supported_language: fr
supported_entity: BE_NATIONAL_REGISTER_NUMBER
patterns:
- name: NRN avec points et tiret
regex: "\\b[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}-[0-9]{3}\\.[0-9]{2}\\b"
score: 1.0
- name: NRN compact
regex: "\\b[0-9]{11}\\b"
score: 0.7
- name: NRN avec espaces
regex: "\\b[0-9]{2}\\s[0-9]{2}\\s[0-9]{2}\\s[0-9]{3}\\s[0-9]{2}\\b"
score: 0.8
context:
[
"registre national",
"numéro national",
"NN",
"RN",
"identité",
"carte d'identité",
]

View File

@@ -0,0 +1,44 @@
# Recognizer pour numéros de téléphone belges
recognizer_registry:
recognizers:
- name: BelgianPhoneRecognizer
supported_language: fr
supported_entity: BE_PHONE_NUMBER
patterns:
# Patterns avec contexte Tel: et Tél:
- name: Téléphone fixe avec contexte Tel
regex: '(?<=Tel\s*:\s*)0[1-9](?:[./\s]?\d{2,3}){3}(?=\s|\)|$|[.,;])'
score: 0.99
- name: Téléphone fixe avec contexte Tél
regex: '(?<=Tél\s*:\s*)0[1-9](?:[./\s]?\d{2,3}){3}(?=\s|\)|$|[.,;])'
score: 0.99
- name: Mobile avec contexte Tel
regex: '(?<=Tel\s*:\s*)04[0-9]{2}[./\s]?[0-9]{2}[./\s]?[0-9]{2}[./\s]?[0-9]{2}(?=\s|\)|$|[.,;])'
score: 0.99
- name: Mobile avec contexte Tél
regex: '(?<=Tél\s*:\s*)04[0-9]{2}[./\s]?[0-9]{2}[./\s]?[0-9]{2}[./\s]?[0-9]{2}(?=\s|\)|$|[.,;])'
score: 0.99
# Patterns généraux (sans contexte spécifique)
- name: Téléphone fixe belge
regex: '(?<!BCE\s*:?\s*)\b0[1-9](?:[./\s]?\d{2,3}){3}(?=\b|\)|$|[.,;])(?!.*BCE)'
score: 0.95
- name: Mobile belge
regex: '\b04[0-9]{2}[./\s]?[0-9]{2}[./\s]?[0-9]{2}[./\s]?[0-9]{2}(?=\b|\)|$|[.,;])'
score: 0.98
- name: International belge
regex: '\+32\s?[1-9](?:[./\s]?\d{2,3}){3}(?=\b|\)|$|[.,;])'
score: 0.99
- name: Numéro vert belge
regex: '\b0800[./\s]?[0-9]{2}[./\s]?[0-9]{3}(?=\b|\)|$|[.,;])'
score: 0.9
context:
[
"Tel",
"Tél",
"téléphone",
"gsm",
"mobile",
"portable",
"appeler",
"joindre",
]