PaddleOCR 垂类与多语言 OCR 数据集全指南:车牌、银行卡、验证码与 MLT 实战
垂类场景(车牌、银行卡、验证码)与多语言文字识别是 OCR 落地中最常见的定制化需求,而高质量数据集是训练和微调模型的基石。本文以 PaddleOCR 仓库整理的垂类与多语言 OCR 数据集清单为核心,逐一解析 CCPD 车牌数据集、银行卡数据集、Captcha 验证码合成工具与 MLT 多语言数据集的构成、标注形式与下载方式,并结合仓库中的多语言训练配置、语言字典与 FAQ 问答,说明如何把这些数据接入 PaddleOCR 的训练管线,帮助你快速搭建垂直领域识别模型。
为什么需要垂类与多语言数据集
通用 OCR 模型(如中英文 PP-OCR 系列)在规范文档、街景文字上表现良好,但在强领域约束的场景下往往力不从心:车牌字体和版式固定、银行卡面字段布局特定、验证码存在刻意干扰、多语言文字形态差异巨大。此时,使用垂类数据微调(finetune)或单独训练识别模型,是提升精度的标准做法。
从仓库源码结构看,PaddleOCR 对训练数据的接入是高度开放的:训练配置 通过 Train.dataset.name: SimpleDataSet 指定数据加载器,配合 data_dir 与 label_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-Challenge 子集适合作为评估集检验模型的鲁棒性;CCPD-Base 作为主训练集,其余子集按目标场景按需补充。
- 与 PaddleOCR 的对接:车牌识别属于短文本、定长字符识别任务。可以在 PP-OCRv4 识别配置 的基础上,将
character_dict_path指向车牌字符集字典(汉字省份简称 + 字母 + 数字),并适当下调max_text_length,即可完成从通用识别到车牌识别的迁移。
下载方式
- 百度云盘(提取码:hm0U)
- Google Drive 备份
银行信用卡数据集
该数据集来自和鲸社区(Heywhale),专门服务于银行卡面 OCR 场景。训练数据包含三类:
- 招行样卡数据:包含卡面图片及标注,共 618 张;
- 单字符数据:包含图片及标注,共 37 张;
- 其他银行卡面数据:仅有卡面图片、无更细粒度标注,共 50 张。
标注信息存储在 Excel 表格中。以 demo 图片为例,其标注包含四个关键字段:
- 前 8 位卡号:
62257583 - 卡片种类:本行卡
- 有效期结束:
07/41 - 卡用户拼音:
MICHAEL
使用建议
银行卡识别的价值在于结构化字段提取:卡号、有效期、持卡人姓名、卡片类型。这类需求适合"检测 + 识别 + 后处理规则"的组合方案——检测模型定位卡号区、有效期区等 ROI,识别模型逐区识别,最后用 Luhn 校验、有效期格式等规则做纠错。仓库中的 PP-Structure 文档结构化 与表格/版面分析能力可作为这类"卡面结构化"任务的参照实现。
下载方式
原文档提供 cmb2017-2.zip 压缩包直接下载。
验证码数据集(Captcha)
验证码与常规 OCR 数据的最大区别在于强对抗性:字符存在扭曲、粘连、噪声干扰线。该数据集源自 [lepture/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 中有几条高频问答值得关注:
- 多语言字典为何分语种维护:将多种语言统一到一个字典会导致最后一层 FC 过大、模型体积膨胀;若强行合并字典,形近字增多还可能引入精度损失,同时要兼顾字符平衡问题。因此 PaddleOCR 默认按语言分开维护字典;
- 多字节字符(如泰语)如何处理:部分字符会占用两个甚至三个字符位,处理时把多字符组合当作"一个字"即可,字典中每行对应一个字;
- 单图多语种并存:典型如试卷同时含印刷体与手写体,可采用"1 个检测模型 + 1 个 N 分类模型 + N 个识别模型"的组合方案,检测后先分类再送入对应语种的识别模型;
- 字典外的特殊字符:若希望模型识别默认字典之外的字符(如罗马数字),需在字典文件末尾追加新字符,并下载预训练模型结合新数据微调。
从数据集到训练管线的落地路径
综合上述数据集,接入 PaddleOCR 训练的通用流程为:
- 整理数据:按 docs/datasets/ocr_datasets.md 的标注格式,将图片与"图片路径 + 标签"的标注文件配对存放,默认数据目录为
train_data/; - 准备字典:根据目标语种或垂类字符集编写字典文件,每行一个字(符);
- 选择/生成配置:复用 configs/rec/multi_language/ 下的模板,或参考 PP-OCRv4 识别配置,修改
data_dir、label_file_list、character_dict_path与max_text_length; - 训练与微调:使用 tools/train.py 启动训练,可加载预训练模型进行迁移学习;
- 评估迭代:针对车牌、银行卡、验证码等垂类场景,用对应挑战性子集(如 CCPD-Challenge)做持续评估,配合 数据合成工具 与 数据标注工具 扩充样本,形成数据与模型的迭代闭环。
总结
垂类与多语言 OCR 的成功高度依赖"数据 + 管线"的组合。本文梳理的车牌(CCPD)、银行卡、验证码(Captcha)、多语言(MLT)四类数据集,覆盖了强领域约束、结构化字段、合成对抗样本与跨语种识别四种典型需求。结合 PaddleOCR 仓库中的多语言配置模板、语言字典分组、标签转换工具与 FAQ 实战经验,你可以将这些公开数据直接转化为可训练、可评估的模型资产,快速落地自己的垂类识别方案。
说明:本文数据集相关信息(子集划分、样本数量、标注字段)均来自 docs/datasets/vertical_and_multilingual_datasets.md 及其英文版 vertical_and_multilingual_datasets.en.md;模型能力、配置与 FAQ 结论均可在本文引用的仓库源码与文档中验证。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0631
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
video-shotcraftAI宣传片skill,使用 Remotion 制作电影级产品视频:提供106 张镜头配方卡和可复用的视频魔板。适用于 Claude Code 与 Codex以及所有其他智能体Markdown00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python09
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00


