PaddlePaddle/PaddleOCR · warning · InvalidRequestError

destination is required.

Error message

destination is required.

What it means

InvalidRequestError raised by save_resource when destination is empty/None. Pure client-side guard executed before URL validation, path resolution, and download — no filesystem or network access has happened yet.

Source

Thrown at paddleocr/_api_client/_resources.py:38

import requests

from .errors import InvalidRequestError, NetworkError, RequestTimeoutError
from .results import DocParsingResult, OCRResult


def save_resource(
    resource_url: str,
    destination: str,
    *,
    overwrite: bool = False,
    filename: Optional[str] = None,
    timeout: float = 300.0,
) -> str:
    if not resource_url:
        raise InvalidRequestError("resource_url is required.")
    if not destination:
        raise InvalidRequestError("destination is required.")

    parsed_url = urlparse(resource_url)
    if parsed_url.scheme not in ("http", "https") or not parsed_url.netloc:
        raise InvalidRequestError(f"Invalid resource URL: {resource_url}")

    target = _resolve_destination(parsed_url.path, destination, filename)
    _require_writable_target(target, overwrite)

    try:
        response = requests.get(resource_url, timeout=timeout)
    except requests.Timeout as e:
        raise RequestTimeoutError(f"Request timed out: {e}") from e
    except requests.ConnectionError as e:
        raise NetworkError(f"Connection failed: {e}") from e

    try:
        response.raise_for_status()
    except requests.RequestException as e:

View on GitHub (pinned to 2661c7c0ef)

Solutions

  1. Set the destination: pass an explicit directory or file path
  2. If it comes from config/env, fail fast at startup with a clear message when it is unset rather than deep in the download call
  3. Add a default destination (e.g. Path.cwd()) if an empty destination should be legal in your app

Example fix

# before
save_resource(url, os.environ.get('OUT_DIR'))  # OUT_DIR unset -> None

# after
out_dir = os.environ['OUT_DIR']  # fails early with clear KeyError
save_resource(url, out_dir)
Defensive patterns

Strategy: validation

Validate before calling

destination = destination or str(Path.cwd())
assert destination, 'destination must be configured'

Try / catch

try:
    save_resource(url, destination)
except InvalidRequestError as e:
    raise RuntimeError(f'output destination misconfigured: {e}') from e

Prevention

When it happens

Trigger: Calling save_resource(url, '') or save_resource(url, None); passing an unconfigured destination variable (e.g. from os.environ.get('OUT_DIR') that returned None because the env var is unset).

Common situations: Destination read from a config/env var that is missing in the current environment; CLI flag with a default of None that the user forgot to supply; refactor dropping the destination argument.

Related errors


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