Anonimizador de Documentos - Proteja dados sensíveis em seus arquivos de forma simples e reversível.
O Lethe.TXT detecta e substitui automaticamente:
- 👤 Nomes de pessoas (usando NLP com spaCy)
- 📋 CPFs (com validação de dígitos verificadores)
- 🪪 RGs (com validação de formato)
- 📅 Datas de nascimento (substituídas por datas que garantem 18+ anos)
- Python 3.12+
- UV (gerenciador de pacotes recomendado)
Para processar arquivos .doc antigos, você pode precisar instalar:
macOS:
brew install antiwordUbuntu/Debian:
sudo apt-get install antiwordcd LetheTXTuv venv .venvmacOS/Linux:
source .venv/bin/activateWindows:
.venv\Scripts\activate.batuv pip install -r requirements.txtNo Prompt de Comando ou PowerShell:
cd LetheTXT
uv venv .venv
.venv\Scripts\activate.bat
uv pip install -r requirements.txt
run_streamlit.batSe preferir executar manualmente, ative o ambiente com .venv\Scripts\activate.bat e rode streamlit run app.py.
A forma mais simples de usar o Lethe.TXT:
macOS/Linux:
./run_streamlit.shWindows:
run_streamlit.batOu manualmente:
source .venv/bin/activate # ou .venv\Scripts\activate.bat no Windows
streamlit run app.pyA interface será aberta automaticamente no navegador em http://localhost:8501.
Para automação ou uso em scripts:
python cli.py anonymize documento.docx -p "minha_senha_secreta"Opções:
-o, --output: Arquivo de saída (padrão:<nome>_anonimizado.txt)-m, --mapping: Arquivo de mapeamento (padrão:<nome>_mapping.lethe)-s, --seed: Seed para resultados reproduzíveis--show-mapping: Exibir substituições realizadas
python cli.py reverse documento_anonimizado.txt documento_mapping.lethe -p "minha_senha_secreta"Opções:
-o, --output: Arquivo de saída (padrão:<nome>_restaurado.txt)
python cli.py info| Formato | Extensão | Biblioteca |
|---|---|---|
| Texto simples | .txt |
Nativo |
| Word (novo) | .docx |
python-docx |
| Word (antigo) | .doc |
textract (requer antiword) |
.pdf |
pypdf |
O mapeamento de substituições (que permite reverter a anonimização) é criptografado usando:
- Algoritmo: Fernet (AES-128-CBC + HMAC)
- Derivação de chave: PBKDF2 com SHA-256 (480.000 iterações)
- Salt: 16 bytes aleatórios por arquivo
.lethe em local seguro. Sem eles, não é possível reverter a anonimização.
João da Silva, CPF 123.456.789-09, nascido em 15/03/1990,
compareceu à audiência representado por Maria Santos.
Pedro Oliveira, CPF 987.654.321-00, nascido em 22/07/1985,
compareceu à audiência representado por Ana Costa.
LetheTXT/
├── app.py # Interface Streamlit
├── cli.py # Interface CLI (Typer)
├── core/
│ ├── __init__.py
│ ├── anonymizer.py # Lógica de anonimização
│ ├── crypto.py # Criptografia do mapeamento
│ ├── document_parser.py # Extração de texto
│ ├── entity_detector.py # Detecção de entidades (spaCy)
│ └── validators.py # Validação de CPF/RG
├── benchmark_parsers.py # Benchmark de bibliotecas
├── requirements.txt
├── run_streamlit.sh # Script de execução (Unix)
├── run_streamlit.bat # Script de execução (Windows)
└── README.md
Para testar a performance das bibliotecas de parsing:
python benchmark_parsers.py- O modelo spaCy
pt_core_news_lgé baixado automaticamente com as dependências - Para arquivos muito grandes, considere usar a CLI para melhor performance
- A detecção de nomes depende do contexto - nomes isolados podem não ser detectados
Matheus C. Pestana / GENI-UFF
Este projeto é de código aberto. Use com responsabilidade.
