入门

快速开始与 API安装在线 OCRCode generator (EN)

模型与产线

PP-OCRv6 模型支持语言PP-StructureV3PaddleOCR-VL

部署与集成

Serving & API (EN)PaddleOCR.js (EN)MCP server (EN)

排错与升级

常见错误从 2.x 迁移Releases (EN)

评估

Our benchmark (EN)Compare OCR tools (EN)License & cost (EN)

工具

在线 OCR安装命令生成器Code generator (EN)报错修复助手2.x → 3.x 代码转换语言代码查询

语言

English简体中文日本語在线体验 OCR
参考资料 + 免费工具

PaddleOCR 支持语言:每个 lang 代码及其加载的模型

PaddleOCR 3.7 接受 112 个 lang 代码。五十种语言——中文、英语、日语和 46 种拉丁字母语言——由同一个 PP-OCRv6 模型识别。韩语、阿拉伯字母、西里尔字母、天城文、泰语、希腊语、泰米尔语和泰卢固语则回退到 PP-OCRv5 模型。在下方搜索任意语言,即可得到它的代码、模型和一行 Python 代码。

已对照 PaddleOCR 3.7.0 核实更新于 11 分钟阅读在浏览器本地运行
本页目录
  1. 查找你的 lang 代码
  2. PaddleOCR 如何把 lang 变成模型
  3. 会报 ValueError 的代码
  4. 按文字分类的语言支持
  5. PP-OCRv6 以外语言的速度与体积
  6. 混合语言文档
  7. 哪些语言能在浏览器中运行
  8. 官方语言列表中的错误
  9. 全部 112 个 lang 代码
  10. 常见问题

简短回答:要传 PaddleOCR 自己的代码,而不是 ISO 代码——ch、chinese_cht、japan、korean、en、fr、ar、hi、ru……对于中文、英语、日语和 46 种拉丁字母语言,根本不需要 lang:默认的 PP-OCRv6 模型已经能识别全部 50 种,传 lang="fr" 加载的也是完全相同的模型。对于其他文字,正是 lang 让 PaddleOCR 加载正确的 PP-OCRv5 识别模型。1

查找你的 lang 代码#

可按中文名、英文名、本地名称、ISO 代码或文字搜索。每条结果都会给出 PaddleOCR 3.7 接受的代码、它加载的两个模型、能否在浏览器中运行,以及一行可复制的 Python 代码。也可以同时查两种语言,例如 en + fr 或 韩语 + 英语。

语言代码查询#

在浏览器本地运行
文字
查询工具需要 JavaScript。所有代码也都列在完整表格中。

PaddleOCR 如何把 lang 变成模型#

在 PaddleOCR 3.7 中,lang 参数只做一件事:选出一个文本检测模型和一个文本识别模型。逻辑在 _get_ocr_model_names() 中,按以下顺序执行:1

  1. 不传 lang,也不传 ocr_version#

    得到 PP-OCRv6_medium_det + PP-OCRv6_medium_rec,可识别 50 种语言。

  2. PP-OCRv6 支持的语言#

    ch、chinese_cht、en、japan,以及除 pi 之外的所有拉丁字母代码(52 个代码,50 种语言——french 和 german 是 fr 和 de 的别名)。它们加载的都是与默认情况相同的两个 medium 模型。

  3. 其他受支持的文字#

    韩语、泰语、希腊语、泰卢固语、泰米尔语,阿拉伯字母、东斯拉夫、西里尔字母和天城文语言组,以及巴利语(Pali),会得到 PP-OCRv5_server_det 和对应文字的 *_PP-OCRv5_mobile_rec(59 个代码)。

  4. ka#

    唯一仍由 PP-OCRv3 提供的代码:PP-OCRv3_mobile_det + ka_PP-OCRv3_mobile_rec。

  5. 其他任何值#

    PaddleOCR() 会报 ValueError: No models are available for lang='…' and ocr_version=None.

PaddleOCR 3.7 中每个 lang 代码加载哪个模型

按自动选择的识别模型统计可用的 lang 代码数量(共 112 个代码)。将鼠标悬停在条形上可查看对应代码。

