diff --git a/paddleocr-service/main.py b/paddleocr-service/main.py index 39d28ed..04b7e77 100644 --- a/paddleocr-service/main.py +++ b/paddleocr-service/main.py @@ -28,22 +28,26 @@ def _load_model(): from paddleocr import PaddleOCR logger.info("Import done. Loading PaddleOCR model...") - try: - _engine = PaddleOCR( - lang="en", - ocr_version="PP-OCRv5", - use_angle_cls=True, - show_log=False, - ) - logger.info("Using PP-OCRv5 (en)") - except Exception as e: - logger.info(f"PP-OCRv5 failed ({e}), trying latin fallback...") - _engine = PaddleOCR( - lang="latin", - use_angle_cls=True, - show_log=False, - ) - logger.info("Using PP-OCRv4 fallback (latin)") + # Try multiple init strategies for different PaddleOCR versions + inits = [ + # PaddleOCR 3.x (no show_log) + dict(lang="en", ocr_version="PP-OCRv5", use_angle_cls=True), + # PaddleOCR 3.x with show_log + dict(lang="en", ocr_version="PP-OCRv5", use_angle_cls=True, show_log=False), + # PaddleOCR 2.8+ (latin) + dict(lang="latin", use_angle_cls=True, show_log=False), + # PaddleOCR 2.8+ (en, no version) + dict(lang="en", use_angle_cls=True, show_log=False), + ] + for i, kwargs in enumerate(inits): + try: + _engine = PaddleOCR(**kwargs) + logger.info(f"PaddleOCR init succeeded with strategy {i}: {kwargs}") + break + except Exception as e: + logger.info(f"PaddleOCR init strategy {i} failed: {e}") + else: + raise RuntimeError("All PaddleOCR init strategies failed") _ready = True logger.info("PaddleOCR model loaded successfully — ready to serve") except Exception as e: