diff --git a/anonymizer_core_refactored_onnx.py b/anonymizer_core_refactored_onnx.py index 98a14a6..2214dd4 100644 --- a/anonymizer_core_refactored_onnx.py +++ b/anonymizer_core_refactored_onnx.py @@ -583,6 +583,14 @@ RE_EXTRACT_NOM_USUEL = re.compile( r"([A-ZÉÈÀÙÂÊÎÔÛÄËÏÖÜÇÑ][A-ZÉÈÀÙÂÊÎÔÛÄËÏÖÜÇÑ\-\']{3,})", re.MULTILINE, ) +# F2 — capture du nom utilisé PRÉCÉDANT le label "Nom usuel :". +# Cas typique BACTERIO : la ligne juste avant "Nom usuel :" contient +# l'identité patient sous forme "NAME Prenom1 Prenom2" sans label devant +# (ex: "SIMONET Marie lise\nNom usuel :"). On capture cette ligne entière. +RE_EXTRACT_NAME_BEFORE_NOM_USUEL = re.compile( + r"^([A-ZÉÈÀÙÂÊÎÔÛÄËÏÖÜÇÑ]{4,}(?:\s+[A-Za-zÀ-Ÿ\-\']+){1,3})\s*\n\s*Nom\s+usuel\s*:", + re.MULTILINE, +) RE_EXTRACT_PRENOM = re.compile( r"Pr[ée]nom\s+(?:de\s+naissance|utilis[ée])\s*:\s*" r"([A-ZÉÈÀÙÂÊÎÔÛÄËÏÖÜÇÑ][A-ZÉÈÀÙÂÊÎÔÛÄËÏÖÜÇÑa-zéèàùâêîôûäëïöüçñ\-\' ]+?)(?:\s*$)", @@ -2154,6 +2162,9 @@ def _extract_document_names(full_text: str, cfg: Dict[str, Any]) -> Tuple[set, s # F3 — "Nom usuel :" + ligne suivante (skip date intermédiaire) for m in RE_EXTRACT_NOM_USUEL.finditer(full_text): _add_tokens_force_all(m.group(1), "RE_EXTRACT_NOM_USUEL", "high") + # F2 — ligne "NAME Prenom Prenom" précédant directement "Nom usuel :" + for m in RE_EXTRACT_NAME_BEFORE_NOM_USUEL.finditer(full_text): + _add_tokens_force_all(m.group(1), "RE_NAME_BEFORE_NOM_USUEL", "high") for m in RE_EXTRACT_NOM_PRENOM.finditer(full_text): _add_tokens_force_all(m.group(1), "RE_EXTRACT_NOM_PRENOM", "high") for m in RE_EXTRACT_PRENOM.finditer(full_text):