识别模型lang 代码
PP-OCRv6 medium(统一模型)52
PP-OCRv5 西里尔字母30
PP-OCRv5 天城文13
PP-OCRv5 阿拉伯字母7
PP-OCRv5 东斯拉夫3
PP-OCRv3 ka(卡纳达语?)1
PP-OCRv5 希腊语1
PP-OCRv5 韩语1
PP-OCRv5 拉丁字母(仅巴利语)1
PP-OCRv5 泰米尔语1
PP-OCRv5 泰卢固语1
PP-OCRv5 泰语1
paddleocr.dev,根据 PaddleOCR 3.7.0 paddleocr/_pipelines/ocr.py 中的 _get_ocr_model_names() 生成。

官方文档没有明说的三个结论:

  • 对 PP-OCRv6 语言而言,lang 不起任何作用。PaddleOCR(lang="fr")、PaddleOCR(lang="en") 和 PaddleOCR() 加载的模型完全相同,输出也完全相同。18
  • lang 永远不会选中 PP-OCRv6 small 或 tiny。要使用它们,需传入 text_detection_model_name 和 text_recognition_model_name;此时 PaddleOCR 会忽略 lang 并给出警告。参见如何选择档位。1
  • lang 加上 ocr_version 会得到更旧的模型。设置 ocr_version="PP-OCRv5" 时,en 加载只识别英文的 en_PP-OCRv5_mobile_rec,fr 加载 latin_PP-OCRv5_mobile_rec。PP-OCRv4 只支持 ch 和 en;PP-OCRv3 支持 110 个代码(除 th 和 el 外的全部)。1

会报 ValueError 的代码#

PaddleOCR 的代码是它自己定的:有些与 ISO 639-1 一致(fr、ar、hi),很多则不一致。我们在 3.7.0 中逐个用 PaddleOCR(lang=…) 测试了下列代码,全部报 ValueError: No models are available for lang=…。前六个直接来自官方的 PP-OCRv5 语言列表。348

你用的代码应改用错误代码的来源
srrs_cyrillic 或 rs_latin官方 PP-OCRv5 列表
rslatinrs_latin官方 PP-OCRv5 列表
ababq官方 PP-OCRv5 文档(“Abkhaz”,阿布哈兹语);而代码接受的 abq 在 OCR 文档中叫 Abaza(阿巴扎语)
avava(阿瓦尔语)官方 PP-OCRv5 文档
ceche(车臣语)官方 PP-OCRv5 文档
lkilbe(拉克语)官方 PP-OCRv5 文档
zhch 或 chinese_chtISO 639-1 习惯
ja、jpjapanISO / 国家代码习惯
ko、krkoreanISO / 国家代码习惯
knka(见 ka 的问题)卡纳达语的 ISO 代码
"en+fr"、"en,fr"只用一个代码,或不传lang 只接受一个代码——见混合语言文档

按文字分类的语言支持#

中文和日语#

简体中文用 ch,繁体中文用 chinese_cht,日语用 japan——也可以都不传,因为默认的 PP-OCRv6 模型能同时识别这三种加英语。在百度内部评测中,PP-OCRv6 medium 的日语识别得分为 90.5%,PP-OCRv5 server 为 73.7%。5在我们自己的测试中,medium 和 small 把我们的日文通知和中英文通知的每一行都识别正确了。9

PP-OCRv6 tiny 无法识别日语。它的字典里没有假名,在我们的日文通知上字符错误率达到 47.3%,而且没有任何警告。由于 lang="japan" 总是加载 medium,只有你自己选了 tiny 才会遇到这个问题。查看实际输出。

英语、法语、德语、西班牙语及其他拉丁字母语言#

全部 46 种拉丁字母语言加英语都由同一个 PP-OCRv6 模型识别:南非荷兰语、阿尔巴尼亚语、阿塞拜疆语、巴斯克语、波斯尼亚语、加泰罗尼亚语、克罗地亚语、捷克语、丹麦语、荷兰语、爱沙尼亚语、芬兰语、法语、加利西亚语、德语、匈牙利语、冰岛语、印度尼西亚语、爱尔兰语、意大利语、库尔德语、拉丁语、拉脱维亚语、立陶宛语、卢森堡语、马来语、马耳他语、毛利语、挪威语、奥克语、波兰语、葡萄牙语、克丘亚语、罗马尼亚语、罗曼什语、塞尔维亚语(拉丁字母)、斯洛伐克语、斯洛文尼亚语、西班牙语、斯瓦希里语、瑞典语、他加禄语、土耳其语、乌兹别克语、越南语和威尔士语。12有两个特殊情况:

  • 巴利语(pi)在拉丁字母列表中,但被明确排除在 PP-OCRv6 之外,因此加载的是 latin_PP-OCRv5_mobile_rec。强制设置 ocr_version="PP-OCRv6" 并传 lang="pi" 会报 ValueError。1
  • 库尔德语(ku)同时出现在拉丁字母和阿拉伯字母两个列表中。拉丁字母分支先被检查,所以 lang="ku" 总是得到拉丁字母的 PP-OCRv6 模型。如果是阿拉伯字母书写的库尔德语,请自己设置 text_recognition_model_name="arabic_PP-OCRv5_mobile_rec"。12

韩语#

lang="korean" 加载 korean_PP-OCRv5_mobile_rec。百度称该模型可识别韩语和英语,在 5,007 张图片的韩语测试集上准确率为 88.0%——用百度的原话说,比上一代提升了 65.0%。4PP-OCRv6 不包含韩语,PaddleOCR.js 也不支持。

pythonkorean.py
from paddleocr import PaddleOCR

ocr = PaddleOCR(lang="korean")   # PP-OCRv5_server_det + korean_PP-OCRv5_mobile_rec
print(ocr.predict("menu_ko.jpg")[0]["rec_texts"])

阿拉伯语、波斯语、乌尔都语及其他阿拉伯字母语言#

七个代码——ar、fa、ur、ug、ps、sd、bal——加载 arabic_PP-OCRv5_mobile_rec。百度报告该模型在 2,676 张图片的测试集上准确率为 81.27%(比上一代提升 22.83%),并称它可识别阿拉伯语、波斯语、维吾尔语、乌尔都语、普什图语、库尔德语、信德语、俾路支语和英语。4我们还没有亲自测试过阿拉伯字母文档,所以在依赖它之前,请先在你自己的从右到左排版页面上检查 rec_texts 的阅读顺序。

俄语、乌克兰语及其他西里尔字母语言#

俄语(ru)、乌克兰语(uk)和白俄罗斯语(be)加载东斯拉夫模型 eslav_PP-OCRv5_mobile_rec(7,031 张图片上 81.6%)。其余 30 个西里尔字母代码——保加利亚语、塞尔维亚语(rs_cyrillic)、马其顿语、哈萨克语、吉尔吉斯语、蒙古语、鞑靼语、车臣语等——加载 cyrillic_PP-OCRv5_mobile_rec(7,600 张图片上 80.27%)。14

印地语、马拉地语、尼泊尔语及其他天城文语言#

十三个代码加载 devanagari_PP-OCRv5_mobile_rec:hi(印地语)、mr(马拉地语)、ne(尼泊尔语)、sa(梵语)、bh、bho、mai、mah、new、gom、bgc、ang 和 sck。百度报告其在 3,611 张图片上准确率为 84.96%,比上一代提升 68.26%。4文档对其中两个名称说法不一:ang 在语言表中是“Old English”(古英语),在该模型的语言列表中却是“Angika”(安吉卡语);sck 一处是“Sadri”,另一处是“Santali”(桑塔利语)。34

pythonhindi.py
from paddleocr import PaddleOCR

ocr = PaddleOCR(lang="hi")   # PP-OCRv5_server_det + devanagari_PP-OCRv5_mobile_rec

泰语、希腊语、泰米尔语、泰卢固语#

每种语言都有自己的 PP-OCRv5 识别模型,并且都能识别英语:th(82.68%)、el(89.28%)、ta(94.2%)和 te(87.65%),测试集为百度各语言的 2,121 到 4,261 张图片。4

ka 的问题:格鲁吉亚语还是卡纳达语?#

OCR 产线文档把 ka 列为格鲁吉亚语(Georgian)。但它唯一加载的模型 ka_PP-OCRv3_mobile_rec,在同一套文档的另外两处都被描述为卡纳达语(Kannada)模型——这是另一种语言,文字也完全不同。36两者都没有 PP-OCRv5 或 v6 模型。我们无法从现有资料中确认是哪一种,所以在把 lang="ka" 用于格鲁吉亚语或卡纳达语之前,请先在你的文档样本上测试。

PP-OCRv6 以外语言的速度与体积#

每条 PP-OCRv5 语言路由都是一个小型文字识别模型搭配大型的 PP-OCRv5_server_det 检测模型(文档中为 84.3 MB)。识别模型本身很小——百度称 2025 年 10 月发布的这批模型“only 2M parameters”(仅 2M 参数)——所以在 CPU 上主要的计算量在检测模型。410

如果你用 ONNX Runtime,这一点很关键。在我们的基准测试中,PP-OCRv5 server 产线在 ONNX Runtime 下平均每页 35.7 s,而用 PaddlePaddle 3.2.0 为 5.2 s。我们又用 lang="korean" 在小票图片上复测(韩语模型、英文文本,该模型被列为可识别英文):ONNX Runtime 每张图片 12.35 s,PaddlePaddle 为 1.80 s,取三次预热后运行的中位数,两者输出的 27 行完全相同。11由于韩语识别模型是一个小型 mobile 模型,这说明变慢的原因在于 ONNX Runtime 下的 server 检测模型——与 PP-OCRv6 正好相反,PP-OCRv6 的每个档位都是 ONNX Runtime 更快。

在 CPU 上运行韩语、阿拉伯字母、西里尔字母、天城文、泰语、希腊语、泰米尔语和泰卢固语时,请使用 PaddlePaddle 推理引擎(paddlepaddle==3.2.0;见安装教程),切换到 engine="onnxruntime" 之前先做基准测试。完整的推理引擎测试结果见 /benchmarks(英文)。

混合语言文档#

一个 PaddleOCR 实例只运行一个识别模型。lang 只接受一个代码;"en+fr" 或 "en,fr" 这样的字符串会报 ValueError。8具体做法取决于语言组合:

你的文档混合了……这样做
英语 + 法语(或任意拉丁字母语言)PaddleOCR() 或 PaddleOCR(lang="fr")——同一个 PP-OCRv6 模型,两种都能识别。
中文或日语 + 英语PaddleOCR()。PP-OCRv6 一次就能识别中日文字和拉丁字母;我们的中英文通知 10/10 行完全正确。9
韩语、阿拉伯语、印地语、俄语、泰语…… + 英语使用该文字的代码(lang="korean"、"ar"、"hi"……)。这些识别模型都被列为同时能识别英语。4
两种 PP-OCRv6 以外的非拉丁文字(如韩语 + 俄语),或中文 + 韩语每种文字各运行一个实例,再合并结果——见下文。

对于最后一种情况,一个办法是在同一张图片上运行两条产线,对每个文本区域保留 rec_scores 更高的那一行。这只是我们的建议,并没有做过基准测试;识别模型遇到它不认识的文字时,仍可能自信地给出错误结果,PP-OCRv6 tiny 识别日语就是例子。

pythontwo_scripts.py
from paddleocr import PaddleOCR

common = dict(use_doc_orientation_classify=False, use_doc_unwarping=False,
              use_textline_orientation=False)
ko = PaddleOCR(lang="korean", **common)   # korean_PP-OCRv5_mobile_rec
ru = PaddleOCR(lang="ru", **common)       # eslav_PP-OCRv5_mobile_rec

a = ko.predict("sign.jpg")[0]
b = ru.predict("sign.jpg")[0]
for name, r in (("korean", a), ("russian", b)):
    for text, score, box in zip(r["rec_texts"], r["rec_scores"], r["rec_boxes"]):
        print(name, round(score, 3), box.tolist(), text)

如果你有 GPU,并且有大量混合文字的页面,PaddleOCR-VL 是另一条路:百度称它用单个视觉语言模型支持 109 种语言。10

哪些语言能在浏览器中运行#

官方浏览器 SDK PaddleOCR.js 提供三套模型:PP-OCRv6 small、PP-OCRv6 tiny 和 PP-OCRv5 mobile。7

  • ocrVersion: "PP-OCRv6" 加载 PP-OCRv6 small,接受 ch、chinese_cht、en、japan 以及除 pi 外的拉丁字母代码——与 Python 相同的 50 种语言。
  • ocrVersion: "PP-OCRv5" 只接受 ch、chinese_cht、en 和 japan。其他任何代码都会抛出 Unsupported lang/ocrVersion combination。
  • tiny 没有 lang 映射;要按模型名加载,而且它无法识别日语。

韩语、阿拉伯字母、西里尔字母、天城文、泰语、希腊语、泰米尔语和泰卢固语目前只能在 Python 中使用。我们的在线 OCR 工具基于 PaddleOCR.js,因此支持的正好是 PP-OCRv6 那一组语言;上方的查询工具对每种语言都做了相应标注。嵌入方法见 PaddleOCR.js 指南(英文)。

官方语言列表中的错误#

我们把文档与 langs.py 和 ocr.py 做了对照。实际运行的是代码,所以本页的查询工具和表格都以代码为准。

  • OCR 产线文档中的 PP-OCRv5 列表包含 rslatin、sr、ab、av、ce 和 lki,代码一个都不接受;同时漏掉了代码接受的 french、german、abq、ava、che、lbe、rs_latin 和 rs_cyrillic。3
  • ab 在 PP-OCRv5 文档中叫 Abkhaz(阿布哈兹语),而代码接受的 abq 在 OCR 文档中叫 Abaza(阿巴扎语)——这是两种不同的语言。34
  • ka 在一张表里是格鲁吉亚语,在模型描述里却是卡纳达语(见上文)。
  • OCR 文档中的“Supported Languages”表有 81 行,而代码接受 112 个代码。表中缺少:泰语、希腊语、加泰罗尼亚语、巴斯克语、芬兰语、加利西亚语、卢森堡语、罗曼什语、克丘亚语、普什图语、信德语、俾路支语,以及 18 种西里尔字母语言,包括哈萨克语、吉尔吉斯语、塔吉克语、马其顿语和鞑靼语。3
  • 文档中的 PP-OCRv3 列表漏掉了 27 个代码,而代码实际上会把它们路由到 PP-OCRv3 模型——例如 kk → cyrillic_PP-OCRv3_mobile_rec。13
  • 语言数量说法不一:PP-OCRv5 多语言模型在其自身文档中是“106 languages”,在 README 中是“109 languages”。410

全部 112 个 lang 代码#

按英文名称排序。“识别模型”是只传 lang 时 PaddleOCR 3.7.0 加载的模型;检测模型在 PP-OCRv6 行为 PP-OCRv6_medium_det,在 PP-OCRv5 行为 PP-OCRv5_server_det,ka 为 PP-OCRv3_mobile_det。“v6 tiny”表示 PP-OCRv6 tiny 能否识别该语言;“浏览器”表示 PaddleOCR.js 和我们的在线 OCR 工具能否识别。中文名称为我们的翻译。表格由 3.7.0 源码生成,查询工具使用的是同一份数据。12

