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
|
from paddleocr import PaddleOCR
|
||||||
|
|
||||||
logger.info("Import done. Loading PaddleOCR model...")
|
logger.info("Import done. Loading PaddleOCR model...")
|
||||||
|
# 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:
|
try:
|
||||||
_engine = PaddleOCR(
|
_engine = PaddleOCR(**kwargs)
|
||||||
lang="en",
|
logger.info(f"PaddleOCR init succeeded with strategy {i}: {kwargs}")
|
||||||
ocr_version="PP-OCRv5",
|
break
|
||||||
use_angle_cls=True,
|
|
||||||
show_log=False,
|
|
||||||
)
|
|
||||||
logger.info("Using PP-OCRv5 (en)")
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.info(f"PP-OCRv5 failed ({e}), trying latin fallback...")
|
logger.info(f"PaddleOCR init strategy {i} failed: {e}")
|
||||||
_engine = PaddleOCR(
|
else:
|
||||||
lang="latin",
|
raise RuntimeError("All PaddleOCR init strategies failed")
|
||||||
use_angle_cls=True,
|
|
||||||
show_log=False,
|
|
||||||
)
|
|
||||||
logger.info("Using PP-OCRv4 fallback (latin)")
|
|
||||||
_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:
|
||||||
|
|||||||
Reference in New Issue
Block a user