Files
Folzo fdcf513baf feat: add effi-ocr tool with Valves configuration and improved file search
- 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)
2026-04-12 17:52:42 +02:00
..

📝 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çais
  • eng - Anglais
  • fra+eng - Bilingue FR+EN
  • deu - Allemand
  • spa - Espagnol
  • ita - 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:

  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é

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+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