233 lines
4.3 KiB
Markdown
233 lines
4.3 KiB
Markdown
# 📝 Effi-OCR
|
|
|
|
Service OCR (Optical Character Recognition) pour Effi. Extrait le texte des images et photos de documents.
|
|
|
|
---
|
|
|
|
## 🎯 Fonctionnalités
|
|
|
|
- Extraction de texte à partir d'images (JPEG, PNG, GIF, BMP, TIFF, WebP)
|
|
- Support multilingue (Français, Anglais, Allemand, Espagnol, Italien)
|
|
- Prétraitement automatique pour améliorer la qualité
|
|
- API REST simple et rapide
|
|
- Intégration OpenWebUI via Tool
|
|
|
|
---
|
|
|
|
## 🚀 Démarrage rapide
|
|
|
|
```bash
|
|
# Construire et démarrer
|
|
cd ~/Documents/OpenCode/Projets/Effi/effi-ocr
|
|
sudo docker compose up -d --build
|
|
|
|
# Vérifier le service
|
|
curl http://localhost:8300/health
|
|
```
|
|
|
|
---
|
|
|
|
## 📡 API Endpoints
|
|
|
|
### Health Check
|
|
```bash
|
|
GET /health
|
|
```
|
|
|
|
### OCR - Upload fichier
|
|
```bash
|
|
POST /ocr
|
|
Content-Type: multipart/form-data
|
|
|
|
Parameters:
|
|
- file: Image à analyser
|
|
- lang: Code langue (fra, eng, fra+eng, etc.)
|
|
- preprocess: true/false (prétraitement auto)
|
|
```
|
|
|
|
Exemple:
|
|
```bash
|
|
curl -X POST -F "file=@photo.jpg" -F "lang=fra" http://localhost:8300/ocr
|
|
```
|
|
|
|
### OCR - Base64
|
|
```bash
|
|
POST /ocr/base64
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"image_base64": "...",
|
|
"lang": "fra",
|
|
"preprocess": true
|
|
}
|
|
```
|
|
|
|
### Langues disponibles
|
|
```bash
|
|
GET /languages
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 Configuration
|
|
|
|
### Variables d'environnement
|
|
|
|
| Variable | Défaut | Description |
|
|
|----------|--------|-------------|
|
|
| `OCR_URL` | `http://192.168.1.11:8300` | URL du service OCR |
|
|
|
|
### Langues supportées
|
|
|
|
- `fra` - Français
|
|
- `eng` - Anglais
|
|
- `fra+eng` - Bilingue FR+EN
|
|
- `deu` - Allemand
|
|
- `spa` - Espagnol
|
|
- `ita` - Italien
|
|
|
|
---
|
|
|
|
## 🐳 Docker
|
|
|
|
### Construction
|
|
```bash
|
|
sudo docker compose build
|
|
```
|
|
|
|
### Démarrage
|
|
```bash
|
|
sudo docker compose up -d
|
|
```
|
|
|
|
### Logs
|
|
```bash
|
|
sudo docker logs effi-ocr -f
|
|
```
|
|
|
|
### Arrêt
|
|
```bash
|
|
sudo docker compose down
|
|
```
|
|
|
|
---
|
|
|
|
## 🔗 Intégration OpenWebUI
|
|
|
|
Voir [TOOL-OPENWEBUI.md](TOOL-OPENWEBUI.md) pour la configuration complète du Tool.
|
|
|
|
**Résumé rapide:**
|
|
1. Admin → Tools → Create Tool
|
|
2. Copier le code Python fourni
|
|
3. Configurer la variable `OCR_URL`
|
|
4. Activer le Tool dans les paramètres de conversation
|
|
|
|
---
|
|
|
|
## 🧪 Tests
|
|
|
|
### Test de santé
|
|
```bash
|
|
curl http://localhost:8300/health
|
|
```
|
|
|
|
### Test OCR simple
|
|
```bash
|
|
curl -X POST \
|
|
-F "file=@/chemin/vers/image.jpg" \
|
|
-F "lang=fra" \
|
|
http://localhost:8300/ocr
|
|
```
|
|
|
|
### Test avec prétraitement désactivé
|
|
```bash
|
|
curl -X POST \
|
|
-F "file=@image.png" \
|
|
-F "lang=eng" \
|
|
-F "preprocess=false" \
|
|
http://localhost:8300/ocr
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Performance
|
|
|
|
- **Temps de traitement** : ~1-3 secondes par image (dépend de la taille)
|
|
- **Formats supportés** : JPEG, PNG, GIF, BMP, TIFF, WebP
|
|
- **Taille max recommandée** : 2048x2048 pixels
|
|
- **Prétraitement** : Conversion niveaux de gris + contraste (optionnel)
|
|
|
|
---
|
|
|
|
## 🐛 Dépannage
|
|
|
|
### Service ne répond pas
|
|
```bash
|
|
# Vérifier si le conteneur tourne
|
|
sudo docker ps | grep effi-ocr
|
|
|
|
# Redémarrer
|
|
sudo docker restart effi-ocr
|
|
|
|
# Voir les logs
|
|
sudo docker logs effi-ocr
|
|
```
|
|
|
|
### Tesseract non trouvé
|
|
L'erreur indique que Tesseract n'est pas installé dans le conteneur. Reconstruire:
|
|
```bash
|
|
sudo docker compose down
|
|
sudo docker compose up -d --build
|
|
```
|
|
|
|
### OCR de mauvaise qualité
|
|
- Utiliser `lang=fra+eng` pour les documents mixtes
|
|
- S'assurer que l'image est bien éclairée
|
|
- Vérifier la résolution (300 DPI recommandé pour documents)
|
|
- Activer le prétraitement (par défaut: true)
|
|
|
|
---
|
|
|
|
## 📁 Structure
|
|
|
|
```
|
|
effi-ocr/
|
|
├── main.py # API FastAPI
|
|
├── Dockerfile # Configuration Docker
|
|
├── docker-compose.yml # Orchestration
|
|
├── requirements.txt # Dépendances Python
|
|
├── README.md # Ce fichier
|
|
└── TOOL-OPENWEBUI.md # Guide Tool OpenWebUI
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 Dépendances
|
|
|
|
- Python 3.11
|
|
- FastAPI
|
|
- Pillow (traitement d'images)
|
|
- pytesseract (wrapper Tesseract)
|
|
- Tesseract OCR 5.x
|
|
|
|
---
|
|
|
|
## 🎨 Cas d'usage
|
|
|
|
- **Numérisation de livres** : Extraire le texte de photos de pages
|
|
- **Factures** : Récupérer les informations de factures scannées
|
|
- **Documents** : OCR sur PDF et images de documents
|
|
- **Notes manuscrites** : Reconnaissance de texte manuscrit (limitée)
|
|
|
|
---
|
|
|
|
## 🔒 Sécurité
|
|
|
|
- Le service écoute uniquement sur localhost (127.0.0.1:8300)
|
|
- Aucune donnée n'est stockée persistante
|
|
- Les images sont traitées en mémoire et supprimées après
|
|
|
|
---
|
|
|
|
Créé le 6 Avril 2026
|