PaddleOCR 3.7.0 接受的全部 112 个 lang 代码
语言英文名lang=识别模型(3.7)v6 tiny浏览器文字
阿巴扎语Abazaabqcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
阿迪格语Adygheadycyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
南非荷兰语AfrikaansafPP-OCRv6_medium_rec是是拉丁字母
阿尔巴尼亚语AlbaniansqPP-OCRv6_medium_rec是是拉丁字母
阿拉伯语Arabicararabic_PP-OCRv5_mobile_rec不适用否阿拉伯字母
阿瓦尔语Avaricavacyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
阿塞拜疆语AzerbaijaniazPP-OCRv6_medium_rec是是拉丁字母
俾路支语Balochibalarabic_PP-OCRv5_mobile_rec不适用否阿拉伯字母
巴什基尔语Bashkirbacyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
巴斯克语BasqueeuPP-OCRv6_medium_rec是是拉丁字母
白俄罗斯语Belarusianbeeslav_PP-OCRv5_mobile_rec不适用否西里尔字母
博杰普尔语Bhojpuribhodevanagari_PP-OCRv5_mobile_rec不适用否天城文
比哈尔语Biharibhdevanagari_PP-OCRv5_mobile_rec不适用否天城文
波斯尼亚语BosnianbsPP-OCRv6_medium_rec是是拉丁字母
保加利亚语Bulgarianbgcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
布里亚特语Buriatbuacyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
加泰罗尼亚语CatalancaPP-OCRv6_medium_rec是是拉丁字母
车臣语Chechenchecyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
简体中文Chinese (Simplified)chPP-OCRv6_medium_rec是是汉字(简体)
繁体中文Chinese (Traditional)chinese_chtPP-OCRv6_medium_rec是是汉字(繁体)
楚瓦什语Chuvashcvcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
克罗地亚语CroatianhrPP-OCRv6_medium_rec是是拉丁字母
捷克语CzechcsPP-OCRv6_medium_rec是是拉丁字母
丹麦语DanishdaPP-OCRv6_medium_rec是是拉丁字母
达尔金语Dargwadarcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
荷兰语DutchnlPP-OCRv6_medium_rec是是拉丁字母
英语EnglishenPP-OCRv6_medium_rec是是拉丁字母
爱沙尼亚语EstonianetPP-OCRv6_medium_rec是是拉丁字母
芬兰语FinnishfiPP-OCRv6_medium_rec是是拉丁字母
法语FrenchfrPP-OCRv6_medium_rec是是拉丁字母
法语FrenchfrenchPP-OCRv6_medium_rec是是拉丁字母
加利西亚语GalicianglPP-OCRv6_medium_rec是是拉丁字母
格鲁吉亚语Georgiankaka_PP-OCRv3_mobile_rec不适用否卡纳达文或格鲁吉亚文(文档说法不一)
德语GermandePP-OCRv6_medium_rec是是拉丁字母
德语GermangermanPP-OCRv6_medium_rec是是拉丁字母
希腊语Greekelel_PP-OCRv5_mobile_rec不适用否希腊字母
哈里亚纳语Haryanvibgcdevanagari_PP-OCRv5_mobile_rec不适用否天城文
印地语Hindihidevanagari_PP-OCRv5_mobile_rec不适用否天城文
匈牙利语HungarianhuPP-OCRv6_medium_rec是是拉丁字母
冰岛语IcelandicisPP-OCRv6_medium_rec是是拉丁字母
印度尼西亚语IndonesianidPP-OCRv6_medium_rec是是拉丁字母
印古什语Ingushinhcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
爱尔兰语IrishgaPP-OCRv6_medium_rec是是拉丁字母
意大利语ItalianitPP-OCRv6_medium_rec是是拉丁字母
日语JapanesejapanPP-OCRv6_medium_rec否仅 small日文
卡巴尔达语Kabardiankbdcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
卡尔梅克语Kalmykxalcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
卡拉卡尔帕克语Karakalpakkaacyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
哈萨克语Kazakhkkcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
科米语Komikvcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
孔卡尼语Konkanigomdevanagari_PP-OCRv5_mobile_rec不适用否天城文
韩语Koreankoreankorean_PP-OCRv5_mobile_rec不适用否韩文(谚文)
库尔德语KurdishkuPP-OCRv6_medium_rec是是拉丁字母
吉尔吉斯语Kyrgyzkycyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
拉克语Laklbecyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
拉丁语LatinlaPP-OCRv6_medium_rec是是拉丁字母
拉脱维亚语LatvianlvPP-OCRv6_medium_rec是是拉丁字母
列兹金语Lezghianlezcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
立陶宛语LithuanianltPP-OCRv6_medium_rec是是拉丁字母
卢森堡语LuxembourgishlbPP-OCRv6_medium_rec是是拉丁字母
马其顿语Macedonianmkcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
摩揭陀语Magahimahdevanagari_PP-OCRv5_mobile_rec不适用否天城文
迈蒂利语Maithilimaidevanagari_PP-OCRv5_mobile_rec不适用否天城文
马来语MalaymsPP-OCRv6_medium_rec是是拉丁字母
马耳他语MaltesemtPP-OCRv6_medium_rec是是拉丁字母
毛利语MaorimiPP-OCRv6_medium_rec是是拉丁字母
马拉地语Marathimrdevanagari_PP-OCRv5_mobile_rec不适用否天城文
马里语Marimhrcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
摩尔多瓦语Moldovanmocyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
蒙古语Mongolianmncyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
尼泊尔语Nepalinedevanagari_PP-OCRv5_mobile_rec不适用否天城文
尼瓦尔语Newarinewdevanagari_PP-OCRv5_mobile_rec不适用否天城文
挪威语NorwegiannoPP-OCRv6_medium_rec是是拉丁字母
奥克语OccitanocPP-OCRv6_medium_rec是是拉丁字母
古英语Old Englishangdevanagari_PP-OCRv5_mobile_rec不适用否天城文
奥塞梯语Ossetianoscyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
巴利语Palipilatin_PP-OCRv5_mobile_rec不适用否拉丁字母
普什图语Pashtopsarabic_PP-OCRv5_mobile_rec不适用否阿拉伯字母
波斯语Persianfaarabic_PP-OCRv5_mobile_rec不适用否阿拉伯字母
波兰语PolishplPP-OCRv6_medium_rec是是拉丁字母
葡萄牙语PortugueseptPP-OCRv6_medium_rec是是拉丁字母
克丘亚语QuechuaquPP-OCRv6_medium_rec是是拉丁字母
罗马尼亚语RomanianroPP-OCRv6_medium_rec是是拉丁字母
罗曼什语RomanshrmPP-OCRv6_medium_rec是是拉丁字母
俄语Russianrueslav_PP-OCRv5_mobile_rec不适用否西里尔字母
萨德里语Sadrisckdevanagari_PP-OCRv5_mobile_rec不适用否天城文
萨哈语Sakhasahcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
梵语Sanskritsadevanagari_PP-OCRv5_mobile_rec不适用否天城文
塞尔维亚语(西里尔字母)Serbian (Cyrillic)rs_cyrilliccyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
塞尔维亚语(拉丁字母)Serbian (Latin)rs_latinPP-OCRv6_medium_rec是是拉丁字母
信德语Sindhisdarabic_PP-OCRv5_mobile_rec不适用否阿拉伯字母
斯洛伐克语SlovakskPP-OCRv6_medium_rec是是拉丁字母
斯洛文尼亚语SlovenianslPP-OCRv6_medium_rec是是拉丁字母
西班牙语SpanishesPP-OCRv6_medium_rec是是拉丁字母
斯瓦希里语SwahiliswPP-OCRv6_medium_rec是是拉丁字母
瑞典语SwedishsvPP-OCRv6_medium_rec是是拉丁字母
塔巴萨兰语Tabassarantabcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
他加禄语TagalogtlPP-OCRv6_medium_rec是是拉丁字母
塔吉克语Tajiktgcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
泰米尔语Tamiltata_PP-OCRv5_mobile_rec不适用否泰米尔文
鞑靼语Tatarttcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
泰卢固语Telugutete_PP-OCRv5_mobile_rec不适用否泰卢固文
泰语Thaithth_PP-OCRv5_mobile_rec不适用否泰文
土耳其语TurkishtrPP-OCRv6_medium_rec是是拉丁字母
图瓦语Tuviniantyvcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
乌德穆尔特语Udmurtudmcyrillic_PP-OCRv5_mobile_rec不适用否西里尔字母
乌克兰语Ukrainianukeslav_PP-OCRv5_mobile_rec不适用否西里尔字母
乌尔都语Urduurarabic_PP-OCRv5_mobile_rec不适用否阿拉伯字母
维吾尔语Uyghurugarabic_PP-OCRv5_mobile_rec不适用否阿拉伯字母
乌兹别克语UzbekuzPP-OCRv6_medium_rec是是拉丁字母
越南语VietnameseviPP-OCRv6_medium_rec是是拉丁字母
威尔士语WelshcyPP-OCRv6_medium_rec是是拉丁字母

