docling-processor / README.md
Gabriel Ramos
fix: Corrigir bug Gradio 4.44.0 e adicionar error handling
fef46a3
---
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](https://github.com/docling-project/docling) com aceleração ZeroGPU.
![Gradio](https://img.shields.io/badge/Gradio-4.44+-orange)
![Python](https://img.shields.io/badge/Python-3.10+-blue)
![License](https://img.shields.io/badge/License-MIT-green)
## ✨ 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](https://docs.astral.sh/uv/) (recomendado) ou pip
### Com uv
```bash
# 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
```bash
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
```bash
# 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
```bash
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
```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
```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
```bash
# 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](LICENSE) para detalhes.
## 🤝 Contribuições
Contribuições são bem-vindas! Abra uma issue ou pull request.
---
Desenvolvido com ❤️ usando [Docling](https://github.com/docling-project/docling) e [Gradio](https://gradio.app)