Presidio PII Detection ====================== **4 probes** Integration with `Microsoft Presidio `_ for detecting Personally Identifiable Information in dataset samples. Supports approximately 75 built-in entity types plus custom patterns defined in YAML. Includes PAN detection with Luhn checksum validation, FinServ-specific patterns (IBAN, SWIFT/BIC), and domain-specific recognisers loaded from a user-supplied YAML file. Install ------- .. code-block:: bash pip install 'metapod-probes[presidio]' This pulls in ``presidio-analyzer`` and ``presidio-anonymizer`` as transitive dependencies. Configuration ------------- .. code-block:: yaml sources: - type: presidio dataset_path: /data/landing/*.csv sample_rows: 500 score_threshold: 0.7 custom_recognizers: /etc/metapod/pii_patterns.yaml entities: - PERSON - EMAIL_ADDRESS - CREDIT_CARD - IBAN_CODE - IT_FISCAL_CODE Probes ------ .. list-table:: :header-rows: 1 :widths: 40 60 * - Probe - Description * - ``presidio.compliance.pii_scan`` - Scan dataset samples for PII entities (~75 built-in types) * - ``presidio.compliance.pan_detection`` - Detect payment card numbers with Luhn checksum validation * - ``presidio.compliance.finserv_patterns`` - Detect FinServ patterns (IBAN, SWIFT/BIC, account numbers) * - ``presidio.compliance.custom_patterns`` - Evaluate user-defined recognisers from YAML configuration Usage ----- .. code-block:: bash metapod run "presidio.compliance.*" --config config.yaml Output ------ .. code-block:: json { "probe": "presidio.compliance.pii_scan", "source": "presidio", "collected_at": "2026-03-31T08:00:00Z", "results": [ { "dataset": "customers.csv", "column": "cf", "entity_type": "IT_FISCAL_CODE", "occurrences": 312, "score": 0.95, "sample_redacted": "RSSMRA85M01H501Z" } ] }