Skip to content
Extraits de code Groupes Projets

🎵🖼️ BrainBoost - Service de Traitement Multimédia

Python Django PostgreSQL REST API OpenAI

Microservice spécialisé dans le traitement et la gestion de fichiers audio et images avec reconnaissance OCR, Speech-to-Text et Text-to-Speech.

📋 Table des matières

🎯 Vue d'ensemble

Le BrainBoost Service de Traitement Multimédia est un microservice Django conçu pour gérer l'upload, le traitement et la conversion de fichiers audio et images. Il intègre des services d'IA avancés pour la reconnaissance optique de caractères (OCR), la reconnaissance vocale et la synthèse vocale.

🎵 Formats audio supportés

  • MP3 : Format populaire avec compression
  • WAV : Format non-compressé haute qualité
  • OPUS : Format moderne optimisé pour la voix
  • M4A : Format AAC d'Apple
  • FLAC : Format sans perte

🖼️ Formats images supportés

  • PNG : Format avec transparence
  • JPG/JPEG : Format compressé pour photos
  • GIF : Format animé
  • BMP : Format bitmap Windows
  • TIFF : Format haute qualité
  • PDF : Documents PDF (extraction de texte)

🎛️ Traitements disponibles

  • Upload et validation automatique
  • Extraction de métadonnées complètes
  • Conversion entre formats
  • OCR avec OpenAI Vision API
  • Speech-to-Text avec Whisper
  • Text-to-Speech avec voix synthétiques
  • Prétraitement d'images pour OCR
  • Détection de tableaux et formules mathématiques

Fonctionnalités

📁 Gestion de fichiers audio

  • Upload sécurisé avec validation de format et taille
  • Métadonnées automatiques : durée, bitrate, format, taille
  • Organisation par utilisateur avec isolation des données
  • Statuts de traitement : UPLOADED, PROCESSING, PROCESSED, ERROR
  • Checksum MD5 pour vérification d'intégrité

🖼️ Gestion de documents images

  • Upload multi-format avec validation avancée
  • Métadonnées EXIF complètes
  • Conversion de formats automatique
  • Prétraitement pour OCR (contraste, netteté, orientation)
  • Évaluation de qualité pour optimisation OCR
  • Anonymisation des métadonnées sensibles

🔤 Reconnaissance OCR

  • OCR avec OpenAI Vision API (gpt-4o-mini)
  • Détection automatique de langue (français, anglais, etc.)
  • Extraction de tableaux avec structure préservée
  • Détection de formules mathématiques LaTeX/MathML
  • Configuration OCR personnalisable par domaine
  • Export multi-format (JSON, TXT, CSV)
  • Traitement par lot d'images
  • Score de confiance et métriques qualité

🎤 Speech-to-Text

  • Transcription automatique avec Whisper
  • Détection de langue automatique
  • Segmentation temporelle avec horodatage
  • Identification de locuteurs
  • Export de transcriptions (SRT, VTT, JSON)

🔊 Text-to-Speech

  • Synthèse vocale multi-langues
  • Voix naturelles et expressives
  • Prévisualisation audio
  • Configuration de vitesse et ton

🔄 Traitement audio avancé

  • Conversion de formats (MP3 WAV OPUS M4A FLAC)
  • Normalisation audio automatique
  • Ajustement de volume en décibels
  • Découpage temporel avec précision
  • Fusion de fichiers multiples
  • Réduction de bruit intelligente

🔍 Recherche et filtrage

  • Par utilisateur : tous les fichiers d'un utilisateur
  • Par format : tous formats audio/image
  • Par statut : en attente, traités, erreurs
  • Par durée/taille : plages personnalisées
  • Fichiers transcrits : avec contenu textuel
  • Images avec OCR : texte extrait disponible
  • Recherche dans le contenu OCR et transcriptions

🌐 API REST complète

  • 50+ endpoints spécialisés
  • Réponses JSON standardisées
  • Gestion d'erreurs robuste
  • Logging détaillé pour monitoring
  • Support CORS pour intégration frontend
  • Pagination et filtrage avancé

🚀 Installation

Prérequis

  • Python 3.11+
  • PostgreSQL 12+
  • FFmpeg (pour conversions audio)
  • OpenAI API Key (pour OCR)
  • Clé API Text-to-Speech/Speech-to-Text

1. Cloner le repository

git clone https://mc-git.com/marketing-confort/brainboost/brainboost-traitement-multimedias-service.git
cd brainboost-traitement-multimedias

2. Créer l'environnement virtuel

python -m venv venv
# Windows
venv\Scripts\activate
# Linux/macOS
source venv/bin/activate

3. Installer les dépendances

pip install -r requirements.txt

4. Configurer la base de données

# Créer la base PostgreSQL
createdb brainboost-traitement-multimédias-service-local-db

# Créer l'utilisateur
createuser brainboost-traitement-multimedias-service-local-user

5. Configurer les variables d'environnement

Créer un fichier .env :

