Files
scan-ocr-cheques/README.md
2025-07-09 02:08:57 +02:00

181 lines
4.4 KiB
Markdown

# Cheque Scanner - Extraction d'informations de chèques
Système containerisé pour l'extraction d'informations à partir d'images de chèques, avec une API REST accessible depuis PHP.
## Fonctionnalités
- Téléchargement d'images de chèques via une API REST
- Extraction des informations principales (montant, date, bénéficiaire, numéro de chèque)
- Traitement asynchrone avec files d'attente prioritaires
- Scaling horizontal des workers de traitement
- API sécurisée par clé d'API
- Documentation Swagger intégrée
- Intégration simple depuis PHP
## Architecture
Le système est composé de plusieurs services containerisés :
- **API REST** (FastAPI) : Point d'entrée pour les applications clientes
- **Workers** : Traitent les images et extraient les informations
- **Redis** : Gère les files d'attente et stocke les résultats
- **Volumes partagés** : Stockent les images et les résultats
```
Application PHP → API REST → Redis Queue → Workers → Résultats JSON
```
## Prérequis
- Docker et Docker Compose
- Git (pour cloner le dépôt)
## Installation
1. Cloner le dépôt :
```bash
git clone https://github.com/votre-utilisateur/cheque-scanner.git
cd cheque-scanner
```
2. Configurer les variables d'environnement :
```bash
# Copier le fichier d'exemple
cp .env.example .env
# Modifier les valeurs selon vos besoins
nano .env
```
**Important** : Modifiez la valeur de `API_KEY` pour sécuriser votre API !
3. Construire et démarrer les services :
```bash
docker-compose up -d --build
```
4. Vérifier que les services sont en cours d'exécution :
```bash
docker-compose ps
```
## Utilisation
### Via l'API REST
L'API est accessible à l'adresse `http://localhost:8000/api/v1/`
Documentation de l'API : `http://localhost:8000/api/v1/docs`
#### Endpoints principaux :
- `POST /api/v1/upload` : Télécharge une image et crée une tâche d'extraction
- `GET /api/v1/status/{job_id}` : Vérifie l'état d'une tâche
- `GET /api/v1/result/{job_id}` : Récupère les résultats d'une tâche terminée
- `GET /api/v1/health` : Vérifie l'état de l'API
### Via l'intégration PHP
Un exemple d'intégration PHP est fourni dans `examples/php-integration.php`. Pour l'utiliser :
1. Modifier les variables de configuration :
```php
$api_url = 'http://localhost:8000/api/v1'; // URL de l'API
$api_key = 'your-secret-api-key-change-me'; // Clé API (doit correspondre à celle définie dans .env)
$imagePath = '/path/to/cheque_image.jpg'; // Chemin vers l'image à traiter
```
2. Exécuter le script :
```bash
php examples/php-integration.php
```
## Fonctionnement
1. L'application PHP envoie une image à l'API
2. L'API stocke l'image et crée une tâche dans Redis
3. Un worker prend la tâche et traite l'image
4. Le worker extrait les informations et les stocke dans Redis
5. L'application PHP interroge l'API pour récupérer les résultats
## Scaling
Pour augmenter le nombre de workers et améliorer les performances :
```bash
# Modifier le nombre de répliques dans .env
WORKER_REPLICAS=4
# Redémarrer les services
docker-compose up -d --scale worker=4
```
## Maintenance
### Logs
Pour voir les logs des services :
```bash
# Tous les services
docker-compose logs -f
# Un service spécifique
docker-compose logs -f api
docker-compose logs -f worker
```
### Nettoyage des données
Les données sont stockées dans des volumes Docker. Pour les nettoyer :
```bash
# Arrêter les services
docker-compose down
# Supprimer les volumes
docker volume rm cheque-scanner-shared-data cheque-scanner-redis-data
# Redémarrer les services
docker-compose up -d
```
## Sécurité
- L'API est protégée par une clé d'API
- Les images sont stockées temporairement
- Les communications entre les services sont limitées au réseau Docker interne
## Dépannage
### L'API ne répond pas
Vérifier que les services sont en cours d'exécution :
```bash
docker-compose ps
```
Vérifier les logs de l'API :
```bash
docker-compose logs -f api
```
### Les traitements échouent
Vérifier les logs des workers :
```bash
docker-compose logs -f worker
```
S'assurer que Tesseract OCR est correctement installé dans le conteneur :
```bash
docker-compose exec worker tesseract --version
```
## Contribution
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
## Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.