常见问题#

PaddleOCR 支持多少种语言?

PaddleOCR 3.7.0 接受 112 个 lang 代码。默认的 PP-OCRv6 模型可识别 50 种语言(52 个代码,含别名 french 和 german);59 个代码使用 PP-OCRv5 多语言模型,还有一个 ka 使用 PP-OCRv3 模型。百度自己对 PP-OCRv5 多语言模型给出的数字是 106 或 109 种语言,取决于哪份文档。

中文、日语和韩语的 lang 代码是什么?

ch(简体中文)、chinese_cht(繁体中文)、japan 和 korean。ISO 代码 zh、ja 和 ko 会报 ValueError。

英法双语文档怎么识别?

只用一个代码,或者不传:PaddleOCR() 和 PaddleOCR(lang="fr") 加载的是同一个 PP-OCRv6 模型,能同时识别英语、法语和另外 48 种语言。lang="en+fr" 是无效的,会报 ValueError。

PaddleOCR 支持阿拉伯语吗?

支持。PaddleOCR(lang="ar") 加载 arabic_PP-OCRv5_mobile_rec,百度报告其准确率为 81.27%,并称它可识别阿拉伯语、波斯语、维吾尔语、乌尔都语、普什图语、库尔德语、信德语、俾路支语和英语。PaddleOCR.js 和我们的浏览器工具不支持它。

