docling-processor / README.md
Gabriel Ramos
fix: Corrigir bug Gradio 4.44.0 e adicionar error handling
fef46a3

A newer version of the Gradio SDK is available: 6.1.0

Upgrade
metadata
title: Docling Document Processor
emoji: 📄
colorFrom: green
colorTo: blue
sdk: gradio
sdk_version: 4.44.1
app_file: app.py
pinned: false
license: mit
short_description: Processe documentos PDF/DOC/DOCX com IA

📄 Docling Document Processor

Aplicação Gradio para processamento de documentos usando Docling com aceleração ZeroGPU.

Gradio Python License

✨ Recursos

  • 🔍 Extração inteligente de texto, tabelas e metadados
  • 🌐 Detecção automática de idioma
  • 🚀 Aceleração GPU via ZeroGPU (Hugging Face Spaces)
  • 📊 Preserva estrutura hierárquica do documento
  • 📁 Upload múltiplo (1-5 arquivos simultâneos)
  • 🔒 Segurança com validação de MIME type e sanitização

📋 Formatos Suportados

Entrada Saída
PDF JSON
DOC Markdown
DOCX ZIP (ambos)

🚀 Instalação Local

Pré-requisitos

  • Python 3.10+
  • uv (recomendado) ou pip

Com uv

# Clone o repositório
git clone https://huggingface.co/spaces/SEU_USUARIO/docling-processor
cd docling-processor

# Crie ambiente virtual e instale dependências
uv venv
source .venv/bin/activate  # Linux/macOS
uv pip install -r requirements.txt

# Execute
python app.py

Com pip

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app.py

Acesse: http://localhost:7860

🌐 Deploy no Hugging Face Spaces

1. Crie o Space

# Login no Hugging Face
hf login

# Crie o Space (substitua SEU_USUARIO pelo seu username)
hf repo create SEU_USUARIO/docling-processor --repo-type space --space-sdk gradio

2. Configure ZeroGPU

No Hugging Face, vá em Settings > Hardware e selecione ZeroGPU.

3. Push do código

cd /caminho/para/docling_hf
git remote add space https://huggingface.co/spaces/SEU_USUARIO/docling-processor
git push space main

4. Verifique

Acesse: https://huggingface.co/spaces/SEU_USUARIO/docling-processor

📂 Estrutura do Projeto

docling_hf/
├── app.py                 # Interface Gradio + ZeroGPU
├── config.py              # Configurações centralizadas
├── requirements.txt       # Dependências
├── README.md              # Esta documentação
├── processors/            # Lógica de processamento
│   ├── docling_processor.py
│   ├── json_formatter.py
│   └── markdown_formatter.py
├── utils/                 # Utilitários
│   ├── validators.py
│   ├── file_handler.py
│   └── logger.py
├── tests/                 # Testes unitários
│   └── test_processors.py
└── logs/                  # Arquivos de log

📤 Formatos de Saída

JSON

{
  "arquivo": "documento.pdf",
  "idioma": "pt",
  "processado_em": "2024-01-15T10:30:00",
  "metadados": {
    "nome_arquivo": "documento.pdf",
    "num_paginas": 5,
    "num_tabelas": 2
  },
  "tabelas": [...],
  "conteudo": {...}
}

Markdown

# Título do Documento

**Autor:** João Silva
**Idioma:** Português
**Páginas:** 5

---

## Conteúdo

[Texto extraído do documento...]

---

## Tabelas Extraídas

| Coluna 1 | Coluna 2 |
|----------|----------|
| Valor 1  | Valor 2  |

⚙️ Configuração

Edite config.py para personalizar:

Variável Padrão Descrição
MAX_FILE_SIZE_MB 50 Limite por arquivo
MAX_FILES_PER_SESSION 5 Arquivos por upload
PROCESSING_TIMEOUT_SECONDS 300 Timeout de processamento
RATE_LIMIT_REQUESTS 10 Requisições por hora

🧪 Testes

# Executar testes
python -m pytest tests/ -v

# Com cobertura
python -m pytest tests/ -v --cov=. --cov-report=html

🔧 Troubleshooting

❌ "Arquivo muito grande"

Reduza o tamanho do PDF ou divida em partes menores.

❌ "Tipo de arquivo inválido"

Verifique se o arquivo não está corrompido. O sistema valida o conteúdo real, não apenas a extensão.

❌ "Timeout"

  • Arquivos muito grandes ou complexos podem exceder o limite
  • Tente processar menos arquivos por vez
  • PDFs escaneados (OCR) levam mais tempo

❌ "Rate limit excedido"

Aguarde 1 hora ou use uma conta diferente.

📄 Licença

MIT License - veja LICENSE para detalhes.

🤝 Contribuições

Contribuições são bem-vindas! Abra uma issue ou pull request.


Desenvolvido com ❤️ usando Docling e Gradio