Spaces:
Runtime error
Runtime error
A newer version of the Gradio SDK is available:
6.1.0
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.
✨ 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 |
|---|---|
| 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.