{"record":{"id":"b71a8b8191ff87d5","repo":"PaddlePaddle/PaddleOCR","slug":"unsupported-model-model-r","errorCode":null,"errorMessage":"Unsupported model: {model!r}","messagePattern":"Unsupported model: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"langchain-paddleocr/langchain_paddleocr/document_loaders/paddleocr_vl.py","lineNumber":43,"sourceCode":"from paddleocr import Model, PaddleOCRClient, PaddleOCRVLOptions\nfrom pydantic import SecretStr\n\nlogger = logging.getLogger(__name__)\n\n_DEFAULT_BASE_URL = \"https://paddleocr.aistudio-app.com\"\n\n_PAGES_DELIMITER = \"\\n\\f\"\n\n\ndef _resolve_vl_model(model: str | Model) -> Model:\n    if isinstance(model, Model):\n        resolved = model\n    else:\n        try:\n            resolved = Model(model)\n        except ValueError as exc:\n            msg = f\"Unsupported model: {model!r}\"\n            raise ValueError(msg) from exc\n\n    return resolved\n\n\nclass PaddleOCRVLLoader(BaseLoader):\n    \"\"\"Load documents using the PaddleOCR-VL document parsing API via SDK.\"\"\"\n\n    def __init__(\n        self,\n        file_path: str | Iterable[str],\n        *,\n        access_token: SecretStr | None = None,\n        base_url: str | None = None,\n        model: str | Model | None = None,\n        use_doc_orientation_classify: bool | None = False,\n        use_doc_unwarping: bool | None = False,\n        use_layout_detection: bool | None = None,\n        use_chart_recognition: bool | None = None,","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/PaddlePaddle/PaddleOCR/blob/2661c7c0ef5c613e8f93c6e93b2e052399f0f854/langchain-paddleocr/langchain_paddleocr/document_loaders/paddleocr_vl.py#L25-L61","documentation":"ValueError from _resolve_vl_model in the langchain-paddleocr PaddleOCRVLLoader when a string model name cannot be converted to the Model enum. The loader accepts either a Model enum member or one of the enum's exact string values; anything else (wrong casing, typo, unknown model id) is rejected with 'Unsupported model: {model!r}'.","triggerScenarios":"Passing model=\"paddleocr-vl\" when the enum expects e.g. \"PaddleOCR-VL\" or a specific version string; passing an arbitrary API model id not present in the local Model enum; passing None-like or empty strings.","commonSituations":"New server-side model names not yet in the installed langchain-paddleocr version; casing/whitespace differences between docs and enum values.","solutions":["List valid values: `from langchain_paddleocr... import Model; print([m.value for m in Model])` and pass one exactly.","Upgrade langchain-paddleocr if the model you want was added in a newer release.","Pass the Model enum member directly instead of a string to get static checking."],"exampleFix":"// before\nloader = PaddleOCRVLLoader(path, model=\"paddleocr-vl\")\n\n// after\nfrom langchain_paddleocr.document_loaders.paddleocr_vl import Model\nloader = PaddleOCRVLLoader(path, model=Model.PADDLEOCR_VL)  # or the exact enum string value","handlingStrategy":"type-guard","validationCode":"from langchain_paddleocr.document_loaders import paddleocr_vl\n\ndef model_supported(model: str) -> bool:\n    values = {m.value for m in paddleocr_vl.Model}\n    return model in values","typeGuard":"from typing import Any\n\ndef is_vl_model(value: Any) -> bool:\n    \"\"\"True when value is a Model member or one of its exact string values.\"\"\"\n    if isinstance(value, paddleocr_vl.Model):\n        return True\n    return isinstance(value, str) and value in {m.value for m in paddleocr_vl.Model}","tryCatchPattern":"try:\n    loader = PaddleOCRVLLoader(path, model=name)\n    docs = loader.load()\nexcept ValueError as e:\n    if \"Unsupported model\" in str(e):\n        valid = [m.value for m in Model]\n        raise ValueError(f\"{name!r} invalid; choose from {valid}\") from e\n    raise","preventionTips":["Derive model names from the Model enum at runtime instead of hardcoding strings.","Run a startup assert that configured model names are enum members so failures surface at boot, not mid-load.","Upgrade langchain-paddleocr when adopting newly released VL models."],"tags":["python","langchain","enum","validation","document-loader"],"backgroundTag":null,"analyzedSha":"2661c7c0ef5c613e8f93c6e93b2e052399f0f854","analyzedAt":"2026-08-14T20:17:30.180Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}