fix: No matches
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 37s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 22s
Deploy to Staging / Verify Staging (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped

This commit is contained in:
Eric Gullickson
2026-02-07 16:35:28 -06:00
parent 3adbb10ff6
commit 9a2b12c5dc
2 changed files with 19 additions and 7 deletions

View File

@@ -56,8 +56,9 @@ class PaddleOcrEngine(OcrEngine):
"""Run PaddleOCR on image bytes.
PaddleOCR v3.x ``predict()`` returns an iterator of result objects.
Each result has a ``res`` dict with ``dt_polys``, ``rec_texts``,
and ``rec_scores``.
Each result's ``.json`` property returns a dict. The OCR fields
(``dt_polys``, ``rec_texts``, ``rec_scores``) may be at the top
level or nested under a ``"res"`` key depending on the version.
"""
ocr = self._get_ocr()
@@ -78,7 +79,13 @@ class PaddleOcrEngine(OcrEngine):
engine_name=self.name,
)
res = results[0].json
raw = results[0].json
# Unwrap nested "res" key if present (save_to_json format)
res = raw.get("res", raw) if isinstance(raw, dict) else raw
logger.debug(
"PaddleOCR result keys: %s",
list(res.keys()) if isinstance(res, dict) else type(res).__name__,
)
dt_polys = res.get("dt_polys", [])
rec_texts = res.get("rec_texts", [])
rec_scores = res.get("rec_scores", [])

View File

@@ -44,13 +44,18 @@ def _make_result(
def _mock_paddle_result(
dt_polys: list, rec_texts: list[str], rec_scores: list[float]
) -> MagicMock:
"""Create a mock PaddleOCR v3.x predict() result object."""
"""Create a mock PaddleOCR v3.x predict() result object.
Wraps data under ``"res"`` key to match save_to_json format.
"""
result = MagicMock()
result.json = {
"res": {
"dt_polys": dt_polys,
"rec_texts": rec_texts,
"rec_scores": rec_scores,
}
}
return result