首页
/ PaddleOCR 垂类与多语言 OCR 数据集全指南:车牌、银行卡、验证码与 MLT 实战

PaddleOCR 垂类与多语言 OCR 数据集全指南:车牌、银行卡、验证码与 MLT 实战

2026-09-09 18:27:05作者:龚格成

垂类场景(车牌、银行卡、验证码)与多语言文字识别是 OCR 落地中最常见的定制化需求,而高质量数据集是训练和微调模型的基石。本文以 PaddleOCR 仓库整理的垂类与多语言 OCR 数据集清单为核心,逐一解析 CCPD 车牌数据集、银行卡数据集、Captcha 验证码合成工具与 MLT 多语言数据集的构成、标注形式与下载方式,并结合仓库中的多语言训练配置、语言字典与 FAQ 问答,说明如何把这些数据接入 PaddleOCR 的训练管线,帮助你快速搭建垂直领域识别模型。

CCPD 中国城市车牌数据集示例

为什么需要垂类与多语言数据集

通用 OCR 模型(如中英文 PP-OCR 系列)在规范文档、街景文字上表现良好,但在强领域约束的场景下往往力不从心:车牌字体和版式固定、银行卡面字段布局特定、验证码存在刻意干扰、多语言文字形态差异巨大。此时,使用垂类数据微调(finetune)或单独训练识别模型,是提升精度的标准做法。

从仓库源码结构看,PaddleOCR 对训练数据的接入是高度开放的:训练配置 通过 Train.dataset.name: SimpleDataSet 指定数据加载器,配合 data_dirlabel_file_list 指向图片目录和标注文件即可开始训练;ppocr/data/simple_dataset.py 则实现了图片读取与标签解析的完整链路。这意味着下面介绍的数据集,只要整理成"图片 + 标注文件"的形态,就能直接进入训练流程。

中国城市车牌数据集(CCPD)

CCPD(Chinese City Parking Dataset)是当前应用最广泛的中国城市车牌数据集,包含超过 25 万张车牌图片,同时提供车牌检测识别两个任务的标注信息。该数据集按场景难度划分了 9 个子集,覆盖了真实场景中几乎所有的拍摄干扰因素:

子集 场景特征
CCPD-Base 通用车牌图片,作为基础子集
CCPD-DB 车牌区域亮度偏亮、偏暗或明暗不均匀
CCPD-FN 车牌离摄像头拍摄位置相对更远或更近
CCPD-Rotate 水平旋转 20~50 度,竖直旋转 -10~10 度
CCPD-Tilt 水平旋转 15~45 度,竖直旋转 15~45 度
CCPD-Blur 摄像机镜头抖动导致的模糊
CCPD-Weather 雨天、雪天、雾天等天气条件拍摄
CCPD-Challenge 车牌检测识别任务中最具挑战性的图片集合
CCPD-NP 未安装车牌的新车图片

CCPD 数据集中不同场景下的车牌示例

使用建议

  • 训练与评估切分:CCPD-Challenge 子集适合作为评估集检验模型的鲁棒性;CCPD-Base 作为主训练集,其余子集按目标场景按需补充。
  • 与 PaddleOCR 的对接:车牌识别属于短文本、定长字符识别任务。可以在 PP-OCRv4 识别配置 的基础上,将 character_dict_path 指向车牌字符集字典(汉字省份简称 + 字母 + 数字),并适当下调 max_text_length,即可完成从通用识别到车牌识别的迁移。

下载方式

  • 百度云盘(提取码:hm0U)
  • Google Drive 备份

银行信用卡数据集

该数据集来自和鲸社区(Heywhale),专门服务于银行卡面 OCR 场景。训练数据包含三类:

  1. 招行样卡数据:包含卡面图片及标注,共 618 张;
  2. 单字符数据:包含图片及标注,共 37 张;
  3. 其他银行卡面数据:仅有卡面图片、无更细粒度标注,共 50 张。

标注信息存储在 Excel 表格中。以 demo 图片为例,其标注包含四个关键字段:

  • 前 8 位卡号:62257583
  • 卡片种类:本行卡
  • 有效期结束:07/41
  • 卡用户拼音:MICHAEL

银行卡面 OCR 标注示例

使用建议

银行卡识别的价值在于结构化字段提取:卡号、有效期、持卡人姓名、卡片类型。这类需求适合"检测 + 识别 + 后处理规则"的组合方案——检测模型定位卡号区、有效期区等 ROI,识别模型逐区识别,最后用 Luhn 校验、有效期格式等规则做纠错。仓库中的 PP-Structure 文档结构化 与表格/版面分析能力可作为这类"卡面结构化"任务的参照实现。

下载方式

原文档提供 cmb2017-2.zip 压缩包直接下载。

验证码数据集(Captcha)

验证码与常规 OCR 数据的最大区别在于强对抗性:字符存在扭曲、粘连、噪声干扰线。该数据集源自 [lepture/captcha] 合成工具包,它可以根据输入文本批量生成验证码图片,属于数据合成方案,因此没有现成的下载地址。

Captcha 合成工具生成的验证码示例

使用建议

