Presidio is a data protection SDK that finds and de-identifies personally identifiable information (PII) in text, images, and structured data. It detects entities such as credit card numbers, names, locations, social security numbers, bitcoin wallets, US phone numbers, and financial data, then masks, replaces, or otherwise anonymizes them. It is moving from its original home to a community-owned project.
Detection combines predefined and custom recognizers built on named entity recognition, regular expressions, rule-based logic, and checksums, using surrounding context and supporting multiple languages. External PII detection models can be plugged in, recognizers can be filtered by country, and the decision process can be traced. Separate packages handle analysis, anonymization, image redaction (including DICOM medical images), and structured or semi-structured data.
Presidio runs from Python or PySpark workloads, as Docker containers with a REST API, or on Kubernetes, and supports both fully automated and semi-automated de-identification flows. One documented pattern masks PII in LLM calls through the LiteLLM proxy. Because detection is automated, Presidio does not guarantee finding all sensitive data, and it is meant to sit alongside other protections.
Features
- Analyzer: detects PII entities in text with predefined and custom recognizers
- Recognizer types: named entity recognition, regular expressions, rule-based logic, and checksums, with context awareness
- Anonymizer: masks, replaces, or otherwise de-identifies detected entities
- Image redaction: removes PII text from standard images and DICOM medical images
- Structured data: de-identification for tabular and semi-structured data
- External models: connect outside PII detection models and customize the NLP model
- Multilingual and per-country: recognizers in multiple languages, filterable by country
- Decision tracing: inspect why a span was identified as PII
- Deployment options: Python, PySpark, Docker with a REST API, or Kubernetes
- LLM call masking: mask PII in LLM requests routed through the LiteLLM proxy


