PaddlePaddle/PaddleOCR · error · ResponseFormatError

Done job response resultUrl must contain non-empty string 'j

Error message

Done job response resultUrl must contain non-empty string 'jsonUrl'.

What it means

Error "Done job response resultUrl must contain non-empty string 'jsonUrl'." thrown in PaddlePaddle/PaddleOCR.

Source

Thrown at paddleocr/_api_client/_core.py:189

    return data


def extract_job_id(data: dict) -> str:
    job_id = data.get("jobId")
    if not isinstance(job_id, str) or not job_id:
        raise ResponseFormatError(
            "Response data must contain non-empty string 'jobId'."
        )
    return job_id


def validate_result_json_url(data: dict) -> str:
    result_url = data.get("resultUrl")
    if not isinstance(result_url, dict):
        raise ResponseFormatError("Done job response must contain object 'resultUrl'.")
    json_url = result_url.get("jsonUrl")
    if not isinstance(json_url, str) or not json_url:
        raise ResponseFormatError(
            "Done job response resultUrl must contain non-empty string 'jsonUrl'."
        )
    return json_url


def parse_batch_status(batch_id: str, data: dict) -> BatchStatus:
    result = data.get("extractResult")
    if not isinstance(result, list):
        raise ResponseFormatError(
            "Batch response data must contain list 'extractResult'."
        )
    jobs = []
    for item in result:
        if not isinstance(item, dict):
            raise ResponseFormatError("Batch extractResult items must be objects.")
        job_id = item.get("jobId")
        if not isinstance(job_id, str) or not job_id:
            raise ResponseFormatError(

View on GitHub (pinned to 2661c7c0ef)

Solutions

  1. Ensure the job finished successfully; a done job's resultUrl must include a non-empty jsonUrl string.
  2. Check that the requested model produces JSON results and that result generation did not fail server-side.
  3. Print the full resultUrl object to see which URL fields the server actually returned.

Example fix

json_url = result_url.get("jsonUrl")
if not json_url:
    print(result_url)  # inspect available result URLs

When it happens

Trigger: Raised by validate_result_json_url() when the done job's resultUrl object lacks a non-empty string 'jsonUrl'.

Common situations: The 'resultUrl' object in a done job response lacked a valid 'jsonUrl' string. Occurs with partial result publication. Retry the status request or re-run the job.


AI-assisted analysis of PaddlePaddle/PaddleOCR@2661c7c0ef (2026-08-14). Data as JSON: /api/errors/80a6131b7a9cccc2. Report an issue: GitHub.