合成数据是解决垂类 OCR 数据稀缺的有效手段。PaddleOCR 仓库在 docs/data_anno_synth/data_synthesis.md 中系统整理了多种数据合成工具,并推荐结合 数据标注工具 对真实样本进行补充标注,形成"合成数据预训练 + 真实数据微调"的迭代闭环。

从训练角度看,验证码通常是定长、单行文本,恰好契合 CTC 识别管线 的轻量部署形态;训练时建议配合 RecAug 数据增广(见 多语言训练配置 中的 Train.dataset.transforms),进一步增强对噪声与扭曲的鲁棒性。

多语言场景文本数据集(MLT)

MLT(Multi-Lingual scene Text detection and recognition)是 ICDAR 系列比赛中的多语言场景文本基准,同时包含语种识别检测/识别任务:

  • 检测任务:训练集 10,000 张图片,覆盖 10 种语言,每种语言 1,000 张训练图片;测试集 10,000 张图片;
  • 识别任务:训练集包含 111,998 个样本;
  • 下载方式:训练集体量较大,需分两部分下载,且需在赛事官网注册后获取。

与 PaddleOCR 多语言能力的衔接

MLT 数据可直接用于训练或评估 PaddleOCR 的多语言模型。仓库在多语言支持上提供了完整的配套:

  • 语言分组与字典paddleocr/_utils/langs.py 中定义了 LATIN_LANGS(拉丁语系)、ARABIC_LANGS(阿拉伯语系)、CYRILLIC_LANGS(西里尔语系)、DEVANAGARI_LANGS(天城文语系)等语言分组常量,是识别管线的语言基础;
  • 多语言训练配置configs/rec/multi_language/ 目录下提供了 arabic、cyrillic、devanagari、french、german、hebrew、japan、korean、latin、samaritan、syriac 等 13 种语言的训练配置模板,并附带 generate_multi_language_configs.py 生成脚本,方便按语言一键产出配置文件;
  • 通用多语言模型:仓库文档说明可通过 PP-OCRv5_multi_languages 实现 37 种语言识别(见 docs/FAQ.md),v3 系列则覆盖约 80 种语言的识别模型(见 docs/version2.x/ppocr/overview.md);
  • 数据格式转换docs/datasets/ocr_datasets.md 中提供了多语言数据集的整理下载(图片与标注合并提供),并给出了用 gen_label.py 将官方标签转换为 PaddleOCR 训练格式的命令示例。

多语言训练与微调的常见问题

针对多语言场景,docs/FAQ.md 中有几条高频问答值得关注:

  1. 多语言字典为何分语种维护:将多种语言统一到一个字典会导致最后一层 FC 过大、模型体积膨胀;若强行合并字典,形近字增多还可能引入精度损失,同时要兼顾字符平衡问题。因此 PaddleOCR 默认按语言分开维护字典;
  2. 多字节字符(如泰语)如何处理:部分字符会占用两个甚至三个字符位,处理时把多字符组合当作"一个字"即可,字典中每行对应一个字;
  3. 单图多语种并存:典型如试卷同时含印刷体与手写体,可采用"1 个检测模型 + 1 个 N 分类模型 + N 个识别模型"的组合方案,检测后先分类再送入对应语种的识别模型;
  4. 字典外的特殊字符:若希望模型识别默认字典之外的字符(如罗马数字),需在字典文件末尾追加新字符,并下载预训练模型结合新数据微调。

从数据集到训练管线的落地路径

综合上述数据集,接入 PaddleOCR 训练的通用流程为:

  1. 整理数据:按 docs/datasets/ocr_datasets.md 的标注格式,将图片与"图片路径 + 标签"的标注文件配对存放,默认数据目录为 train_data/
  2. 准备字典:根据目标语种或垂类字符集编写字典文件,每行一个字(符);
  3. 选择/生成配置:复用 configs/rec/multi_language/ 下的模板,或参考 PP-OCRv4 识别配置,修改 data_dirlabel_file_listcharacter_dict_pathmax_text_length
  4. 训练与微调:使用 tools/train.py 启动训练,可加载预训练模型进行迁移学习;
  5. 评估迭代:针对车牌、银行卡、验证码等垂类场景,用对应挑战性子集(如 CCPD-Challenge)做持续评估,配合 数据合成工具数据标注工具 扩充样本,形成数据与模型的迭代闭环。

总结

垂类与多语言 OCR 的成功高度依赖"数据 + 管线"的组合。本文梳理的车牌(CCPD)、银行卡、验证码(Captcha)、多语言(MLT)四类数据集,覆盖了强领域约束、结构化字段、合成对抗样本与跨语种识别四种典型需求。结合 PaddleOCR 仓库中的多语言配置模板、语言字典分组、标签转换工具与 FAQ 实战经验,你可以将这些公开数据直接转化为可训练、可评估的模型资产,快速落地自己的垂类识别方案。

说明:本文数据集相关信息(子集划分、样本数量、标注字段)均来自 docs/datasets/vertical_and_multilingual_datasets.md 及其英文版 vertical_and_multilingual_datasets.en.md;模型能力、配置与 FAQ 结论均可在本文引用的仓库源码与文档中验证。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
docsdocs
暂无描述
Markdown
899
5.83 K
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.76 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
860
1.35 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
925
1.85 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.84 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
533
601
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.37 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
395
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.04 K
525