Ajout Effi-OCR (Tesseract) + Web Scraper pour OpenWebUI
- Effi-OCR: Service OCR avec Tesseract (multilingue FR/EN) * API FastAPI sur port 8300 * Prétraitement images (contraste, niveaux de gris) * Tool OpenWebUI intégré - Web Scraper: Service Python (BeautifulSoup) sur port 11235 * Alternative à Crawl4AI (incompatible ARM64/J5040) * Scraping HTML basique mais fonctionnel * Intégré au docker-compose d'effi-server - Documentation: * ROADMAP-FONCTIONNALITES.md: Plan des 9 fonctionnalités * WEB-SCRAPER-CONFIG.md: Configuration OpenWebUI * WEB-SCRAPER-TOOL.md: Code du Tool - Script start-all-services.sh mis à jour (6 services)
This commit is contained in:
@@ -0,0 +1,232 @@
|
||||
# 📝 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
|
||||
Reference in New Issue
Block a user