You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# OCRmyPDF - Processador Automático de OCR para PDFs
Sistema automatizado para processamento de OCR em arquivos PDF usando monitoramento de pastas.
## 📋 Características
- ✅ Monitoramento automático de pastas com **watchdog**
- ✅ Processamento com **OCRmyPDF** (motor principal - usa Tesseract)
- ✅ Logs estruturados com rotação
- ✅ Tratamento de erros robusto
- ✅ Organização automática de arquivos (processed/failed)
- ✅ Suporte a múltiplos idiomas
- ✅ Processamento em lote automático
## 🚀 Instalação
### Pré-requisitos
1. **Python 3.8+**
2. **Tesseract OCR** (obrigatório)
3. **Ghostscript** (recomendado para alguns tipos de PDF)
#### Instalar Tesseract OCR
**Windows:**
- Baixe: https://github.com/UB-Mannheim/tesseract/wiki
- Instale e marque "Add to PATH"
- Selecione idiomas: Portuguese e English
- Consulte `INSTALAR_TESSERACT.md` para instruções detalhadas
**Verificar instalação:**
```powershell
tesseract --version
```
#### Instalar Ghostscript
**Windows:**
- Baixe: https://www.ghostscript.com/download/gsdnld.html
- Instale e marque "Add to PATH"
- Consulte `INSTALAR_GHOSTSCRIPT.md` para instruções detalhadas
### Instalar Dependências Python
```bash
python -m pip install -r requirements.txt
```
**Nota no Windows:** Use `python -m pip` em vez de `pip` diretamente.
## 📁 Estrutura de Pastas
O sistema cria automaticamente as seguintes pastas:
```
OCRmyPDF/
├── input/ # Coloque seus PDFs aqui
├── output/ # PDFs processados com OCR
├── processed/ # PDFs originais após processamento
├── failed/ # PDFs que falharam no processamento
└── logs/ # Arquivos de log
```
## 🎯 Uso
### Modo Monitoramento (Recomendado)
**Windows - Forma mais fácil:**
1. **Duplo clique em:** `INICIAR_WATCHDOG.bat`
2. O sistema iniciará automaticamente e ficará monitorando a pasta `input/`
3. **Mantenha a janela aberta** (ou minimize, mas não feche)
**Ou via linha de comando:**
```bash
python ocr_watcher.py
```
**Verificar se está rodando:**
```powershell
.\status_watchdog.ps1
```
**Monitorar em tempo real:**
```powershell
.\monitorar_tempo_real.ps1
```
O sistema ficará monitorando a pasta `input/` e processará automaticamente qualquer PDF que for adicionado.
**Importante:**
- ⚠️ O watchdog **DEVE estar rodando** para detectar arquivos automaticamente
- Arquivos que já estavam na pasta serão processados quando o watchdog iniciar
- Novos arquivos colocados na pasta serão detectados em menos de 1 segundo
- Veja `COMANDOS.md` para lista completa de comandos
### Processamento Manual
Para processar um arquivo específico, use o script:
```bash
python processar_arquivo.py
```
Ou via código Python:
```python
from ocr_processor import OCRProcessor
from pathlib import Path
processor = OCRProcessor()
file_path = Path('input/meu_arquivo.pdf')
processor.process_file(file_path)
```
## ⚙️ Configuração
### Configurador Visual de Pastas (NOVO!)
Para adicionar/remover pastas de forma fácil, use o **configurador visual**:
**Windows - Forma mais fácil:**
1. **Duplo clique em:** `configurar_pastas.bat`
2. Uma janela gráfica abrirá
3. Clique em "Adicionar Pasta" para adicionar novas pastas
4. Clique em "Salvar Configuração" para aplicar
5. Reinicie o watchdog para usar as novas pastas
### Múltiplas Pastas de Input/Output
O sistema suporta monitorar **múltiplas pastas simultaneamente**:
- Cada pasta de input tem sua própria pasta de output
- Pastas `processed/`, `failed/` e `logs/` são compartilhadas
**Como adicionar pastas:**
1. **Usando o script interativo** (recomendado):
```bash
configurar_pastas.bat
```
Ou:
```bash
python configurar_pastas.py
```
2. **Editando manualmente `config.py`**:
```python
INPUT_OUTPUT_PAIRS = [
{
'input': BASE_DIR / 'input',
'output': BASE_DIR / 'output',
},
{
'input': BASE_DIR / 'input2',
'output': BASE_DIR / 'output2',
},
{
'input': Path('C:/Outra/Pasta/Input'),
'output': Path('C:/Outra/Pasta/Output'),
},
]
```
3. **Reinicie o watchdog** após adicionar pastas
### Configuração Manual
Edite o arquivo `config.py` para personalizar:
- **Pastas**: Caminhos de input/output/processed/failed/logs
- **OCR**: Idioma, otimização, correções
- **Monitoramento**: Padrões de arquivo, recursividade
- **Logs**: Nível de log, tamanho máximo, rotação
### Exemplo de Configuração
```python
# Idioma do OCR (inglês - ajuste conforme idiomas instalados no Tesseract)
OCR_CONFIG['ocrmypdf_language'] = 'eng' # ou 'por+eng' se tiver português instalado
# Timeout por arquivo (segundos)
OCR_CONFIG['timeout_seconds'] = 600 # 10 minutos
# Tamanho máximo de arquivo (bytes)
FILE_CONFIG['max_file_size'] = 100 * 1024 * 1024 # 100MB
# Sufixo para arquivos processados
FILE_CONFIG['output_suffix'] = '_ocr'
```
## 📊 Logs
Os logs são salvos em `logs/ocr_processor.log` com rotação automática:
- Máximo de 10MB por arquivo
- Mantém 5 backups
- Formato: data, nível, mensagem
## 🔧 Troubleshooting
### Problema com DLLs bloqueadas (Windows AppLocker)
Se você encontrar erros como:
```
ImportError: DLL load failed while importing _imaging
```
**Solução:** O sistema usa OCRmyPDF via subprocess para contornar este problema. Se persistir:
1. Configure exceção na política de segurança (requer admin)
2. Ou use apenas Tesseract direto (já configurado como fallback)
### Tesseract não encontrado
**Windows:**
- Verifique se o Tesseract está instalado: `tesseract --version`
- Se não funcionar, adicione ao PATH manualmente:
- Caminho padrão: `C:\Program Files\Tesseract-OCR`
- Adicione `C:\Program Files\Tesseract-OCR` ao PATH do sistema
- Reinicie o terminal após adicionar ao PATH
### Ghostscript não encontrado
**Windows:**
- Verifique se o Ghostscript está instalado
- Alguns PDFs podem ser processados sem Ghostscript, mas outros requerem
- Consulte `INSTALAR_GHOSTSCRIPT.md` para instruções
### "pip não é reconhecido"
No Windows, use:
```bash
python -m pip install -r requirements.txt
```
### Erro de permissão
Verifique se as pastas têm permissão de escrita.
### Arquivo muito grande
Ajuste `FILE_CONFIG['max_file_size']` em `config.py`.
### Timeout
Aumente `OCR_CONFIG['timeout_seconds']` para arquivos grandes ou complexos.
### Idioma português não encontrado
Se você instalou o Tesseract sem o pacote de idioma português:
- Reinstale o Tesseract e selecione "Portuguese" durante a instalação
- Ou baixe manualmente de: https://github.com/tesseract-ocr/tessdata
- Coloque o arquivo `.traineddata` em: `C:\Program Files\Tesseract-OCR\tessdata`
## 📝 Notas
- O sistema processa arquivos sequencialmente por padrão
- Arquivos duplicados são ignorados automaticamente
- PDFs já com texto são processados normalmente (force-ocr)
- Arquivos em uso ou com erro são movidos para `failed/`
- O arquivo original é preservado em `processed/` após processamento bem-sucedido
- O PDF processado é salvo em `output/` com sufixo `_ocr`
## 🔄 Fluxo de Processamento
1. **Detecção**: Watchdog detecta novo PDF em `input/`
2. **Validação**: Verifica tamanho, formato, permissões
3. **Processamento**: OCRmyPDF aplica OCR usando Tesseract
4. **Otimização**: PDF é otimizado e linearizado
5. **Organização**: Move original para `processed/` ou `failed/`
6. **Saída**: Salva PDF com OCR em `output/` com sufixo `_ocr`
### Vantagens do OCRmyPDF
- ✅ **Integração completa** - Processa PDF diretamente, sem conversão manual
- ✅ **Mantém layout original** - Preserva formatação e imagens
- ✅ **PDF pesquisável** - Adiciona camada de texto pesquisável
- ✅ **Otimização automática** - Reduz tamanho do arquivo quando possível
- ✅ **Suporte a múltiplos idiomas** - Configurável via Tesseract
- ✅ **Robusto e maduro** - Ferramenta amplamente testada e estável
## 📄 Licença
Este projeto é de código aberto.
## 🤝 Contribuindo
Sugestões e melhorias são bem-vindas!
# ocr