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

4.4 KiB

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 :

    git clone https://github.com/votre-utilisateur/cheque-scanner.git
    cd cheque-scanner
    
  2. Configurer les variables d'environnement :

    # 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 :

    docker-compose up -d --build
    
  4. 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'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 :

    $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 :

    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 :

# 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.