diff --git a/docker-compose.coolify.yml b/docker-compose.coolify.yml index 3c7463e..22ca9ee 100644 --- a/docker-compose.coolify.yml +++ b/docker-compose.coolify.yml @@ -157,6 +157,8 @@ services: FLAGS_use_mkldnn: "0" volumes: - paddleocr_models:/root/.paddleocr + labels: + - "traefik.http.services.paddleocr.loadbalancer.server.port=8095" deploy: resources: limits: diff --git a/paddleocr-service/main.py b/paddleocr-service/main.py index 04b7e77..455136d 100644 --- a/paddleocr-service/main.py +++ b/paddleocr-service/main.py @@ -48,6 +48,13 @@ def _load_model(): logger.info(f"PaddleOCR init strategy {i} failed: {e}") else: raise RuntimeError("All PaddleOCR init strategies failed") + # Warmup: run a dummy OCR to trigger JIT compilation + # Without this, the first real request takes minutes on CPU + logger.info("Running warmup OCR (JIT compilation)...") + dummy = np.ones((50, 200, 3), dtype=np.uint8) * 255 + _engine.ocr(dummy) + logger.info("Warmup complete") + _ready = True logger.info("PaddleOCR model loaded successfully — ready to serve") except Exception as e: