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
data/books/
PDF, EPUB
discover_books → parse_book
.expand() : une instance par livre
Résumés
chapitres · 2 pages · 1 paragraphe
Questions-réponses
≥ 20 paires
Traduction FR / AR → TTS
Service ML Flask
FLAN-T5 · NLLB-200 · Coqui TTS / gTTS
validate_outputs
outputs/<livre>/<horodatage>/
04
Implémentation
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.
02Parallélisme par livre[DAG]
Dynamic task mapping (.expand) et Task Groups pour gérer les dépendances entre tâches mappées.
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.
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.