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
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: