No project description provided
Project description
PDF-Sanitizer
PDFSanitizer é uma ferramenta Python poderosa para analisar, detectar e tratar conteúdos suspeitos dentro de arquivos PDF. Ideal para ambientes que lidam com documentos potencialmente inseguros, ela permite identificar elementos como textos ocultos, fontes esquisitas, caracteres de controle e imagens com características suspeitas.
Funcionalidades
- 📄 Análise de conteúdo textual (texto invisível, fontes estranhas, etc.)
- 🖼️ Verificação de imagens (entropia baixa, metadados suspeitos, tamanhos incomuns)
- ✂️ Múltiplas formas de tratamento (remover, substituir, destacar ou apenas exibir)
- 🔁 Suporte a múltiplos PDFs em uma única chamada
- 🧪 Resultados prontos para serem consumidos por outras aplicações
Instalação
pip install pymupdf Pillow
Como funciona
- Recebe arquivos PDF codificados em base64
- Analisa cada página do PDF buscando textos e imagens suspeitas
- Aplica o tratamento configurado (
remove,replace,highlight,show) - Retorna o PDF sanitizado + as informações dos elementos suspeitos encontrados
Uso
Função principal
from your_module import sanitize_pdf
# Um único PDF base64
result = sanitize_pdf(pdf_base64_data, error_treatment="remove", show_info=True)
# Vários PDFs
results = sanitize_pdf([pdf1_base64, pdf2_base64], error_treatment="highlight", show_info=True)
Tratamentos disponíveis
"remove"– Remove o conteúdo suspeito"replace"– Substitui por um marcador"highlight"– Destaca o conteúdo (ex: texto vermelho, bordas)"show"– Apenas mostra, sem modificações
Estrutura do Projeto
PDFSanitizer: Classe principal, herda lógica da classeProcessPDFMethodsProcessPDFMethods: Onde a mágica acontece – análise de texto, imagens e reescrita das páginassanitize_pdf: Interface externa para uso em aplicações ou pipelinesSanitizationResult: Objeto de retorno que contém:base64_pdf: PDF tratadois_doc_suspect: Booleano indicando se há algo estranhosuspect_elements: Lista de textos/imagens considerados suspeitos
Regras de Detecção
Texto
hidden_text_rule: Detecta texto invisível (ex: branco em fundo branco)weird_font_rule: Detecta fontes não usuaiscontrol_character_rule: Caracteres ASCII de controlemargin_outlier_rule: Textos posicionados fora das margens usuais
Imagens
image_rule: Verifica entropia, metadados e resolução da imagem
Exemplo de Resultado
SanitizationResult(
base64_pdf='JVBERi0xLjcKJ...',
is_doc_suspect=True,
suspect_elements={
"text": [
SuspectText(page_number=1, reason="potential harmful text", text="invisible spam")
],
"images": [
SuspectImage(page_number=2, reason="potential harmful image", image_name="img1.jpg", image_bytes=b'...')
]
}
)
Contribuindo
Pull requests são mais do que bem-vindos! Envie melhorias de regras, tratamento, refatorações ou novas ideias.
⚠Aviso
Este projeto é experimental. Nenhuma regra substitui uma análise humana completa. Use com sabedoria!
Licença
MIT License.
Project details
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 pdf_sanitizer_diacde-1.3.0.tar.gz.
File metadata
- Download URL: pdf_sanitizer_diacde-1.3.0.tar.gz
- Upload date:
- Size: 3.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f050c77e06c105426c2f0b2101776e5b1d920531f0ffb1e6df086ac3e754b1cb
|
|
| MD5 |
536e6680653c5b6874465cd1d0c539bc
|
|
| BLAKE2b-256 |
3ba82cb483e4f4a20fb3cd9f85af3f0e936afeba5fbfbb3c053b12c66e5d43b8
|
File details
Details for the file pdf_sanitizer_diacde-1.3.0-py3-none-any.whl.
File metadata
- Download URL: pdf_sanitizer_diacde-1.3.0-py3-none-any.whl
- Upload date:
- Size: 3.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed0891a4bda4f5b23e9cd28c93a6d7d0a7d9a017b874cca9791e86631ae72f71
|
|
| MD5 |
f0f406c8780d0016533a12511c1456ab
|
|
| BLAKE2b-256 |
dfee0570fc8c9e548877d78ebde255b8322541e6ece80cad5a7dbf63e3ddaa5e
|