- Added Valves (Pydantic) pattern for ocr_url configuration via wheel icon - Inspired by Kreuzberg tool: multi-level file search (exact, substring, word matches) - Support for multi-file OCR with extract_text_from_images - Added search_files function for pattern matching - effi-ocr runs on port 8301 (Tesseract with preprocessing)
📝 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
# 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
GET /health
OCR - Upload fichier
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:
curl -X POST -F "file=@photo.jpg" -F "lang=fra" http://localhost:8300/ocr
OCR - Base64
POST /ocr/base64
Content-Type: application/json
{
"image_base64": "...",
"lang": "fra",
"preprocess": true
}
Langues disponibles
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çaiseng- Anglaisfra+eng- Bilingue FR+ENdeu- Allemandspa- Espagnolita- Italien
🐳 Docker
Construction
sudo docker compose build
Démarrage
sudo docker compose up -d
Logs
sudo docker logs effi-ocr -f
Arrêt
sudo docker compose down
🔗 Intégration OpenWebUI
Voir TOOL-OPENWEBUI.md pour la configuration complète du Tool.
Résumé rapide:
- Admin → Tools → Create Tool
- Copier le code Python fourni
- Configurer la variable
OCR_URL - Activer le Tool dans les paramètres de conversation
🧪 Tests
Test de santé
curl http://localhost:8300/health
Test OCR simple
curl -X POST \
-F "file=@/chemin/vers/image.jpg" \
-F "lang=fra" \
http://localhost:8300/ocr
Test avec prétraitement désactivé
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
# 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:
sudo docker compose down
sudo docker compose up -d --build
OCR de mauvaise qualité
- Utiliser
lang=fra+engpour 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