Data Engineering & GenAI · 2025

Pipeline automatisé d'ingestion et de traitement de livres

Transformer automatiquement des livres PDF/EPUB en résumés, questions-réponses, traductions et audio.

Contexte
Projet académique (exercice orchestration)
Année
2025
Technologies
Apache Airflow · Celery · Redis · PostgreSQL

01

Le défi

Transformer automatiquement des livres PDF/EPUB en résumés, questions-réponses, traductions et audio, en traitant plusieurs livres sans intervention manuelle.

02

La solution

Un DAG Apache Airflow découvre les livres et lance un traitement par livre via le dynamic task mapping. Les étapes appellent un service ML Flask séparé, qui exécute les modèles Hugging Face et Coqui TTS. Chaque exécution est versionnée dans son propre dossier de sortie.

03

Architecture

04

Implémentation

  1. 01Orchestration[docker-compose.yml, DAG]

    Docker Compose : PostgreSQL, Redis, webserver, scheduler, worker Celery, triggerer, Flower. Déclenchement manuel, 2 reprises automatiques espacées de 5 min.

  2. 02Parallélisme par livre[DAG]

    Dynamic task mapping (.expand) et Task Groups pour gérer les dépendances entre tâches mappées.

  3. 03Service ML[ml_service/app.py, config.py]

    API Flask (/summarize, /qa/generate, /translate, /tts, /health) ; découpage des textes longs en morceaux de 2 000 caractères ; modèles configurables par variables d'environnement.

  4. 04Contrôle des sorties[DAG, app.py]

    Une tâche finale vérifie les fichiers générés ; le service complète la génération si moins de 20 paires Q&A sont produites.

05

Décisions techniques

Modèles hors d’Airflow

Le service ML tourne à part : Airflow orchestre, il ne charge pas les modèles dans ses workers.

06

Résultats

paires Q&A par livre
≥ 20
paires Q&A par livre
garanti par conception (paramètre min_questions), pas une mesure de qualité[ml_service/app.py]
par livre
5–15 min
par livre
ordre de grandeur rapporté dans le rapport, sans protocole de mesure[Rapport_Projet_Book_Pipeline.md §6.2]

07

Limites

  • Qualité des résumés et traductions non évaluée par une métrique.
  • Service ML exécuté localement, hors des conteneurs Airflow.