Skip to main content

Converta documentos para Markdown estruturado — libere seu conhecimento de PDFs

Project description

CONVERTER

Converter documentos não é sobre tecnologia. É sobre liberdade de conhecimento.


🚀 Instalação (via PyPI)

pip install kazuba-converter

Uso rápido:

# Converter um PDF
kazuba-converter documento.pdf ./output/

# Converter com OCR (para PDFs escaneados)
kazuba-converter documento.pdf ./output/ --ocr

# Converter pasta inteira
kazuba-converter ./pasta_documentos/ ./output/ --workers 8

📦 PyPI: https://pypi.org/project/kazuba-converter/


🎯 O Problema: Documentos são Prisões de Conhecimento

O Que Você Nunca Notou Sobre PDFs

📄 PDF (Portable Document Format)
│
├── VISUALMENTE: Lindo, formatado, "profissional"
├── PARA HUMANOS: Legível (se você tiver tempo)
└── PARA MÁQUINAS: Um caos estrutural
    ├── Texto? Às vezes (se não for imagem)
    ├── Tabelas? Caixas aleatórias
    ├── Hierarquia? Inexistente
    └── Semântica? Zero.

O PDF foi criado para IMPRIMIR, não para PROCESSAR.

Quando você envia um PDF para uma IA (ChatGPT, Claude, Gemini), ela não "lê" — ela adivinha.

O PDF Esconde:

O Que Você Vê O Que a IA Vê
Capítulo 1: Introdução BT /F1 12 Tf 100 700 Td (Capítulo) Tj
Tabela de preços 4 rects, 12 text boxes, no relation
Nota de rodapé Texto aleatório no fim da página
Formatação em negrito Same font, maybe different weight?

Resultado: A IA perde contexto, estrutura e significado.

HTML: A Web Quebrada

<!-- O que um humano vê: "Preço: R$ 100" -->
<div class="sc-12e8fsh-3 eRjMye price-widget">
  <span class="currency" data-cy="currency-symbol">R$</span>
  <span class="amount" style="font-weight:600!important">100</span>
</div>

O HTML é para BROWSERS, não para COMPREENSÃO.

  • CSS esconde significado
  • JavaScript gera conteúdo dinâmico
  • Classes semânticas? Raras.
  • Extrair dados = Engenharia reversa

DOCX: A Ilusão de Estrutura

DOCX (Word)
├── Parece estruturado...
├── Mas é XML zipado
├── Estilos? Arbitrários.
├── Tabelas? Para layout, não dados.
└── Versões? Incompatíveis.

O DOCX foi feito para edição humana, não para processamento automatizado.


💡 A Solução: Por Que Converter Para Markdown

Markdown é Texto Puro Com Significado

# Capítulo 1: Introdução

Este é um **parágrafo** com *ênfase*.

## Seção 1.1

| Produto | Preço |
|---------|-------|
| Item A  | R$ 100|
| Item B  | R$ 200|

> Esta é uma citação

O que a IA vê:

  • # = Título nível 1
  • ## = Hierarquia clara
  • ** = Importância semântica
  • | = Tabela estruturada
  • > = Citação

Não há adivinhação. Há compreensão.

Benefícios Para QUALQUER Modelo de Linguagem

1. Contexto Ampliado (Token Efficiency)

# PDF convertido "naive"
"PREÇO R$ 100 ITEM A R$ 200 ITEM B ..."  # 50 tokens, sem contexto

# Markdown estruturado  
"| Produto | Preço |\n|---------|-------|\n| Item A  | R$ 100|"  # 20 tokens, total contexto

Mesma informação, 60% menos tokens.

Em modelos como GPT-4, Claude, Gemini:

  • Menos tokens = Menor custo
  • Menos tokens = Maior contexto disponível
  • Menos tokens = Respostas mais precisas

2. Estrutura Semântica Preservada

Elemento No PDF No Markdown Benefício para IA
Título Caixa de texto # Título Entende hierarquia
Lista Bullets gráficos - Item Entende sequência
Tabela Células posicionadas ` A
Ênfase Fonte bold **texto** Entende importância
Citação Aspas + indentação > quote Entende origem

3. RAG (Retrieval Augmented Generation) Efetivo

Problema: Sistemas RAG dividem documentos em chunks.

PDF chunkado:
"...preço do item é R$ 100 e o próximo capítulo..."
   ↑ Contexto perdido: QUAL item? QUAL capítulo?

Markdown chunkado:
"## Capítulo 3: Preços\n\n| Item | Preço |\n|------|-------|\n| A    | R$ 100|"
   ↑ Contexto preservado: Hierarquia clara

Resultado: Busca semântica encontra o que você precisa.

4. Chain-of-Thought Natural

Modelos de raciocínio (o1, Claude 3.5 Sonnet, Gemini 2.5) beneficiam-se de estrutura:

# Análise de Reequilíbrio

## 1. Fatos
- Contrato assinado em 2020
- IPCA acumulado: 25%

## 2. Fundamentação Legal
- Art. 12 da Lei 8.987
- Resolução ANTT 5.820

## 3. Cálculos
```python
indice = 1.25  # IPCA
wacc = 0.08    # Contrato

