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
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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user