本页目录
简短回答:要传 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 或 韩语 + 英语。
PaddleOCR 如何把 lang 变成模型#
在 PaddleOCR 3.7 中,lang 参数只做一件事:选出一个文本检测模型和一个文本识别模型。逻辑在 _get_ocr_model_names() 中,按以下顺序执行:1
不传
lang,也不传ocr_version#得到
PP-OCRv6_medium_det+PP-OCRv6_medium_rec,可识别 50 种语言。PP-OCRv6 支持的语言#
ch、chinese_cht、en、japan,以及除pi之外的所有拉丁字母代码(52 个代码,50 种语言——french和german是fr和de的别名)。它们加载的都是与默认情况相同的两个 medium 模型。其他受支持的文字#
韩语、泰语、希腊语、泰卢固语、泰米尔语,阿拉伯字母、东斯拉夫、西里尔字母和天城文语言组,以及巴利语(Pali),会得到
PP-OCRv5_server_det和对应文字的*_PP-OCRv5_mobile_rec(59 个代码)。ka#唯一仍由 PP-OCRv3 提供的代码:
PP-OCRv3_mobile_det+ka_PP-OCRv3_mobile_rec。其他任何值#
PaddleOCR()会报ValueError: No models are available for lang='…' and ocr_version=None.
按自动选择的识别模型统计可用的 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/_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并给出警告。参见如何选择档位。1lang加上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
| 你用的代码 | 应改用 | 错误代码的来源 |
|---|---|---|
sr | rs_cyrillic 或 rs_latin | 官方 PP-OCRv5 列表 |
rslatin | rs_latin | 官方 PP-OCRv5 列表 |
ab | abq | 官方 PP-OCRv5 文档(“Abkhaz”,阿布哈兹语);而代码接受的 abq 在 OCR 文档中叫 Abaza(阿巴扎语) |
av | ava(阿瓦尔语) | 官方 PP-OCRv5 文档 |
ce | che(车臣语) | 官方 PP-OCRv5 文档 |
lki | lbe(拉克语) | 官方 PP-OCRv5 文档 |
zh | ch 或 chinese_cht | ISO 639-1 习惯 |
ja、jp | japan | ISO / 国家代码习惯 |
ko、kr | korean | ISO / 国家代码习惯 |
kn | ka(见 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 也不支持。
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
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 识别日语就是例子。
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(阿巴扎语)——这是两种不同的语言。34ka在一张表里是格鲁吉亚语,在模型描述里却是卡纳达语(见上文)。- 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
| 语言 | 英文名 | lang= | 识别模型(3.7) | v6 tiny | 浏览器 | 文字 |
|---|---|---|---|---|---|---|
| 阿巴扎语 | Abaza | abq | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 阿迪格语 | Adyghe | ady | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 南非荷兰语 | Afrikaans | af | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 阿尔巴尼亚语 | Albanian | sq | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 阿拉伯语 | Arabic | ar | arabic_PP-OCRv5_mobile_rec | 不适用 | 否 | 阿拉伯字母 |
| 阿瓦尔语 | Avaric | ava | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 阿塞拜疆语 | Azerbaijani | az | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 俾路支语 | Balochi | bal | arabic_PP-OCRv5_mobile_rec | 不适用 | 否 | 阿拉伯字母 |
| 巴什基尔语 | Bashkir | ba | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 巴斯克语 | Basque | eu | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 白俄罗斯语 | Belarusian | be | eslav_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 博杰普尔语 | Bhojpuri | bho | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 比哈尔语 | Bihari | bh | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 波斯尼亚语 | Bosnian | bs | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 保加利亚语 | Bulgarian | bg | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 布里亚特语 | Buriat | bua | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 加泰罗尼亚语 | Catalan | ca | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 车臣语 | Chechen | che | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 简体中文 | Chinese (Simplified) | ch | PP-OCRv6_medium_rec | 是 | 是 | 汉字(简体) |
| 繁体中文 | Chinese (Traditional) | chinese_cht | PP-OCRv6_medium_rec | 是 | 是 | 汉字(繁体) |
| 楚瓦什语 | Chuvash | cv | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 克罗地亚语 | Croatian | hr | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 捷克语 | Czech | cs | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 丹麦语 | Danish | da | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 达尔金语 | Dargwa | dar | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 荷兰语 | Dutch | nl | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 英语 | English | en | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 爱沙尼亚语 | Estonian | et | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 芬兰语 | Finnish | fi | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 法语 | French | fr | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 法语 | French | french | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 加利西亚语 | Galician | gl | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 格鲁吉亚语 | Georgian | ka | ka_PP-OCRv3_mobile_rec | 不适用 | 否 | 卡纳达文或格鲁吉亚文(文档说法不一) |
| 德语 | German | de | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 德语 | German | german | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 希腊语 | Greek | el | el_PP-OCRv5_mobile_rec | 不适用 | 否 | 希腊字母 |
| 哈里亚纳语 | Haryanvi | bgc | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 印地语 | Hindi | hi | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 匈牙利语 | Hungarian | hu | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 冰岛语 | Icelandic | is | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 印度尼西亚语 | Indonesian | id | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 印古什语 | Ingush | inh | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 爱尔兰语 | Irish | ga | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 意大利语 | Italian | it | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 日语 | Japanese | japan | PP-OCRv6_medium_rec | 否 | 仅 small | 日文 |
| 卡巴尔达语 | Kabardian | kbd | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 卡尔梅克语 | Kalmyk | xal | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 卡拉卡尔帕克语 | Karakalpak | kaa | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 哈萨克语 | Kazakh | kk | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 科米语 | Komi | kv | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 孔卡尼语 | Konkani | gom | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 韩语 | Korean | korean | korean_PP-OCRv5_mobile_rec | 不适用 | 否 | 韩文(谚文) |
| 库尔德语 | Kurdish | ku | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 吉尔吉斯语 | Kyrgyz | ky | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 拉克语 | Lak | lbe | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 拉丁语 | Latin | la | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 拉脱维亚语 | Latvian | lv | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 列兹金语 | Lezghian | lez | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 立陶宛语 | Lithuanian | lt | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 卢森堡语 | Luxembourgish | lb | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 马其顿语 | Macedonian | mk | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 摩揭陀语 | Magahi | mah | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 迈蒂利语 | Maithili | mai | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 马来语 | Malay | ms | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 马耳他语 | Maltese | mt | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 毛利语 | Maori | mi | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 马拉地语 | Marathi | mr | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 马里语 | Mari | mhr | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 摩尔多瓦语 | Moldovan | mo | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 蒙古语 | Mongolian | mn | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 尼泊尔语 | Nepali | ne | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 尼瓦尔语 | Newari | new | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 挪威语 | Norwegian | no | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 奥克语 | Occitan | oc | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 古英语 | Old English | ang | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 奥塞梯语 | Ossetian | os | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 巴利语 | Pali | pi | latin_PP-OCRv5_mobile_rec | 不适用 | 否 | 拉丁字母 |
| 普什图语 | Pashto | ps | arabic_PP-OCRv5_mobile_rec | 不适用 | 否 | 阿拉伯字母 |
| 波斯语 | Persian | fa | arabic_PP-OCRv5_mobile_rec | 不适用 | 否 | 阿拉伯字母 |
| 波兰语 | Polish | pl | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 葡萄牙语 | Portuguese | pt | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 克丘亚语 | Quechua | qu | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 罗马尼亚语 | Romanian | ro | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 罗曼什语 | Romansh | rm | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 俄语 | Russian | ru | eslav_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 萨德里语 | Sadri | sck | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 萨哈语 | Sakha | sah | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 梵语 | Sanskrit | sa | devanagari_PP-OCRv5_mobile_rec | 不适用 | 否 | 天城文 |
| 塞尔维亚语(西里尔字母) | Serbian (Cyrillic) | rs_cyrillic | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 塞尔维亚语(拉丁字母) | Serbian (Latin) | rs_latin | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 信德语 | Sindhi | sd | arabic_PP-OCRv5_mobile_rec | 不适用 | 否 | 阿拉伯字母 |
| 斯洛伐克语 | Slovak | sk | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 斯洛文尼亚语 | Slovenian | sl | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 西班牙语 | Spanish | es | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 斯瓦希里语 | Swahili | sw | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 瑞典语 | Swedish | sv | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 塔巴萨兰语 | Tabassaran | tab | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 他加禄语 | Tagalog | tl | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 塔吉克语 | Tajik | tg | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 泰米尔语 | Tamil | ta | ta_PP-OCRv5_mobile_rec | 不适用 | 否 | 泰米尔文 |
| 鞑靼语 | Tatar | tt | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 泰卢固语 | Telugu | te | te_PP-OCRv5_mobile_rec | 不适用 | 否 | 泰卢固文 |
| 泰语 | Thai | th | th_PP-OCRv5_mobile_rec | 不适用 | 否 | 泰文 |
| 土耳其语 | Turkish | tr | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 图瓦语 | Tuvinian | tyv | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 乌德穆尔特语 | Udmurt | udm | cyrillic_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 乌克兰语 | Ukrainian | uk | eslav_PP-OCRv5_mobile_rec | 不适用 | 否 | 西里尔字母 |
| 乌尔都语 | Urdu | ur | arabic_PP-OCRv5_mobile_rec | 不适用 | 否 | 阿拉伯字母 |
| 维吾尔语 | Uyghur | ug | arabic_PP-OCRv5_mobile_rec | 不适用 | 否 | 阿拉伯字母 |
| 乌兹别克语 | Uzbek | uz | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 越南语 | Vietnamese | vi | PP-OCRv6_medium_rec | 是 | 是 | 拉丁字母 |
| 威尔士语 | Welsh | cy | PP-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"。不需要指定语言,因为该模型能识别全部这些语言。
参考来源
- 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 逐字节一致。 - paddleocr/_utils/langs.py——LATIN_LANGS、ARABIC_LANGS、ESLAV_LANGS、CYRILLIC_LANGS、DEVANAGARI_LANGS(第 17–126 行)。
- 通用 OCR 产线文档 OCR.en.md——语言表(第 2765–2844 行,
ka= Georgian 在第 2800 行)、各ocr_version支持的lang(2856–2886)、ka_PP-OCRv3_mobile_rec被描述为 Kannada(632)。中文版:OCR.md(行号以英文版为准)。 - 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。 - PP-OCRv6 算法文档 PP-OCRv6.en.md——50 种语言,tiny 为 49 种、不含日语(第 3 行),百度内部识别评测表(91–102)。中文版:PP-OCRv6.md。
- 文本识别模块文档 text_recognition.en.md——
ka_PP-OCRv3_mobile_rec被列为 Kannada(第 471–478 行),以及 PP-OCRv3 多语言模型。中文版:text_recognition.md。 - PaddleOCR.js 源码(
paddleocr-js/packages/core/src/pipelines/ocr/shared.ts,第 68–167 行和 525–542 行)及 README,npm@paddleocr/paddleocr-js0.4.2:github.com/PaddlePaddle/PaddleOCR/tree/main/paddleocr-js。 - 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。 - paddleocr.dev 基准测试,2026-10-27:4 vCPU Intel Xeon @ 2.10 GHz,15 GB 内存,无 GPU,paddleocr 3.7.0;5 份测试文档中包括一份中英文通知和一份日文通知。方法与原始数据(英文)。
- 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”)。
- paddleocr.dev,2026-10-28:
PaddleOCR(lang="korean"),关闭文档预处理和文本行方向分类,在我们干净的小票图片上测试,同一台 4 vCPU 机器;预热一次后取 3 次运行的中位数;paddlepaddle 3.2.0 对比 onnxruntime 1.31.1,paddleocr 3.7.0。