docling-project/docling · error · RuntimeError

Invalid binary_data_size value

Error message

Invalid binary_data_size value: {parsed_size}

What it means

_parse_binary_data_size successfully parsed binary_data_size as an int but the value was negative. A negative byte count is nonsensical and would corrupt the offset arithmetic that slices the binary body, so it is rejected.

Solutions

  1. Inspect the raw response JSON to confirm the negative value and report/fix the server-side computation
  2. Disable binary transport (use_binary_data=False) until the server is fixed
  3. If the parameter should be absent, ensure the predictor omits it rather than sending -1
Defensive patterns

Strategy: try-catch

Try / catch

try:
    outputs = client.infer(inputs=inputs, output_names=[...])
except RuntimeError as e:
    if "Invalid binary_data_size value" in str(e):
        raise  # server bug: negative byte count; report upstream
    raise

Prevention

When it happens

Trigger: A server bug or corrupted response sets binary_data_size to a negative integer (e.g. -1 as a sentinel); integer underflow in a predictor computing payload sizes; tampered/truncated body.

Common situations: Custom predictors using -1 as 'no data' marker instead of omitting the parameter; upstream size calculation bugs after model changes.

Related errors


AI-assisted analysis of docling-project/docling@61d76f1ff3 (2026-08-14). Data as JSON: /api/errors/b292c4d41a36c599. Report an issue: GitHub.

Appendix: source

Thrown at docling/models/inference_engines/common/kserve_v2_http.py:136

    shape = tuple(int(dim) for dim in raw_output.shape)
    if raw_output.datatype == "BYTES":
        return decode_bytes_tensor(raw_payload, shape)

    return np.frombuffer(raw_payload, dtype=np_dtype).reshape(shape)


def _parse_binary_data_size(parameters: Mapping[str, Any] | None) -> int | None:
    if not parameters or "binary_data_size" not in parameters:
        return None

    size = parameters["binary_data_size"]
    try:
        parsed_size = int(size)
    except (TypeError, ValueError) as exc:
        raise RuntimeError(f"Invalid binary_data_size value: {size!r}") from exc
    if parsed_size < 0:
        raise RuntimeError(f"Invalid binary_data_size value: {parsed_size}")
    return parsed_size


def _build_binary_request(
    *,
    inputs: Mapping[str, np.ndarray],
    output_names: list[str],
    request_parameters: Optional[Mapping[str, Any]],
) -> tuple[Dict[str, str], bytes]:
    raw_inputs: list[bytes] = []
    payload: Dict[str, Any] = {"inputs": []}
    for input_name, tensor in inputs.items():
        encoded_tensor, raw_payload = _encode_binary_input_tensor(
            name=input_name, tensor=np.asarray(tensor)
        )
        payload["inputs"].append(encoded_tensor)
        raw_inputs.append(raw_payload)

View on GitHub (pinned to 61d76f1ff3)