Projeto em Python que utiliza o Microsoft Presidio com reconhecedores personalizados para entidades brasileiras como CPF e RG, permitindo identificar e classificar informações sensíveis em textos, com validação real de dados (como verificação de CPF válido).
| Entidade | Descrição |
|---|---|
EMAIL_ADDRESS |
Endereços de e-mail |
AGE |
Idades representadas como números com ou sem a palavra "anos" |
URL |
Links e endereços de sites |
PHONE_NUMBER |
Números de telefone com ou sem DDD |
DATE_TIME |
Datas e horários em vários formatos |
| Entidade | Descrição |
|---|---|
CPF |
Número de CPF (com validação dos dígitos verificadores) |
RG |
Número de RG (com ou sem separadores como traços ou pontos) |
CEP |
Código de Endereçamento Postal brasileiro (CEP), com validação opcional |
ENDERECO |
Endereços completos ou parciais |
PESSOA |
Nomes completos de pessoas físicas |
Ao mudar o modelo Transformers, você pode precisar ajustar como as entidades são mapeadas para o Recognizer.
Cada Recognizer possui um arquivo correspondente na pasta *customized_recognizers*, onde essa lógica pode ser alterada para compatibilidade com o modelo escolhido.
- Python → 3.12.x
- Dependências no
requirements.txt
Crie e ative um ambiente virtual:
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activate
pip install -r requirements.txtVocê pode executar o script principal passando o texto via flag --text. Exemplo:
python main.py --text "TERMO DE CONSENTIMENTO PARA TRATAMENTO DE DADOS PESSOAIS... CPF: 456.789.012-33 RG: 33.221.445-0 ..."Outros argumentos opcionais:
--language→ idioma do texto (padrão:pt)--entities→ lista de entidades a buscar (ex:CPF RG EMAIL_ADDRESS)--nlp→ engine de NLP (spacyoutransformers) — padrão:spacy--spacy_model→ nome do modelo SpaCy (padrão:pt_core_news_lg)--transformer_model→ nome do modelo Transformers (padrão:pierreguillou/ner-bert-base-cased-pt-lenerbr)
-
Utiliza o
Presidio Analyzercom NLP em português viaspaCyouTransformers. -
Adiciona reconhecedores customizados para:
- ✅ CPF (com validação dos dígitos verificadores)
- ✅ RG (com ou sem traços/pontos)
-
Pós-processa os resultados:
- Para CPFs válidos, atribui
score = 1.0 - Para CPFs inválidos, atribui
score = 0.0
- Para CPFs válidos, atribui
python main.py --text "..." --entities CPF RG EMAIL_ADDRESSpython main.py --text "..." --nlp spacy --spacy_model pt_core_news_mdpython main.py --text "..." --nlp transformers --transformer_model pierreguillou/ner-bert-base-cased-pt-lenerbrtype: CPF, start: 175, end: 189, score: 1.0
type: RG, start: 195, end: 207, score: 0.75
type: EMAIL_ADDRESS, start: 346, end: 370, score: 1.0
...