4. Conclusão

...


**A IA segue o raciocínio estruturado.**

---

## 🔍 Comparativo: Alternativas Existentes

### Opção 1: Bibliotecas Raw (PyPDF2, pdfplumber, etc.)

```python
# Exemplo: Extrair texto de PDF com pdfplumber
import pdfplumber

with pdfplumber.open("documento.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        # O que você recebe:
        # "Texto quebrado\nsem\nestrutura nem contexto"

Complexidade: ⭐⭐⭐⭐☆ (Alta)

  • Precisa entender PDF internamente
  • Cada PDF é um caso diferente
  • OCR para scanned documents = outra biblioteca
  • Tabelas? Boa sorte.

Expertise Necessária:

  • Python intermediário/avançado
  • Entendimento de formatos PDF/DOCX
  • Regex para parsing
  • Debugging de extratos quebrados

Custos Ocultos:

  • Tempo de desenvolvimento: 40-80 horas para pipeline robusto
  • Manutenção: PDFs corrompidos, novos formatos, edge cases
  • Infraestrutura: GPU para OCR, workers para batch
  • Frustração: Alta. "Funciona no meu PDF, não no dele."

Opção 2: Skills de Agentes IA (Claude Code, Cursor, etc.)

Skill: "Ler PDF"

Você diz: "Analise este PDF"
A IA tenta:
1. Extrair texto (melhor esforço)
2. Interpretar estrutura (adivinhação)
3. Responder baseada em fragmentos

Resultado: "Parece que o documento fala sobre..."

Complexidade: ⭐⭐☆☆☆ (Baixa para o usuário) Mas: ⭐⭐⭐⭐⭐ (Muito alta para quem desenvolve a skill)

Expertise Necessária:

  • Engenharia de prompts avançada
  • Tratamento de edge cases
  • Integração com múltiplos formatos
  • Gestão de tokens e contexto

Custos Ocultos:

  • Custo de tokens: Modelos processando PDFs longos = $$$$
  • Latência: 30s-2min por documento
  • Precisão: 70-85% (varia com formato)
  • Dependência: Vendor lock-in na skill/agente

Opção 3: APIs Comerciais (AWS Textract, Google Document AI, Azure Form Recognizer)

# AWS Textract
import boto3

textract = boto3.client('textract')
response = textract.analyze_document(
    Document={'S3Object': {'Bucket': 'docs', 'Name': 'file.pdf'}},
    FeatureTypes=['TABLES', 'FORMS']
)
# Custo: $1.50 por 1.000 páginas (tables/forms)

Complexidade: ⭐⭐⭐☆☆ (Média)

  • Setup AWS/GCP/Azure
  • IAM, roles, permissões
  • Handling de async operations
  • Parsers de resposta JSON complexa

Expertise Necessária:

  • Cloud engineering
  • IAM e segurança
  • Cost management (alertas de billing)
  • Integração APIs

Custos Diretos ($$$):

Serviço Custo por 1.000 págs 10K docs/mês Anual
AWS Textract (Tables+Forms) $1.50 $15.000 $180.000
Google Document AI $1.50 $15.000 $180.000
Azure Form Recognizer $1.50 $15.000 $180.000

Custos Ocultos:

  • Data transfer (egress)
  • Storage (S3, GCS)
  • Lambda/functions para orchestration
  • DevOps para manter pipeline

Opção 4: CONVERTER (Esta Solução)

# Instalação
pip install converter

# Uso
converter documento.pdf --output markdown/

Complexidade: ⭐☆☆☆☆ (Mínima)

  • Instalação: 1 comando
  • Uso: 1 comando
  • Configuração: Opcional

Expertise Necessária:

  • Linha de comando básica
  • Zero programação (modo CLI)
  • Opcional: Python básico (para scripting)

Custos:

  • Software: Grátis (MIT License)
  • Infraestrutura: Seu próprio hardware
  • Tempo: 5 minutos setup
  • Manutenção: Comunidade + updates automáticos

O Que Você Ganha:

Feature Bibliotecas Raw Skills IA APIs Cloud CONVERTER
Setup 8h 2h 4h 5min
OCR integrado ⚠️
Tabelas ⚠️
Batch processing DIY DIY DIY
Custo mensal $0 $$$ $$$$$ $0
Controle total
Offline
Open Source

🎓 Sabedoria: O Paradigma da Conversão

A Metáfora do Tradutor

"PDF é como um livro em chinês para quem só fala português.

Você pode:

  1. Aprender chinês (bibliotecas raw — anos de estudo)
  2. Contratar um tradutor humano por página (APIs cloud — caro)
  3. Usar Google Translate (skills IA — imperfeito)
  4. Ter o livro traduzido uma vez, reutilizar para sempre (CONVERTER — sábio)"

Por Que Isso Importa Para o Futuro

Large Language Models virão e irão.

  • GPT-4 → GPT-5 → GPT-6...
  • Claude 3 → Claude 4 → Claude 5...
  • Gemini, Llama, Mistral, novos players...

Mas a estrutura semântica é eterna.

Um documento em Markdown:

  • Funciona com GPT-4
  • Funcionará com GPT-5
  • Funcionará com qualquer modelo futuro
  • Funciona com RAG híbrido
  • Funciona com agentes autônomos

É um investimento no tempo.

O Custo da Não-Conversão

Cenário Sem Conversão Com CONVERTER
Analisar 100 processos 300 horas (manual) 10 horas (automatizado)
Custo com APIs R$ 50.000/mês R$ 0
Precisão da IA 70% (PDFs crus) 95% (Markdown estruturado)
Tempo de resposta 2-5 dias 15 minutos
Escalabilidade Limitada Ilimitada

🛠️ Como Funciona (O "Como" Depois do "Porquê")

Arquitetura de Conversão

Entrada (PDF/DOCX/HTML/ZIP)
    ↓
[DETECTOR DE FORMATO]
    ↓
[EXTRATOR ESPECÍFICO]
    ├── PDF: PyMuPDF4LLM + OCR cascade
    ├── DOCX: python-docx
    ├── HTML: BeautifulSoup
    └── ZIP: Recursivo + paralelo
    ↓
[ENRIQUECEDOR SEMÂNTICO]
    ├── Detecta tabelas
    ├── Identifica hierarquia
    ├── Preserva metadados
    └── Gera índice
    ↓
Saída (Markdown Estruturado)

OCR Cascade: A Garantia de Leitura

# Estratégia: Tentar do melhor para o mais compatível

1. PaddleOCR (PT-BR excelente, GPU se disponível)
   └── Falhou? 
2. EasyOCR (CPU-friendly, multilíngue)
   └── Falhou? 
3. Tesseract (battle-tested, sempre funciona)
   └── Falhou? 
4. Fallback: "[Imagem não processável - verificar manualmente]"

Status de implementação: OCR cascata completa disponível no CLI (pip). Colab: pymupdf4llm + Tesseract (PaddleOCR em roadmap).

Nenhum documento fica para trás.


📚 Para Quem É Esta Ferramenta

Perfil 1: Analista Jurídico/Regulatório

Problema: 500 páginas de processo administrativo para analisar em 5 dias.

Solução CONVERTER:

converter processo.zip --output analise/
# 15 minutos depois: Markdown estruturado pronto para IA

Resultado: Análise completa em 4 horas, não 40.

Perfil 2: Pesquisador Acadêmico

Problema: 200 papers em PDF para revisão sistemática.

Solução CONVERTER:

converter papers/ --output corpus/ --format jsonl
# Indexa direto em vector store para RAG

Perfil 3: Desenvolvedor de IA

Problema: Precisa de dados estruturados para fine-tuning.

Solução CONVERTER:

from converter import batch_convert

chunks = batch_convert(
    source="datasets/",
    output_format="openai-jsonl",  # Pronto para fine-tuning
    chunk_size=2000
)

Perfil 4: Organização que Quer Autonomia

Problema: Depender de APIs externas é caro e inseguro.

Solução CONVERTER:

  • Self-hosted
  • Open source
  • Controle total dos dados
  • Zero vendor lock-in

☁️ Escala na Nuvem: Colab Híbrido (Rust + Python)

Para processamento em massa (>1000 arquivos), use nosso Colab Híbrido:

Arquitetura

┌──────────────┐   Subprocess   ┌─────────────────┐
│  RUST        │◄──────────────►│  PYTHON WORKERS │
│ Orchestrator │                │                 │
│   (Rayon)    │                │ • pymupdf4llm   │
│              │                │ • pandoc        │
└──────────────┘                │ • tesseract     │
                                └─────────────────┘

Nota: O orquestrador Rust despacha workers Python via subprocess. Roadmap inclui migração para PyO3 (chamadas nativas Rust↔Python).

Quando Usar

Cenário CONVERTER Local Colab Híbrido
< 100 arquivos ✅ Ideal ❌ Overkill
> 1000 arquivos ❌ Lento ✅ Multi-core
Arquivos >100MB ❌ Memória limitada ✅ 12GB RAM
Desenvolvimento ✅ Instantâneo ❌ 2min setup
Dados sensíveis ✅ 100% offline ❌ Cloud

Link do Notebook

Acesse: https://colab.research.google.com/drive/1AjNkcLnar1JzEx8-JVpdDsHXodNmvv7b?usp=sharing

Guia completo: docs/colab-hybrid-guide.md

Performance (Benchmark em Andamento)

Métrica Local (RTX 4060) Colab (T4)
Setup Instantâneo ~2 min
Paralelismo 4-8 workers 2-4 workers
OCR CPU/GPU CPU
Uso recomendado Prototipagem Batch jobs

Nota: Benchmarks detalhados com throughput medido serão publicados após validação completa.

Use CONVERTER local para prototipagem e Colab Híbrido para produção em escala.


🚀 Próximos Passos

Instalação

pip install converter

Primeiro Uso

# Converter um PDF
converter documento.pdf

# Converter ZIP inteiro
converter processos.zip --output markdown/

# Com OCR (para PDFs escaneados)
converter escaneado.pdf --ocr --gpu

Integração com Sua IA Favorita

# Exemplo: Pipeline com Claude
import converter
import anthropic

# 1. Converter
markdown = converter.to_markdown("documento.pdf")

# 2. Enviar para IA
client = anthropic.Anthropic()
response = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=4000,
    messages=[{
        "role": "user",
        "content": f"Analise este documento:\n\n{markdown}"
    }]
)

# 3. Receber análise estruturada
print(response.content)

🗺️ Roadmap e Status

✅ Implementado (v0.1.0)

  • Extração PDF → Markdown (pymupdf4llm)
  • OCR básico (Tesseract fallback)
  • Suporte a DOCX, XLSX, HTML
  • CLI funcional
  • Publicação PyPI

✅ Implementado (v0.2.0)

  • Worker pool persistente (elimina overhead de subprocess)
  • Checkpoint/resume para jobs longos
  • Batch processor com progresso em tempo real
  • Script de benchmark automatizado

🚧 Em Desenvolvimento

  • OCR cascata completa (PaddleOCR → EasyOCR → Tesseract)
  • PyO3 (chamadas nativas Rust↔Python)
  • GPU optimization (CUDA para OCR)

📋 Backlog

  • Suporte a PPTX
  • Integração SEI (download direto de processos)
  • API REST
  • Interface web

Comando batch (novo):

# Processar 1000+ arquivos com checkpoint automático
kazuba-converter batch ./input/ ./output/ --workers 8

# Resume automaticamente se interrompido
kazuba-converter batch ./input/ ./output/ --checkpoint meu_job.json

Status do Colab Híbrido: MVP funcional com subprocess. Migração para PyO3 em roadmap.


📖 Filosofia

"Converter não é sobre mudar formatos. É sobre liberar conhecimento aprisionado em estruturas legadas para que máquinas possam compreender — e humanos possem multiplicar seu intelecto."

O conhecimento é o único recurso que multiplica quando compartilhado.

CONVERTER é a ponte entre o passado (documentos estáticos) e o futuro (inteligência augmentada).


Pronto para começar? Veja docs/quickstart.md

Quer entender a fundo? Veja docs/philosophy.md

Precisa de ajuda? Comunidade: discord.gg/converter

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

kazuba_converter-0.2.0.tar.gz (55.5 kB view details)

Uploaded Source

Built Distribution

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

kazuba_converter-0.2.0-py3-none-any.whl (46.7 kB view details)

Uploaded Python 3

File details

Details for the file kazuba_converter-0.2.0.tar.gz.

File metadata

  • Download URL: kazuba_converter-0.2.0.tar.gz
  • Upload date:
  • Size: 55.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for kazuba_converter-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1c4791fc2c22d28e8f44fd8d919e026f9adf8fc040ecc4e3c431df01169c8a5e
MD5 0704e61d8af7ba55b74609196bde953a
BLAKE2b-256 b838e9dc16194086171efd064af2cfe59015bfd2edf499273b1d463256580246

See more details on using hashes here.

File details

Details for the file kazuba_converter-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kazuba_converter-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 24752bb8d7be9966a838b3dbde889f6bd492a46d13ee0ec6e08952e9c1a56497
MD5 642b908825c02f9149eeb37b4a68941c
BLAKE2b-256 557a3efbe0edc1468f9a3ad26ea517bba849e7ccd3065613b18ab99c8267049a

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