BerriAI/litellm · error · ValueError

OCR is not supported for provider: {custom_llm_provider}

Error message

OCR is not supported for provider: {custom_llm_provider}

What it means

Raised during OCR request preparation when ProviderConfigManager has no OCR handler registered for the resolved provider — i.e. litellm.LlmProviders(custom_llm_provider) names a provider for which LiteLLM implements no /ocr transformation. The request never leaves the router; the caller must use a provider with OCR support (or go through a supported integration such as azure_ai document intelligence).

Source

Thrown at litellm/ocr/main.py:120

    )

    suppress_dynamic_api_base: Final = (
        not caller_supplied_api_base
        and custom_llm_provider == "azure_ai"
        and is_azure_document_intelligence_model(model)
    )
    if dynamic_api_key:
        api_key = dynamic_api_key
    if dynamic_api_base and not suppress_dynamic_api_base:
        api_base = dynamic_api_base

    ocr_provider_config: Final = ProviderConfigManager.get_provider_ocr_config(
        model=model,
        provider=litellm.LlmProviders(custom_llm_provider),
    )

    if ocr_provider_config is None:
        raise ValueError(f"OCR is not supported for provider: {custom_llm_provider}")

    verbose_logger.debug("OCR call - model: %s, provider: %s", model, custom_llm_provider)

    litellm_params: Final = GenericLiteLLMParams.model_validate(kwargs)

    supported_params: Final = ocr_provider_config.get_supported_ocr_params(model=model)
    non_default_params: Final = {}
    for param in supported_params:
        if param in kwargs:
            non_default_params[param] = kwargs.pop(param)

    optional_params: Final = ocr_provider_config.map_ocr_params(
        non_default_params=non_default_params,
        optional_params={},
        model=model,
    )

    verbose_logger.debug("OCR optional_params after mapping: %s", optional_params)

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Use a provider that supports OCR (e.g. mistral, vertex_ai) for the OCR request.
  2. Check the litellm docs for the list of OCR-capable providers and adjust the model/provider prefix.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at litellm/ocr/main.py:120 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18). Data as JSON: /api/errors/4580b92353694683. Report an issue: GitHub.