PaddleOCR 多语言 OCR 全景指南:从印地语(天城文)到 80 语种模型的安装、推理与训练
【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100+ languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR
PaddleOCR 是一个面向多语言场景的实用 OCR 工具库,致力于把"图片/PDF 中的文字"高效地转化为结构化文本数据。本文以仓库印地语首页文档(docs/index/index.hi.md)为骨架,系统梳理 PaddleOCR 的快速体验、PP-OCR 系列模型、80 语种支持机制、自定义训练与推理部署全流程;读完你既能用一行命令跑通印地语等小语种识别,也能理解语言模型在源码层是如何组织与切换的。
PaddleOCR 项目定位:多语言、实用的 OCR 工具库
PaddleOCR 的目标是打造一套"丰富、领先且实用"的 OCR 工具库。除了通用中英文模型,它还提供了专门面向英文场景训练的模型,以及覆盖 80 种语言的小语种模型。英文模型优化了大小写字母、常见标点与空格字符的识别;小语种模型则覆盖拉丁语系、阿拉伯语系、中文繁体、韩语、日语、天城文语系等。
印地语首页文档给出的项目愿景(प्रस्तावना)可以概括为三点:多语言(बहुभाषी)、高精度(शानदार)与可落地(व्यावहारिक)——即不仅要把模型训练出来,还要帮助用户在生产环境中真正用起来。围绕这一目标,项目沉淀了完整的产线:数据标注与合成、模型训练、模型压缩(量化/剪枝/蒸馏)、推理与多端部署,以及基于 PP-OCR 与 PP-Structure 的文档智能分析能力。
从源码结构看,多语言能力并非简单"贴标签",而是贯穿了 CLI、管道(Pipeline)与底层语言分组三个层次:
- CLI 入口 paddleocr/_cli.py 将
PaddleOCR等管道与TextDetection、TextRecognition等模型注册为子命令,paddleocr命令行的所有参数都经由argparse统一解析; - 语言分组常量定义在 paddleocr/_utils/langs.py,其中
DEVANAGARI_LANGS明确收录了hi(印地语)、mr(马拉地语)、ne(尼泊尔语)等 13 种天城文字系语言,与印地语文档中--lang=hi的用法一一对应; - 各语言的字符集则落在 ppocr/utils/dict/ 目录下的字典文件中(如
devanagari_dict.txt、korean_dict.txt等),识别模型的输出类别空间即由这些字典决定。
快速体验:一条命令跑通印地语 OCR
印地语首页文档提供了最小化的快速体验路径,仅需两个安装步骤加一条命令:
# 1. 安装飞桨深度学习框架(GPU 用户请安装 paddlepaddle-gpu) pip3 install paddlepaddle # 2. 安装 PaddleOCR pip3 install paddleocr # 3. 直接对图片做"检测 + 识别"整图预测,--lang=hi 指定印地语 paddleocr --image_dir /your/test/image.jpg --lang=hi其中--lang参数是切换语种的开关。PaddleOCR 支持的语言缩写非常多,例如ch(中英文)、en(英文)、fr(法文)、german(德文)、japan(日文)、korean(韩文)、hi(印地语)等。
完整的语言缩写与语种对照表可查阅 多语言模型教程 中的"支持语种及缩写"章节,该章节以两列对照表的形式列出了全部 80 个语种,例如:
| 语种 | 缩写 | 语种 | 缩写 |
|---|---|---|---|
| 中文(Chinese & English) | ch | 保加利亚文(Bulgarian) | bg |
| 英文(English) | en | 乌克兰文(Ukranian) | uk |
| 法文(French) | fr | 白俄罗斯文(Belarusian) | be |
| 德文(German) | german | 泰卢固文(Telugu) | te |
| 日文(Japanese) | japan | 泰米尔文(Tamil) | ta |
| 韩文(Korean) | korean | 阿拉伯文(Arabic) | ar |
| 中文繁体(Chinese Traditional) | chinese_cht | 印地文(Hindi) | hi |
| 意大利文(Italian) | it | 尼泊尔文(Nepali) | ne |
| 西班牙文(Spanish) | es | 乌尔都文(Urdu) | ur |
| 葡萄牙文(Portuguese) | pt | 马来文(Malay) | ms |
| 俄罗斯文(Russian) | ru | 越南文(Vietnamese) | vi |
从源码看,paddleocr/_utils/langs.py 将这些语言进一步归类为LATIN_LANGS(拉丁语系,40+ 种)、ARABIC_LANGS(阿拉伯语系)、CYRILLIC_LANGS(西里尔语系)与DEVANAGARI_LANGS(天城文语系),OCR 管道据此选择对应的检测/识别模型与字典,这就是"改一个--lang参数即可切换语种"的底层实现机制。
PP-OCR 系列模型:从超轻量到高精度的多语言方案
印地语首页文档给出了一张 PP-OCR 系列模型清单,覆盖移动端与服务器端两类典型场景:
| 模型介绍 | 模型名称 | 推荐场景 | 检测模型 | 识别模型 |
|---|---|---|---|---|
| 印地语超轻量 PP-OCRv3 系统(9.9M) | devanagari_PP-OCRv3_xx | 移动端与服务器端 | 多语言 PP-OCRv3 检测推理模型 | devanagari PP-OCRv3 识别推理模型 |
| 英文超轻量 PP-OCRv3 模型(13.4M) | en_PP-OCRv3_xx | 移动端与服务器端 | 英文 PP-OCRv3 检测推理模型 | 英文 PP-OCRv3 移动端识别推理模型 |
| 中英文超轻量 PP-OCRv3 模型(16.2M) | ch_PP-OCRv3_xx | 移动端与服务器端 | PP-OCRv3 移动端检测推理模型 | PP-OCRv3 移动端识别推理模型 |
更完整的模型清单见 PP-OCR 系列模型列表。该文档对模型类型做了清晰划分,可帮助理解上述表格:
- 推理模型(
inference.pdmodel+inference.pdiparams):用于预测引擎直接推理,是命令行/whl 包默认拉取的格式; - 训练模型 / 预训练模型(
*.pdparams、*.pdopt、*.states):训练过程中保存的参数与优化器状态,用于指标评估与恢复训练; - nb 模型(
*.nb):经飞桨 Paddle-Lite 优化后的端侧模型,面向移动端 / IoT 场景。
多语言识别模型部分,PP-OCR 系列模型列表 为每个语种都配了独立字典与训练配置文件,例如:
| 模型名称 | 字典文件 | 模型简介 | 配置文件 |
|---|---|---|---|
| korean_PP-OCRv3_mobile_rec | ppocr/utils/dict/korean_dict.txt | 韩文识别 | configs/rec/PP-OCRv3/multi_language/ 下的对应 yml |
| japan_PP-OCRv3_mobile_rec | ppocr/utils/dict/japan_dict.txt | 日文识别 | 同上 |
| devanagari_PP-OCRv3_mobile_rec | ppocr/utils/dict/devanagari_dict.txt | 梵文/天城文识别(覆盖印地语) | 同上 |
| arabic_PP-OCRv3_mobile_rec | ppocr/utils/dict/arabic_dict.txt | 阿拉伯字母 | 同上 |
| cyrillic_PP-OCRv3_mobile_rec | ppocr/utils/dict/cyrillic_dict.txt | 斯拉夫字母 | 同上 |
多语言检测模型(ml_PP-OCRv3_det)与中文检测模型结构完全相同,仅训练数据不同,因此共用同一份配置文件;多语言识别模型则以"语种专属字典 + 专属训练配置"的形式逐语种提供。
命令行与 Python 双入口:整图预测、检测与识别拆分
印地语首页文档把"快速上手"定位为入口,实际使用时可以参考 快速开始 与 多语言模型教程,两者提供了完整的 CLI 与 Python 用法。
命令行模式
整图预测(检测 + 识别),结果是一个 list,每个 item 包含文本框、文字与识别置信度:
paddleocr --image_dir doc/imgs_en/254.jpg --lang=en输出示例:
[('PHO CAPITAL', 0.95723116), [[66.0, 50.0], [327.0, 44.0], [327.0, 76.0], [67.0, 82.0]]] [('107 State Street', 0.96311164), [[72.0, 90.0], [451.0, 84.0], [452.0, 116.0], [73.0, 121.0]]]仅做识别(跳过检测),--det false:
paddleocr --image_dir doc/imgs_words_en/word_308.png --det false --lang=en # 输出 (0.99879867, 'LITTLE')仅做检测(跳过识别),--rec false:
paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --rec false # 输出仅含文本框坐标的 list方向分类器可通过--use_angle_cls true开启,用于处理 180 度旋转文字;--use_gpu false可在纯 CPU 环境运行。PaddleOCR 还支持直接输入 PDF,并通过--page_num控制参与推理的页数(默认 0 表示全部页)。模型版本可用--ocr_version指定(如PP-OCRv4、PP-OCRv3)。
Python 脚本模式
from paddleocr import PaddleOCR, draw_ocr # 通过 lang 参数切换语种,首次执行会自动下载模型 ocr = PaddleOCR(lang="korean") img_path = 'doc/imgs/korean_1.jpg' result = ocr.ocr(img_path) # 整图预测(检测 + 识别) # result = ocr.ocr(img_path, det=False) # 仅识别 # result = ocr.ocr(img_path, rec=False) # 仅检测 # 可视化 from PIL import Image image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/korean.ttf') Image.fromarray(im_show).save('result.jpg')提示:仓库 doc/fonts/ 目录下提供了
korean.ttf、japan.ttc、arabic.ttf、hindi.ttf等多语言可视化字体,绘制结果时需要为对应语种指定正确的字体文件,否则会出现文字乱码。
PDF 场景下,快速开始 给出了配合PyMuPDF (fitz)逐页渲染并调用draw_ocr保存result_page_N.jpg的完整示例;超长图场景则可使用slice滑动窗口参数,将大图切块识别后再合并结果。
多语言识别效果:可视化验证
PP-OCRv3 多语言模型在日文、韩文等场景下的识别效果,见下图(更多效果图可参考 多语言模型教程 的可视化部分):
印地语首页文档的可视化章节(विज़ुअलाइज़ेशन)同样以 PP-OCRv3 多语言模型、英文模型、中文模型以及 PP-Structurev2(版面分析 + 表格识别、SER 语义实体识别、RE 关系抽取)为主题,展示效果可进一步在仓库 docs/version2.x/ppocr/visualization.md 中查看。
自定义训练:用自己的数据 finetune 多语言模型
当内置语种或通用模型无法满足业务精度时,PaddleOCR 支持使用自有数据做自定义训练或 finetune。多语言模型教程 以法语模型为例,说明了完整流程——先改配置文件,再启动训练。
修改识别训练配置(以 configs/rec/multi_language/rec_french_lite_train.yml 为模板):
Global: ... # 指向自定义字典,如法语字典 character_dict_path: ./ppocr/utils/dict/french_dict.txt ... # 是否识别空格 use_space_char: True Train: dataset: name: SimpleDataSet # 支持 SimpleDataSet 与 LMDBDataSet data_dir: ./train_data/ # 数据集路径 label_file_list: ["./train_data/french_train.txt"] # 训练集标签文件 Eval: dataset: name: SimpleDataSet data_dir: ./train_data label_file_list: ["./train_data/french_val.txt"] # 验证集标签文件下载预训练模型并启动训练(单卡 / 多卡):
# 下载预训练模型并解压 wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/multilingual/french_mobile_v2.0_rec_train.tar tar -xf french_mobile_v2.0_rec_train.tar # 单卡训练,通过 -o 覆盖配置中的预训练模型路径 python3 tools/train.py -c configs/rec/rec_french_lite_train.yml \ -o Global.pretrained_model=french_mobile_v2.0_rec_train/best_accuracy # 多卡训练,通过 --gpus 指定卡号 python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py \ -c configs/rec/rec_french_lite_train.yml \ -o Global.pretrained_model=french_mobile_v2.0_rec_train/best_accuracy数据准备与训练细节可分别参考 文本识别训练 与 文本检测训练。印地语首页文档也给出了模型训练之外的两条进阶路径:模型压缩(量化 deploy/slim/quantization/README_en.md、剪枝 deploy/slim/prune/README_en.md、知识蒸馏 docs/version2.x/ppocr/model_compress/knowledge_distillation.md)以及多端部署(Python / C++ 推理、服务化部署、端侧部署、Paddle2ONNX 转换)。
新语言支持与社区机制
印地语首页文档专门开辟了"新语言请求"(नई भाषा अनुरोध)章节,明确了语言扩展的两种路径:
- 请求官方新增语种:如果希望官方升级某语言模型,可参与多语言模型升级投票,官方会定期根据投票结果迭代模型;
- 自行训练新语种模型:如果业务场景需要自定义语言,可按多语言模型训练教程准备数据集并逐步完成训练全流程。
仓库 docs/version2.x/ppocr/blog/multi_languages.md 对"新增语言需要哪些配套资源"给出了完整答案:每种语言对应一份字典文件(ppocr/utils/dict/)、一份训练配置(configs/rec/multi_language/)以及可选的专属字体文件(doc/fonts/),新增语言本质上是补齐这三类资源并完成训练与评测。
环境准备与更多教程导航
首次使用建议按以下顺序阅读仓库文档(以下路径均相对仓库根目录):
- 运行环境准备:环境准备
- PP-OCR 快速上手:快速开始(覆盖中英文、多语言、PDF 与滑动窗口)
- 模型训练:训练文档(检测 / 识别 / 方向分类三个子任务)
- 模型压缩:量化、剪枝、知识蒸馏(deploy/slim/ 目录)
- 推理与部署:deploy/README.md(Python、C++、服务化、移动端、Paddle2ONNX、PaddleCloud)
- PP-Structure 文档智能分析:ppstructure/README.md(版面分析、表格识别、关键信息提取)
- 学术算法概览:docs/version2.x/algorithm/overview.md
- 数据标注与合成:docs/data_anno_synth/data_annotation.md、docs/data_anno_synth/data_synthesis.md
- 公开数据集:docs/datasets/ 目录(通用 OCR、手写、版面、表格、KIE、多语种数据集)
- 常见问题:docs/FAQ.md
开源许可
PaddleOCR 采用 Apache 2.0 许可证发布,仓库根目录的 LICENSE 文件给出了完整的许可条款,允许自由使用、修改与再分发(需保留版权声明与许可文本)。
综上,PaddleOCR 的多语言能力并非停留在口号层面:从印地语首页文档的快速体验命令,到 paddleocr/_utils/langs.py 中的天城文语言分组,再到 ppocr/utils/dict/ 的逐语种字典与 configs/rec/multi_language/ 的训练配置,整个链条清晰可循。无论是用paddleocr --image_dir xxx.jpg --lang=hi快速验证,还是基于自己的数据集训练新语种模型,这条多语言 OCR 通路都能直接复用。
【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100+ languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考