# Base de données
DB_NAME=brainboost-traitement-multimédias-service-local-db
DB_USER=brainboost-traitement-multimedias-service-local-user
DB_PASSWORD=*zk322gO2
DB_HOST=localhost
DB_PORT=5432

# Service
SERVICE_PORT=7082
DEBUG=True

# APIs IA
OPENAI_API_KEY=sk-your-openai-key-here
BRAINBOOST_IA_CORE_URL=http://localhost:8000
BRAINBOOST_IA_CORE_TOKEN=your-ia-core-token

# FFmpeg
FFMPEG_PATH=/path/to/ffmpeg/bin

6. Appliquer les migrations

python manage.py makemigrations
python manage.py migrate

7. Créer un superutilisateur (optionnel)

python manage.py createsuperuser

8. Démarrer le serveur

python manage.py runserver 0.0.0.0:7082

🔧 Configuration

Configuration OpenAI OCR

Créer un fichier services/docs/.env :

OPENAI_API_KEY=sk-your-openai-key-here

Configuration FFmpeg

Pour activer les conversions audio avancées :

  1. Télécharger FFmpeg depuis ffmpeg.org
  2. Placer dans ffmpeg-7.1.1-essentials_build/bin/
  3. Ou ajouter au PATH système

Configuration CORS

# settings.py
CORS_ALLOWED_ORIGINS = [
    "http://localhost:3000",
    "http://127.0.0.1:3000",
]

📖 Utilisation

Upload et OCR d'une image

# 1. Upload image
curl -X POST http://localhost:7082/api/images/upload/ \
  -F "file=@document.png" \
  -F "user_id=1"

# 2. Extraction OCR
curl -X POST http://localhost:7082/api/images/1/extract-text/ \
  -H "Content-Type: application/json" \
  -d '{"config_ocr_id": 1}'

# 3. Récupérer résultat
curl http://localhost:7082/api/ocr/1/

Transcription audio

# 1. Upload audio
curl -X POST http://localhost:7082/upload/ \
  -F "file=@audio.mp3" \
  -F "user_id=1"

# 2. Lancer transcription
curl -X POST http://localhost:7082/api/transcription/process/ \
  -H "Content-Type: application/json" \
  -d '{"audio_file_id": 1, "language": "fr"}'

Synthèse vocale

curl -X POST http://localhost:7082/api/synthesis/generate/ \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Bonjour, ceci est un test de synthèse vocale.",
    "voice": "fr-FR-Neural",
    "speed": 1.0
  }'

🌐 API Reference

Endpoints Images et OCR

  • POST /api/images/upload/ - Upload image
  • GET /api/images/{id}/ - Détails image
  • POST /api/images/{id}/extract-text/ - Extraction OCR
  • GET /api/ocr/{id}/ - Résultat OCR
  • GET /api/ocr/{id}/tables/ - Tableaux extraits
  • GET /api/ocr/{id}/formulas/ - Formules mathématiques

Endpoints Audio et Transcription

  • POST /upload/ - Upload fichier audio
  • POST /api/transcription/process/ - Lancer transcription
  • GET /api/transcription/{id}/ - Résultat transcription
  • POST /api/synthesis/generate/ - Synthèse vocale

Endpoints Configuration

  • GET|POST /api/config/ocr/ - Configurations OCR
  • GET|PUT|DELETE /api/config/ocr/{id}/ - Gestion config
  • POST /api/config/ocr/{id}/duplicate/ - Dupliquer config

Endpoints Traitement par lot

  • POST /api/batch/images/process/ - Traitement lot images
  • GET /api/batch/images/{id}/status/ - Statut lot
  • GET /api/batch/images/{id}/report/ - Rapport lot

Endpoints Qualité et Métadonnées

  • POST /api/quality/evaluate/ - Évaluation qualité
  • POST /api/metadata/extract/ - Extraction métadonnées
  • POST /api/metadata/{id}/anonymize/ - Anonymisation

📊 Architecture

Services principaux

  • OCRService : Reconnaissance optique avec OpenAI Vision
  • SpeechToTextService : Transcription audio avec Whisper
  • TextToSpeechService : Synthèse vocale
  • ImagePreprocessingService : Prétraitement images
  • ImageQualityService : Évaluation qualité
  • TableauExtractionService : Extraction tableaux
  • FormuleMathematiqueService : Détection formules

Modèles de données

  • ImageDocument : Gestion images
  • OCRResult : Résultats OCR
  • ConfigOCR : Configurations personnalisées
  • FichierAudio : Gestion fichiers audio
  • ResultatTranscription : Transcriptions
  • ExtractedTable : Tableaux extraits
  • FormuleMathematique : Formules détectées

Technologies utilisées

  • Django 5.2 : Framework web
  • PostgreSQL : Base de données
  • OpenAI Vision API : OCR avancé
  • FFmpeg : Traitement audio
  • Pillow : Traitement images
  • pydub : Manipulation audio
  • REST Framework : API REST