PaddleOCR 支持印地语吗?

支持,使用 lang="hi",它会加载 devanagari_PP-OCRv5_mobile_rec(在百度的天城文测试集上为 84.96%)。同一个模型还用于马拉地语、尼泊尔语、梵语以及另外九个天城文代码。

为什么会报“No models are available for lang”?

这个代码 PaddleOCR 不认识。常见原因有:用了 ISO 代码(zh、ja、ko),从官方 PP-OCRv5 列表中抄了代码实际不接受的代码(sr、rslatin、ab、av、ce、lki),或者在一个字符串里写了多个代码。用上方的查询工具找到正确的代码即可。

能针对某种语言使用 PP-OCRv6 small 或 tiny 吗?

可以,适用于 50 种 PP-OCRv6 语言(tiny 为 49 种——不含日语),但不能通过 lang 实现:要传 text_detection_model_name="PP-OCRv6_small_det" 和 text_recognition_model_name="PP-OCRv6_small_rec"。不需要指定语言,因为该模型能识别全部这些语言。

参考来源

  1. PaddleOCR 3.7.0 源码 paddleocr/_pipelines/ocr.py——PP-OCRv6 语言集合及对 Pali 的排除(第 58–62 行)、未知代码的 ValueError(113–119)、模型路由 _get_ocr_model_names(318–422)。与 PyPI 上的 3.7.0 wheel 逐字节一致。
  2. paddleocr/_utils/langs.py——LATIN_LANGS、ARABIC_LANGS、ESLAV_LANGS、CYRILLIC_LANGS、DEVANAGARI_LANGS(第 17–126 行)。
  3. 通用 OCR 产线文档 OCR.en.md——语言表(第 2765–2844 行,ka = Georgian 在第 2800 行)、各 ocr_version 支持的 lang(2856–2886)、ka_PP-OCRv3_mobile_rec 被描述为 Kannada(632)。中文版:OCR.md(行号以英文版为准)。
  4. PP-OCRv5 多语言文档 PP-OCRv5_multi_languages.en.md——“106 languages”(第 7 行)、各模型精度及测试集规模(154–179)、语言代码(含 ab、av、ce、lki,215–219)、各模型支持的语言(244–256)。中文版:PP-OCRv5_multi_languages.md。
  5. PP-OCRv6 算法文档 PP-OCRv6.en.md——50 种语言,tiny 为 49 种、不含日语(第 3 行),百度内部识别评测表(91–102)。中文版:PP-OCRv6.md。
  6. 文本识别模块文档 text_recognition.en.md——ka_PP-OCRv3_mobile_rec 被列为 Kannada(第 471–478 行),以及 PP-OCRv3 多语言模型。中文版:text_recognition.md。
  7. PaddleOCR.js 源码(paddleocr-js/packages/core/src/pipelines/ocr/shared.ts,第 68–167 行和 525–542 行)及 README,npm @paddleocr/paddleocr-js 0.4.2:github.com/PaddlePaddle/PaddleOCR/tree/main/paddleocr-js。
  8. paddleocr.dev 于 2026-10-27 用 paddleocr 3.7.0(Python 3.13,Linux)核实:PaddleOCR(lang=…) 对 ab、av、ce、lki、sr、rslatin、zh、ja、jp、ko、kr、kn 和 "fr+en" 均报 ValueError;每个代码对应的模型名取自 _get_ocr_model_names。
  9. paddleocr.dev 基准测试,2026-10-27:4 vCPU Intel Xeon @ 2.10 GHz,15 GB 内存,无 GPU,paddleocr 3.7.0;5 份测试文档中包括一份中英文通知和一份日文通知。方法与原始数据(英文)。
  10. PaddleOCR 更新日志:docs/update/update.en.md(3.1.0、3.2.0;中文版 update.md)和 README.md(3.3.0:多语言模型“covering recognition of 109 languages”;PaddleOCR-VL “supports 109 languages”)。
  11. paddleocr.dev,2026-10-28:PaddleOCR(lang="korean"),关闭文档预处理和文本行方向分类,在我们干净的小票图片上测试,同一台 4 vCPU 机器;预热一次后取 3 次运行的中位数;paddlepaddle 3.2.0 对比 onnxruntime 1.31.1,paddleocr 3.7.0。
更新于 2026年10月27日·我们如何核实