fix: robust PaddleOCR init with multiple fallback strategies
Some checks failed
CI / go-lint (pull_request) Failing after 2s
CI / python-lint (pull_request) Failing after 11s
CI / nodejs-lint (pull_request) Failing after 2s
CI / test-go-consent (pull_request) Failing after 2s
CI / test-python-voice (pull_request) Failing after 14s
CI / test-bqas (pull_request) Failing after 11s
CI / deploy-hetzner (pull_request) Has been skipped
Deploy to Coolify / deploy (push) Has been cancelled

PaddleOCR 3.x removed show_log param and lang='latin'. Try multiple
init strategies in order until one succeeds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-13 11:09:33 +01:00
parent 559d6a351c
commit 65177d3ff7

View File

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