181 lines
4.4 KiB
Markdown
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. |