Skip to main content

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

  1. Recebe arquivos PDF codificados em base64
  2. Analisa cada página do PDF buscando textos e imagens suspeitas
  3. Aplica o tratamento configurado (remove, replace, highlight, show)
  4. 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 classe ProcessPDFMethods
  • ProcessPDFMethods: Onde a mágica acontece – análise de texto, imagens e reescrita das páginas
  • sanitize_pdf: Interface externa para uso em aplicações ou pipelines
  • SanitizationResult: Objeto de retorno que contém:
    • base64_pdf: PDF tratado
    • is_doc_suspect: Booleano indicando se há algo estranho
    • suspect_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 usuais
  • control_character_rule: Caracteres ASCII de controle
  • margin_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

pdf_sanitizer_diacde-1.3.0.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdf_sanitizer_diacde-1.3.0-py3-none-any.whl (3.1 kB view details)

Uploaded Python 3

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

Hashes for pdf_sanitizer_diacde-1.3.0.tar.gz
Algorithm Hash digest
SHA256 f050c77e06c105426c2f0b2101776e5b1d920531f0ffb1e6df086ac3e754b1cb
MD5 536e6680653c5b6874465cd1d0c539bc
BLAKE2b-256 3ba82cb483e4f4a20fb3cd9f85af3f0e936afeba5fbfbb3c053b12c66e5d43b8

See more details on using hashes here.

File details

Details for the file pdf_sanitizer_diacde-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pdf_sanitizer_diacde-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ed0891a4bda4f5b23e9cd28c93a6d7d0a7d9a017b874cca9791e86631ae72f71
MD5 f0f406c8780d0016533a12511c1456ab
BLAKE2b-256 dfee0570fc8c9e548877d78ebde255b8322541e6ece80cad5a7dbf63e3ddaa5e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page