Spaces:
Runtime error
Runtime error
| 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. | |
|  | |
|  | |
|  | |
| ## ✨ 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) | |