{"record":{"id":"aca9fb4e44d44104","repo":"PaddlePaddle/PaddleOCR","slug":"unsupported-lang-ocrversion-combination-lang-l","errorCode":null,"errorMessage":"Unsupported lang/ocrVersion combination: lang=\"${lang}\", ocrVersion=\"${resolvedOcrVersion}\".","messagePattern":"Unsupported lang/ocrVersion combination: lang=\"(.+?)\", ocrVersion=\"(.+?)\"\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"paddleocr-js/packages/core/src/pipelines/ocr/shared.ts","lineNumber":530,"sourceCode":"}\n\nfunction resolveBaseModelSelection(\n  options: Record<string, unknown>,\n  includeDefaultBase = false\n): Readonly<PipelineModelSelection> | null {\n  const ocrVersion = readAliasedOption(options, [\"ocrVersion\", \"ocr_version\"], \"ocrVersion\") as\n    | string\n    | undefined;\n  if (!options.lang && !ocrVersion) {\n    return includeDefaultBase ? DEFAULT_MODEL_SELECTION : null;\n  }\n\n  const lang = (options.lang as string) || \"ch\";\n  const resolvedOcrVersion = ocrVersion || \"PP-OCRv5\";\n\n  if (resolvedOcrVersion === \"PP-OCRv6\") {\n    if (!isPpOcrV6Lang(lang)) {\n      throw new Error(\n        `Unsupported lang/ocrVersion combination: lang=\"${lang}\", ocrVersion=\"${resolvedOcrVersion}\".`\n      );\n    }\n    return PP_OCRV6_LANG_VERSION_MODEL_SELECTION;\n  }\n\n  const modelSelection = SUPPORTED_LANG_VERSION_MODELS.get(`${lang}::${resolvedOcrVersion}`);\n\n  if (!modelSelection) {\n    throw new Error(\n      `Unsupported lang/ocrVersion combination: lang=\"${lang}\", ocrVersion=\"${resolvedOcrVersion}\".`\n    );\n  }\n  return modelSelection;\n}\n\nfunction resolveConstructionOptions(\n  options: Record<string, unknown> = {}","sourceCodeStart":512,"sourceCodeEnd":548,"githubUrl":"https://github.com/PaddlePaddle/PaddleOCR/blob/2661c7c0ef5c613e8f93c6e93b2e052399f0f854/paddleocr-js/packages/core/src/pipelines/ocr/shared.ts#L512-L548","documentation":"When resolving the default model selection from lang/ocrVersion, PP-OCRv6 is special-cased: only a restricted language list (isPpOcrV6Lang) is supported, because v6 ships a single multi-language model selection. If lang is not on that list, this error is thrown with both values shown.","triggerScenarios":"PaddleOCR.create({ lang: 'korean', ocrVersion: 'PP-OCRv6' }) where 'korean' is not in the PP-OCRv6 language set (exact list defined by isPpOcrV6Lang in this version).","commonSituations":"Assuming every lang supported by PP-OCRv5 works on v6; upgrading ocrVersion without checking its language matrix; defaulting ocrVersion to the newest version while keeping an exotic lang.","solutions":["Use a lang supported by PP-OCRv6 (check the library's v6 language list / docs).","Or downgrade ocrVersion to one covering your language, e.g. 'PP-OCRv5'.","Or bypass lang-based selection entirely by specifying explicit model names for both roles."],"exampleFix":"// before\nconst ocr = await PaddleOCR.create({ lang: 'korean', ocrVersion: 'PP-OCRv6' });\n\n// after\nconst ocr = await PaddleOCR.create({ lang: 'korean', ocrVersion: 'PP-OCRv5' });","handlingStrategy":"validation","validationCode":"// Check lang support for PP-OCRv6 against your pinned library version's list\nconst PP_OCRV6_LANGS = new Set(['ch', 'en', /* ...fill from your version's docs */]);\nfunction isSupportedV6Lang(lang: string): boolean {\n  return PP_OCRV6_LANGS.has(lang);\n}\nif (opts.ocrVersion === 'PP-OCRv6' && !isSupportedV6Lang(opts.lang ?? 'ch')) {\n  opts = { ...opts, ocrVersion: 'PP-OCRv5' };\n}","typeGuard":"function isPpOcrV6Config(lang: string, version: string): boolean {\n  return version !== 'PP-OCRv6' || isSupportedV6Lang(lang);\n}","tryCatchPattern":"try {\n  const ocr = await PaddleOCR.create({ lang, ocrVersion });\n} catch (e) {\n  if (e instanceof Error && e.message.includes('Unsupported lang/ocrVersion')) {\n    return PaddleOCR.create({ lang, ocrVersion: 'PP-OCRv5' }); // known-wide coverage fallback\n  }\n  throw e;\n}","preventionTips":["Pin the library version and copy its v6 language list into your config validation.","Default to PP-OCRv5 unless you specifically need v6 features."],"tags":["model-selection","language","versioning","configuration"],"backgroundTag":null,"analyzedSha":"2661c7c0ef5c613e8f93c6e93b2e052399f0f854","analyzedAt":"2026-08-14T20:17:30.180Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}