Ferramenta para anonimização de documentos com foco no SEI.
Project description
Anonimizador de Documentos
Visão Geral
Ferramenta para anonimização de documentos (.pdf, .docx, .txt), projetada para processar e redigir informações sensíveis e dados pessoais. A ferramenta trata a anonimização de documentos do Sistema Eletrônico de Informações (SEI) corretamente, identificando e mascarando padrões específicos da plataforma. O script opera através de uma interface gráfica nativa (Tkinter) e de uma classe estruturada (DocumentAnonimizer) para uso programático.
🚀 Executável Prontamente Disponível (Sem Código)
Para usuários que não desejam utilizar linhas de comando ou códigos Python, o programa possui um executável com interface gráfica nativa, intuitivo e fácil de usar. Basta baixar e executar localmente no computador.
🔗 Clique aqui para baixar o Executor Confiável (v1.0.0)
Recursos de Anonimização
O sistema identifica e mascara os seguintes elementos no texto e na estrutura dos arquivos:
- Documentos SEI: Oculta números de 7 dígitos e Códigos de Autenticação (CRC). Em arquivos PDF, aplica tarjas sobre QR Codes e Barras Laterais de Autenticação do sistema.
- CPF: Formato de saída
***.XXX.XXX-** - RG e Data de Expedição
- E-mails e Telefones
- Links: Remoção de hiperlinks da estrutura do arquivo (PDF) ou substituição no texto (
.docx,.txt). - Nomes Próprios: Identificação por Processamento de Linguagem Natural (NLP) via
spaCye expressões regulares de resgate.
Requisitos e Dependências
O projeto requer Python 3.x e as seguintes bibliotecas:
PyMuPDF(fitz): Para leitura e manipulação das camadas do PDF.python-docx: Para processamento de arquivos Microsoft Word.spacy: Para o motor de NLP.- Modelo NLP do spaCy:
pt_core_news_lg.
Instalação
pip install PyMuPDF python-docx spacy
python -m spacy download pt_core_news_lg
Uso Programático (Classe DocumentAnonimizer)
A classe DocumentAnonimizer é a interface principal para integrar a anonimização em fluxos de dados ou automações. Deve ser utilizada via gerenciador de contexto (with) para gerenciar o estado da execução.
Estrutura de Opções
O comportamento da classe é definido por um dicionário passado no momento da instanciação. O padrão, caso omitido, é:
opcoes_padrao = {
"cpf": True,
"rg": True,
"email_tel": True,
"doc_sei": True,
"qr_code": True,
"links": True,
"nomes": False,
"modo_nomes": "iniciais" # Alternativa: "total" para [NOME]
}
Exemplo 1: Processamento de Arquivo Único
Demonstração de configuração para mascarar apenas CPFs e Nomes em um arquivo de texto.
from anonimizer import DocumentAnonimizer
config = {
"cpf": True,
"nomes": True,
"modo_nomes": "total", # Substitui nomes identificados por [NOME]
"email_tel": False,
"rg": False,
"doc_sei": False,
"qr_code": False,
"links": False
}
with DocumentAnonimizer(opcoes=config) as anonimizador:
# Se o caminho de saída for omitido, gera o arquivo com sufixo '_anonimizado.docx'
caminho_saida = anonimizador.processar_arquivo("C:/caminho/para/documento.docx")
print(f"Documento tratado salvo em: {caminho_saida}")
Exemplo 2: Processamento em Lote (Automação de Diretórios)
Demonstração de varredura em um diretório definindo um caminho de saída customizado.
import os
from anonimizer import DocumentAnonimizer
pasta_origem = "dados/originais"
pasta_destino = "dados/anonimizados"
extensoes_suportadas = ('.pdf', '.docx', '.txt')
os.makedirs(pasta_destino, exist_ok=True)
# Utiliza as opções padrão
with DocumentAnonimizer() as anonimizador:
for arquivo in os.listdir(pasta_origem):
if arquivo.lower().endswith(extensoes_suportadas):
caminho_in = os.path.join(pasta_origem, arquivo)
caminho_out = os.path.join(pasta_destino, f"tratado_{arquivo}")
try:
anonimizador.processar_arquivo(caminho_in, caminho_out)
print(f"Sucesso: {arquivo}")
except Exception as e:
print(f"Falha ao processar {arquivo}: {e}")
Referência de Métodos
__init__(self, opcoes: Dict[str, bool] = None): Inicializa a classe. Atribui o dicionário de opções.processar_arquivo(self, caminho_entrada: str, caminho_saida: str = None) -> str: Roteia a execução com base na extensão do arquivo (.pdf,.docx,.txt). Aplica as marcações de redação nas coordenadas identificadas (PDF) ou substitui as cadeias de caracteres diretamente no texto (DOCX/TXT). Retorna o caminho do arquivo gerado.extrair_nomes_nlp(self, texto: str) -> Set[str]: Executa o modelopt_core_news_lgsobre a string fornecida. Filtra entidadesPERconsiderando uma lista restritiva interna (termos_protegidos). Retorna um conjunto (set) de strings com os nomes validados.
Interface Gráfica
Para a execução visual interativa, execute o arquivo de forma direta:
python anonimizer.py
Considerações para Implementações Futuras e Automação
- Gestão de Memória: O modelo
pt_core_news_lgconsome recursos na inicialização. Em fluxos que instanciam o script iterativamente, mantenha o escopo de importação em nível global para evitar recarregamento repetido do modelo. - Tratamento de Exceções em Lote: Arquivos corrompidos ou mal formatados podem gerar erros de leitura. Mantenha os blocos
try...exceptnas iterações de pasta para garantir que um arquivo danificado não interrompa a esteira de processos (conforme Exemplo 2). - Expansão de Whitelist: Se aplicado em outros setores, modifique a variável
termos_protegidosdentro do métodoextrair_nomes_nlppara incluir siglas departamentais específicas, mitigando a detecção de falsos positivos pelo modelo de reconhecimento de entidades nomeadas (NER).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sei_anonimizer-1.0.2.tar.gz.
File metadata
- Download URL: sei_anonimizer-1.0.2.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5rc1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb0b383a07edada1073591f2900da45d0491ad9bd74a5b4d314d2b7b1cde63ad
|
|
| MD5 |
edd4c6d4914b25499bab8a43f65166e6
|
|
| BLAKE2b-256 |
14698eadaa204b3b7d55e414f1247b9cf223314a5348d22127a175c115c248a9
|
File details
Details for the file sei_anonimizer-1.0.2-py3-none-any.whl.
File metadata
- Download URL: sei_anonimizer-1.0.2-py3-none-any.whl
- Upload date:
- Size: 15.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5rc1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e84a28b40495cb1a23a89036575920a80847449e53f978e89a135c3e889f69c
|
|
| MD5 |
23e9eff80861e37c8569600c99815482
|
|
| BLAKE2b-256 |
74195cd06d8d531cdb856f65c026ce81b4d4c6dbe6e6c213616246c5735e1c36
|