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
-
Cloner le dépôt :
git clone https://github.com/votre-utilisateur/cheque-scanner.git cd cheque-scanner -
Configurer les variables d'environnement :
# Copier le fichier d'exemple cp .env.example .env # Modifier les valeurs selon vos besoins nano .envImportant : Modifiez la valeur de
API_KEYpour sécuriser votre API ! -
Construire et démarrer les services :
docker-compose up -d --build -
Vérifier que les services sont en cours d'exécution :
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'extractionGET /api/v1/status/{job_id}: Vérifie l'état d'une tâcheGET /api/v1/result/{job_id}: Récupère les résultats d'une tâche terminéeGET /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 :
-
Modifier les variables de configuration :
$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 -
Exécuter le script :
php examples/php-integration.php
Fonctionnement
- L'application PHP envoie une image à l'API
- L'API stocke l'image et crée une tâche dans Redis
- Un worker prend la tâche et traite l'image
- Le worker extrait les informations et les stocke dans Redis
- 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 :
# 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 :
# 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 :
# 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 :
docker-compose ps
Vérifier les logs de l'API :
docker-compose logs -f api
Les traitements échouent
Vérifier les logs des workers :
docker-compose logs -f worker
S'assurer que Tesseract OCR est correctement installé dans le conteneur :
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.