perf: pré-chargement docTR au démarrage + nettoyage debug logs
Some checks failed
security-audit / Bandit (scan statique) (push) Successful in 13s
security-audit / pip-audit (CVE dépendances) (push) Successful in 12s
security-audit / Scan secrets (grep) (push) Successful in 9s
tests / Lint (ruff + black) (push) Successful in 14s
tests / Tests unitaires (sans GPU) (push) Failing after 15s
tests / Tests sécurité (critique) (push) Has been skipped

docTR se chargeait au premier appel OCR (~30s). Maintenant pré-chargé
au démarrage du backend → premier clic rapide.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dom
2026-04-21 17:25:35 +02:00
parent 0b452f975a
commit 74ee0dadee
3 changed files with 19 additions and 1 deletions

View File

@@ -417,6 +417,13 @@ except ImportError as e:
except Exception as e:
print(f"❌ Erreur lors de l'initialisation des services visuels: {e}")
# Pré-charger les modèles pour éviter la latence au premier appel
try:
from services.ocr_service import preload as ocr_preload
ocr_preload()
except Exception as e:
print(f"⚠️ Pré-chargement OCR échoué: {e}")
if __name__ == '__main__':
port = int(os.getenv('PORT', 5002))
# Désactivation du mode debug pour stabiliser le laboratoire

View File

@@ -9,7 +9,7 @@ from typing import List, Optional
import numpy as np
from PIL import Image
# Singleton paresseux
# Singleton — chargé une seule fois
_predictor = None
@@ -28,6 +28,15 @@ def _get_predictor():
return _predictor
def preload():
"""Pré-charge le modèle OCR au démarrage."""
try:
_get_predictor()
print("✅ [OCR] docTR pré-chargé")
except Exception as e:
print(f"⚠️ [OCR] Pré-chargement échoué: {e}")
def ocr_extract_text(image: Image.Image) -> str:
"""Extrait le texte brut d'une image PIL.