{"record":{"id":"1d821a338ebc8427","repo":"PaddlePaddle/PaddleOCR","slug":"no-models-are-available-for-lang-lang-and-ocr-ve","errorCode":null,"errorMessage":"No models are available for lang={lang} and ocr_version={ocr_version}.","messagePattern":"No models are available for lang=(.+?) and ocr_version=(.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"paddleocr/_pipelines/ocr.py","lineNumber":117,"sourceCode":"                f\"Invalid OCR version: {ocr_version}. Supported values are {_SUPPORTED_OCR_VERSIONS}.\"\n            )\n\n        if all(\n            map(\n                lambda p: p is None,\n                (\n                    text_detection_model_name,\n                    text_detection_model_dir,\n                    text_recognition_model_name,\n                    text_recognition_model_dir,\n                ),\n            )\n        ):\n            det_model_name, rec_model_name = self._get_ocr_model_names(\n                lang, ocr_version\n            )\n            if det_model_name is None or rec_model_name is None:\n                raise ValueError(\n                    f\"No models are available for lang={repr(lang)} and ocr_version={repr(ocr_version)}.\"\n                )\n            text_detection_model_name = det_model_name\n            text_recognition_model_name = rec_model_name\n        else:\n            if lang is not None or ocr_version is not None:\n                warnings.warn(\n                    \"`lang` and `ocr_version` will be ignored when model names or model directories are not `None`.\",\n                    stacklevel=2,\n                )\n\n        params = {\n            \"doc_orientation_classify_model_name\": doc_orientation_classify_model_name,\n            \"doc_orientation_classify_model_dir\": doc_orientation_classify_model_dir,\n            \"doc_unwarping_model_name\": doc_unwarping_model_name,\n            \"doc_unwarping_model_dir\": doc_unwarping_model_dir,\n            \"text_detection_model_name\": text_detection_model_name,\n            \"text_detection_model_dir\": text_detection_model_dir,","sourceCodeStart":99,"sourceCodeEnd":135,"githubUrl":"https://github.com/PaddlePaddle/PaddleOCR/blob/2661c7c0ef5c613e8f93c6e93b2e052399f0f854/paddleocr/_pipelines/ocr.py#L99-L135","documentation":"When no explicit detection/recognition model names or dirs are given, PaddleOCR looks up default model names for the (lang, ocr_version) pair via _get_ocr_model_names; if either lookup returns None it raises ValueError. This means the language code is unknown or has no models for that OCR version — it is a table-lookup failure, not a network failure.","triggerScenarios":"PaddleOCR(lang='xx', ocr_version='PP-OCRv5') with an unsupported language code; combining a valid lang with a version that lacks models for it (e.g. a lang not covered by PP-OCRv6); typo'd lang like lang='chinese' instead of 'ch'.","commonSituations":"Using full language names ('english', 'chinese') instead of codes ('en', 'ch'); copying lang lists from other OCR libs; requesting the newest OCR version for a language whose models only exist for older versions; passing None lang with an ocr_version for which defaults are unavailable.","solutions":["Use a supported language code, e.g. lang='ch' or lang='en' — check the docs' language list for the release.","Try a different ocr_version (e.g. PP-OCRv4 or PP-OCRv5) that has models for that language.","Bypass the lookup entirely by specifying explicit models: text_detection_model_name and text_recognition_model_name (or local model dirs)."],"exampleFix":"# before\nocr = PaddleOCR(lang='chinese', ocr_version='PP-OCRv5')  # ValueError\n# after\nocr = PaddleOCR(lang='ch', ocr_version='PP-OCRv5')\n# or pin explicit models\nocr = PaddleOCR(text_detection_model_name='PP-OCRv5_server_det',\n                text_recognition_model_name='PP-OCRv5_server_rec')","handlingStrategy":"validation","validationCode":"from paddleocr._pipelines.ocr import PaddleOCR\n\ndef has_models_for(lang, ocr_version) -> bool:\n    det, rec = PaddleOCR._get_ocr_model_names(lang, ocr_version)\n    return det is not None and rec is not None","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use documented short language codes ('ch', 'en', 'japan'), never full names","Test (lang, ocr_version) pairs programmatically at config-load time","Fall back to explicit model names when the default table lacks coverage"],"tags":["ocr","language","model-lookup","config","valueerror"],"backgroundTag":null,"analyzedSha":"2661c7c0ef5c613e8f93c6e93b2e052399f0f854","analyzedAt":"2026-08-14T20:17:30.180Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}