上面已经制作完数据集 ,现在开始进行模型训练。
数据集制作请参考:PaddleOCR系列------《文本检测、文本识别、表格结构》数据集制作_ppocrlabel-CSDN博客
官方文档:
下载PaddleOCR源码
https://github.com/PaddlePaddle/PaddleOCR.git
去github下载源码压缩包
安装参考: PaddleOCR系列------基础环境安装及快速使用-CSDN博客
官方链接: 安装 - PaddleOCR 文档
下载预训练模型
python
# 下载 PP-OCRv5_server_det 预训练模型
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/PP-OCRv5_server_det_pretrained.pdparams
# 下载 PP-OCRv5_server_rec 预训练模型
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/PP-OCRv5_server_rec_pretrained.pdparams
训练
源码结构:

配置文件:
接下来让我们看一下配置文件。
所有模型 配置文件路径是:
PaddleOCR-main/configs
我们现在要使用的配置文件是:
/mnt/svip/lmz/PyPro/PaddleOCR/test/PaddleOCR-main/configs/det/PP-OCRv5/PP-OCRv5_server_det.yml
/mnt/svip/lmz/PyPro/PaddleOCR/test/PaddleOCR-main/configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml
参数介绍:
PP-OCRv5_server_det.yml
一、Global(全局配置)
这部分是整个训练过程的全局控制参数,影响整体训练流程。
| 参数 | 含义 | 取值说明 |
|---|---|---|
model_name |
模型名称 | 指定使用 PP-OCRv5_server_det 静态模型进行推理,用于标识训练的模型版本 |
debug |
调试模式 | false 表示关闭调试(生产训练建议关闭),true 会输出更多调试信息 |
use_gpu |
是否使用 GPU | true 启用 GPU 训练(大幅提升速度),false 使用 CPU(仅测试 / 低配环境) |
epoch_num |
训练轮数 | 500 表示模型会完整遍历训练集 500 次(&epoch_num 是 YAML 锚点,方便其他地方复用该值) |
log_smooth_window |
日志平滑窗口 | 计算 20 个批次的平均日志指标(如 loss),让日志曲线更平滑 |
print_batch_step |
日志打印间隔 | 每训练 10 个批次,打印一次训练日志(loss、lr 等) |
save_model_dir |
模型保存目录 | 训练过程中生成的模型文件会保存到 ./output/PP-OCRv5_server_det |
save_epoch_step |
模型保存间隔 | 每训练 10 个 epoch,保存一次模型权重 |
eval_batch_step |
评估间隔 | [0, 1500] 表示:从第 0 个 epoch 开始,每训练 1500 个批次,对验证集评估一次 |
cal_metric_during_train |
训练中计算指标 | false 表示训练时不计算精度 / 召回率(提升训练速度),仅在 eval 阶段计算 |
checkpoints |
断点续训路径 | 空值表示从头训练,若填路径则从指定断点恢复训练 |
pretrained_model |
预训练模型路径 | 使用 PPHGNetV2_B4 预训练权重初始化模型(迁移学习,提升训练效果) |
save_inference_dir |
推理模型保存路径 | 空值表示训练时不导出推理模型,训练完成后可单独导出 |
use_visualdl |
可视化工具 | false 关闭 VisualDL(Paddle 可视化工具),true 可实时查看 loss / 指标曲线 |
infer_img |
测试推理图片 | 训练中若需快速测试模型效果,指定单张测试图片路径 |
save_res_path |
推理结果保存路径 | 测试推理的结果(如检测框坐标)保存到该文件 |
distributed |
分布式训练 | true 启用多卡分布式训练(需多 GPU 环境),false 单卡训练 |
二、Architecture(模型结构)
定义文本检测模型的网络结构,PP-OCRv5 基于 DB(Differentiable Binarization)算法。
| 参数 | 含义 | 取值说明 |
|---|---|---|
model_type |
模型类型 | det 表示检测模型(OCR 分为 det 检测、rec 识别) |
algorithm |
检测算法 | DB 是 PaddleOCR 主流的文本检测算法(可微分二值化) |
Transform |
数据变换层 | 空值表示不使用额外变换层 |
Backbone.name |
骨干网络 | PPHGNetV2_B4 是 PP-OCRv5 主推的骨干网络(轻量且精度高),det: True 适配检测任务 |
Neck.name |
颈部网络 | LKPAN 是 DB 算法的特征融合模块,out_channels: 256 输出特征通道数,intracl: true 启用 intra-class 注意力 |
Head.name |
检测头 | PFHeadLocal 是 PP-OCRv5 的检测头,k: 50 是 DiceLoss 的参数,mode: "large" 适配大尺寸文本 |
三、Loss(损失函数)
定义模型训练的损失计算方式,DB 算法的损失由多部分组成。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
损失函数名称 | DBLoss 是 DB 算法的专用损失(包含二值化损失 + 分割损失) |
balance_loss |
平衡损失权重 | true 自动平衡不同损失的权重,避免某类损失占主导 |
main_loss_type |
主损失类型 | DiceLoss 是分割任务常用损失(适合文本区域分割) |
alpha/beta |
损失权重系数 | 调整不同损失分支的权重(alpha=5 对应二值化损失,beta=10 对应分割损失) |
ohem_ratio |
难例挖掘比例 | 3 表示只计算 hardest 3:1 比例的负样本损失(提升模型对难例的学习能力) |
四、Optimizer(优化器)
定义模型参数的优化策略,控制模型如何更新权重。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
优化器类型 | Adam 是主流的自适应学习率优化器(比 SGD 收敛更快) |
beta1/beta2 |
Adam 超参数 | 动量相关参数,默认 0.9 和 0.999(无需修改) |
lr.name |
学习率策略 | Cosine 余弦退火学习率(先升后降,适合长周期训练) |
learning_rate |
初始学习率 | 0.001(8 卡分布式训练的推荐值,单卡需按比例降低,如 0.000125) |
warmup_epoch |
热身轮数 | 2 表示前 2 个 epoch 学习率从低到高线性上升(避免初始 lr 过高导致训练不稳定) |
regularizer.name |
正则化方式 | L2 正则化(权重衰减),防止模型过拟合 |
factor |
正则化系数 | 1e-6 是权重衰减系数(值越小,正则化约束越弱) |
五、PostProcess(后处理)
模型输出预测结果后,将特征图转换为文本检测框的过程。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
后处理方法 | DBPostProcess 是 DB 算法的专用后处理 |
thresh |
二值化阈值 | 0.3 表示将预测概率图大于 0.3 的区域视为文本区域 |
box_thresh |
检测框置信度阈值 | 0.6 过滤掉置信度低于 0.6 的检测框(减少误检) |
max_candidates |
最大候选框数 | 1000 限制单张图最多生成 1000 个候选框(防止内存溢出) |
unclip_ratio |
框膨胀系数 | 1.5 将检测框向外膨胀 1.5 倍(弥补文本区域收缩,避免框住不全) |
六、Metric(评估指标)
定义验证集的评估标准,衡量模型性能。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
评估方法 | DetMetric 是文本检测的标准评估方法 |
main_indicator |
核心评估指标 | hmean 是 Precision(精确率)和 Recall(召回率)的调和平均(F1-score),是检测任务的核心指标 |
七、Train(训练集配置)
定义训练集的数据加载、数据增强等流程。
7.1 dataset(数据集配置)
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
数据集类型 | SimpleDataSet 是 PaddleOCR 通用的数据集加载类 |
data_dir |
图片根目录 | 训练图片的存放路径 |
label_file_list |
标签文件路径 | 训练集标签文件(每行格式:图片名\t文本框坐标\t是否忽略) |
ratio_list |
数据采样比例 | [1.0] 表示使用 100% 的训练数据 |
transforms |
数据增强 / 预处理流程 | 按顺序执行以下操作:- DecodeImage:解码图片(BGR 模式,通道在后)- DetLabelEncode:编码检测标签(转换为模型可识别格式)- CopyPaste:文本复制粘贴增强(空值表示关闭)- IaaAugment:基于 imgaug 的数据增强(随机水平翻转、旋转 ±10°、缩放 0.5-3 倍)- EastRandomCropData:随机裁剪图片到 640×640(最多尝试 50 次,保持宽高比)- MakeBorderMap:生成边界概率图(用于计算边界损失)- MakeShrinkMap:生成文本区域收缩图(核心分割标签)- NormalizeImage:归一化(减均值、除标准差,符合预训练模型输入要求)- ToCHWImage:将图片格式从 HWC 转为 CHW(Paddle 要求的输入格式)- KeepKeys:保留模型训练所需的关键字段(图片、各类标签) |
7.2 loader(数据加载器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
shuffle |
打乱数据 | true 每 epoch 打乱训练集顺序(避免模型过拟合) |
drop_last |
丢弃最后不完整批次 | false 保留最后一个不足 batch_size 的批次(true 会丢弃,适合严格对齐批次的场景) |
batch_size_per_card |
单卡批次大小 | 8 表示每张 GPU 每次加载 8 张图片(批次越大,训练越稳定,但显存占用越高) |
num_workers |
数据加载线程数 | 8 启用 8 个线程加载数据(加速数据读取,避免 GPU 等待 CPU) |
八、Eval(验证集配置)
定义验证集的数据加载流程(无数据增强,仅基础预处理)。
8.1 dataset(数据集配置)
| 参数 | 含义 | 取值说明 |
|---|---|---|
transforms |
预处理流程 | 与训练集的区别:- 无数据增强(IaaAugment/Crop 等)- DetResizeForTest:测试时统一缩放图片(保持比例)- 保留 polys(真实框坐标)、ignore_tags(是否忽略)用于计算指标 |
8.2 loader(数据加载器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
shuffle |
打乱数据 | false 验证集无需打乱(按顺序评估即可) |
batch_size_per_card |
单卡批次大小 | 1 验证集批次大小为 1(确保评估精度,避免批次维度干扰) |
num_workers |
数据加载线程数 | 2 验证集数据量小,线程数可减少 |
九、其他参数
| 参数 | 含义 | |
|---|---|---|
profiler_options |
性能分析选项 | 空值表示关闭性能分析(调试时可开启,分析训练瓶颈) |
PP-OCRv5_server_rec.yml
一、Global(全局配置)
控制文本识别模型训练的整体流程和基础参数,是整个训练的 "总开关"。
| 参数 | 含义 | 取值说明 |
|---|---|---|
model_name |
模型名称 | 指定 PP-OCRv5_server_rec 静态识别模型,标识训练的模型版本 |
debug |
调试模式 | false 关闭调试(生产训练建议),true 输出更多调试日志 |
use_gpu |
GPU 启用开关 | true 用 GPU 训练(识别模型对 GPU 依赖高,CPU 训练极慢) |
epoch_num |
训练总轮数 | 75 表示模型遍历训练集 75 次(识别模型训练轮数远少于检测,因收敛更快) |
log_smooth_window |
日志平滑窗口 | 计算 20 个批次的平均指标(如 loss),让日志曲线更平稳 |
print_batch_step |
日志打印间隔 | 每训练 10 个批次打印一次 loss、lr、准确率等日志 |
save_model_dir |
模型保存目录 | 训练权重保存到 ./output/PP-OCRv5_server_rec |
save_epoch_step |
模型保存间隔 | 每训练 1 个 epoch 保存一次模型(识别模型迭代快,频繁保存便于选最优模型) |
eval_batch_step |
评估间隔 | [0, 2000]:从第 0 个 epoch 开始,每 2000 个批次评估一次验证集 |
cal_metric_during_train |
训练中计算指标 | true 训练时同步计算识别准确率(方便实时监控效果,检测模型常关闭以提速) |
calc_epoch_interval |
按 epoch 评估间隔 | 1 每 1 个 epoch 强制评估一次(补充批次级评估) |
pretrained_model |
预训练模型路径 | 空值表示从头训练,填路径则加载预训练权重(推荐使用,提升收敛速度) |
checkpoints |
断点续训路径 | 空值表示从头训练,填路径则从指定断点恢复训练 |
save_inference_dir |
推理模型保存路径 | 空值表示训练时不导出,训练完成后可单独导出为推理模型 |
use_visualdl |
可视化工具 | false 关闭 VisualDL,true 可可视化 loss / 准确率曲线 |
infer_img |
测试推理图片 | 训练中快速测试模型识别效果的单张图片路径 |
character_dict_path |
字符字典路径 | ./ppocr/utils/dict/ppocrv5_dict.txt 是识别字符的字典文件(包含数字、字母、中文等) |
max_text_length |
最大文本长度 | 25(YAML 锚点 &max_text_length 供其他模块复用),限制识别文本的最大字符数,超过则截断 |
infer_mode |
推理模式 | false 表示训练模式,true 为纯推理模式(关闭训练相关逻辑) |
use_space_char |
是否识别空格 | true 支持识别文本中的空格(如 "AB CD"),false 则忽略空格 |
distributed |
分布式训练 | true 启用多卡分布式训练(多 GPU 环境必备) |
save_res_path |
推理结果保存路径 | 测试推理的识别结果(如 "图片名 \t 识别文本")保存到该文件 |
d2s_train_image_shape |
训练图片尺寸 | [3, 48, 320] 表示通道数 3、高度 48、宽度 320(识别模型固定输入尺寸) |
二、Optimizer(优化器)
控制模型参数的更新策略,是模型收敛的核心配置。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
优化器类型 | Adam 自适应学习率优化器(识别模型首选,收敛快、稳定性高) |
beta1/beta2 |
Adam 超参数 | 动量相关参数,0.9/0.999 是业界通用值(无需修改) |
lr.name |
学习率策略 | Cosine 余弦退火学习率(先热身上升,后余弦下降,适合识别模型短周期训练) |
learning_rate |
初始学习率 | 0.0005(分布式训练推荐值,单卡需按 batch_size 比例降低,如 0.0000625) |
warmup_epoch |
热身轮数 | 1 前 1 个 epoch 学习率从低到高线性上升(避免初始 lr 过高导致训练震荡) |
regularizer.name |
正则化方式 | L2 权重衰减(防止模型过拟合) |
factor |
正则化系数 | 3.0e-05 权重衰减系数(值越小,正则化约束越弱,识别模型系数通常比检测小) |
三、Architecture(模型结构)
定义 PP-OCRv5 文本识别模型的网络结构,核心是 SVTR_HGNet 算法。
| 参数 | 含义 | 取值说明 |
|---|---|---|
model_type |
模型类型 | rec 表示识别模型(区别于检测 det) |
algorithm |
识别算法 | SVTR_HGNet 是 PP-OCRv5 主推的识别算法(基于 SVTR 结构 + PPHGNetV2 骨干) |
Transform |
数据变换层 | 空值表示不使用额外变换层 |
Backbone.name |
骨干网络 | PPHGNetV2_B4 轻量高性能骨干网络,text_rec: True 适配文本识别任务(调整网络输出适配序列建模) |
Head.name |
识别头 | MultiHead 多输出头(同时包含 CTCHead 和 NRTRHead,提升识别精度) |
Head.head_list[0].CTCHead |
CTC 识别头 | 工业界主流的识别头(无需对齐字符,鲁棒性强):- Neck.name: svtr:SVTR 特征提取模块- dims: 120:SVTR 维度- depth: 2:SVTR 层数- hidden_dims: 120:隐藏层维度- kernel_size: [1, 3]:卷积核尺寸- use_guide: True:启用引导注意力机制(提升长文本识别效果)- Head.fc_decay: 0.00001:全连接层权重衰减系数 |
Head.head_list[1].NRTRHead |
NRTR 识别头 | 辅助识别头(基于注意力机制,提升复杂文本识别精度):- nrtr_dim: 384:NRTR 维度- max_text_length: *max_text_length:复用全局配置的最大文本长度 |
四、Loss(损失函数)
定义模型训练的损失计算方式,多识别头对应多损失。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
损失函数名称 | MultiLoss 多损失函数(对应 MultiHead 多识别头) |
loss_config_list |
损失配置列表 | - CTCLoss:CTC 损失(对应 CTCHead,识别任务核心损失)- NRTRLoss:NRTR 损失(对应 NRTRHead,辅助损失)注:MultiLoss 会自动融合两种损失,提升模型泛化能力 |
五、PostProcess(后处理)
将模型输出的概率分布转换为最终识别文本的过程。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
后处理方法 | CTCLabelDecode 基于 CTC 算法的标签解码(将模型输出的序列概率转换为字符) |
六、Metric(评估指标)
定义验证集的评估标准,衡量识别模型的性能。
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
评估方法 | RecMetric 文本识别专用评估方法 |
main_indicator |
核心评估指标 | acc 识别准确率(正确识别的样本数 / 总样本数,识别任务的核心指标) |
七、Train(训练集配置)
定义训练集的数据加载、数据增强等流程(识别模型数据增强更轻量)。
7.1 dataset(数据集配置)
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
数据集类型 | MultiScaleDataSet 多尺度数据集加载类(支持不同尺寸图片输入) |
ds_width |
固定宽度 | false 不固定宽度(配合多尺度采样) |
data_dir |
图片根目录 | 训练图片存放路径 |
ext_op_transform_idx |
扩展增强索引 | 1 指定数据增强的执行位置(内部参数,无需修改) |
label_file_list |
标签文件路径 | 训练集标签文件(每行格式:图片名\t真实文本) |
transforms |
数据预处理 / 增强流程 | 按顺序执行:- DecodeImage:解码图片(BGR 模式,通道在后)- RecAug:识别专用数据增强(如随机模糊、亮度调整、透视变换等,提升鲁棒性)- MultiLabelEncode:多标签编码(同时生成 CTC 和 NRTR 所需标签,gtc_encode: NRTRLabelEncode 指定 NRTR 标签编码方式)- KeepKeys:保留训练所需字段(图片、CTC 标签、NRTR 标签、文本长度、有效比例) |
7.2 sampler(采样器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
采样器类型 | MultiScaleSampler 多尺度采样器(随机选择图片尺寸,提升模型对不同尺寸文本的适应性) |
scales |
采样尺寸列表 | [[320, 32], [320, 48], [320, 64]] 随机选择宽度 320、高度 32/48/64 的尺寸(模拟不同高度的文本) |
first_bs |
初始批次大小 | 128(YAML 锚点 &bs 供 loader 复用),多尺度采样的初始批次大小 |
fix_bs |
固定批次大小 | false 不固定批次大小(适配多尺度采样) |
divided_factor |
尺寸整除因子 | [8, 16] 宽度 / 高度需分别被 8/16 整除(保证模型下采样后尺寸为整数) |
is_training |
训练模式 | True 采样器适配训练场景(打乱、多尺度) |
7.3 loader(数据加载器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
shuffle |
打乱数据 | true 每 epoch 打乱训练集(避免模型过拟合) |
batch_size_per_card |
单卡批次大小 | 128(复用锚点 &bs),每张 GPU 每次加载 128 张图片(识别模型显存占用低,可设较大批次) |
drop_last |
丢弃最后批次 | true 丢弃最后一个不足 batch_size 的批次(保证批次完整性,提升训练稳定性) |
num_workers |
加载线程数 | 16 启用 16 个线程加载数据(识别数据量通常大,多线程加速读取) |
八、Eval(验证集配置)
定义验证集的数据加载流程(无数据增强,固定尺寸)。
8.1 dataset(数据集配置)
| 参数 | 含义 | 取值说明 |
|---|---|---|
name |
数据集类型 | SimpleDataSet 通用数据集加载类(验证集无需多尺度) |
data_dir |
图片根目录 | 验证集图片存放路径 |
label_file_list |
标签文件路径 | 验证集标签文件 |
transforms |
预处理流程 | 与训练集的区别:- 无 RecAug 数据增强(保证评估准确性)- RecResizeImg:固定调整图片尺寸为 [3, 48, 320](与训练最终尺寸一致)- 保留标签字段用于计算准确率 |
8.2 loader(数据加载器)
| 参数 | 含义 | 取值说明 |
|---|---|---|
shuffle |
打乱数据 | false 验证集无需打乱(按顺序评估即可) |
batch_size_per_card |
单卡批次大小 | 128 验证集批次大小与训练集一致(提升评估速度) |
drop_last |
丢弃最后批次 | false 保留最后批次(不遗漏验证样本) |
num_workers |
加载线程数 | 4 验证集数据量小,减少线程数(节省资源) |
模型训练:
文本检测--模型训练命令:
python
#单卡训练 (默认训练方式)
python3 tools/train.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml \
-o Global.pretrained_model=./PP-OCRv5_server_det_pretrained.pdparams \
Train.dataset.data_dir=./ocr_det_dataset_examples \
Train.dataset.label_file_list='[./ocr_det_dataset_examples/train.txt]' \
Eval.dataset.data_dir=./ocr_det_dataset_examples \
Eval.dataset.label_file_list='[./ocr_det_dataset_examples/val.txt]'
#多卡训练,通过--gpus参数指定卡号
python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py \
-c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml \
-o Global.pretrained_model=./PP-OCRv5_server_det_pretrained.pdparams \
Train.dataset.data_dir=./ocr_det_dataset_examples \
Train.dataset.label_file_list='[./ocr_det_dataset_examples/train.txt]' \
Eval.dataset.data_dir=./ocr_det_dataset_examples \
Eval.dataset.label_file_list='[./ocr_det_dataset_examples/val.txt]'
文本识别--模型训练命令:
python
#单卡训练 (默认训练方式)
python3 tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \
-o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams
#多卡训练,通过--gpus参数指定卡号
python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \
-o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams
模型训练脚本:
python
#!/bin/bash
# 脚本名称:model_train.sh
# 功能:执行PaddleOCR表格检测模型训练
# 依赖:已安装PaddleOCR环境和相关依赖包
# 训练命令(保持原始参数不变)
# Global.pretrained_model:预训练模型路径
# Train.dataset.data_dir:训练集路径
# Train.dataset.label_file_list:训练集标签路径
# Eval.dataset.data_dir:验证集路径
# Eval.dataset.label_file_list:验证集标签路径
# Global.save_model_dir:训练完模型保存路径
# PP-OCRv5_server_det
python3 tools/train.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml \
-o Global.pretrained_model=/xxx/PP-OCRv5_server_det_pretrained.pdparams \
Train.dataset.data_dir=/xxx/det/train \
Train.dataset.label_file_list='[/xxx/det/train.txt]' \
Eval.dataset.data_dir=/xxx/det/val \
Eval.dataset.label_file_list='[/xxx/det/val.txt]' \
Global.save_model_dir=/xxx/det/output
# PP-OCRv5_server_rec
python3 tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \
-o Global.pretrained_model=/xxx/PP-OCRv5_server_rec_pretrained.pdparams \
Train.dataset.data_dir=/xxx/rec/train \
Train.dataset.label_file_list='[/xxx/rec/train.txt]' \
Eval.dataset.data_dir=/xxx/rec/val \
Eval.dataset.label_file_list='[/xxx/rec/val.txt]' \
Global.save_model_dir=/xxx/rec/output
# 检查命令执行状态
if [ $? -eq 0 ]; then
echo "======================================"
echo "训练任务执行完成!"
echo "======================================"
else
echo "======================================"
echo "训练任务执行失败!请检查错误信息"
echo "======================================"
exit 1
fi
模型评估:
您可以评估已经训练好的权重,如,output/PP-OCRv5_server_det/best_accuracy.pdprams
文本检测--模型评估命令:
python
# 注意将pretrained_model的路径设置为本地路径。若使用自行训练保存的模型,请注意修改路径和文件名为{path/to/weights}/{model_name}。
# demo 测试集评估
python3 tools/eval.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml \
-o Global.pretrained_model=output/PP-OCRv5_server_det/best_accuracy.pdparams \
Eval.dataset.data_dir=./ocr_det_dataset_examples \
Eval.dataset.label_file_list='[./ocr_det_dataset_examples/val.txt]'
文本识别--模型评估命令:
python
#注意将pretrained_model的路径设置为本地路径。若使用自行训练保存的模型,请注意修改路径和文件名为{path/to/weights}/{model_name}。
#demo 测试集评估
python3 tools/eval.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \
Global.pretrained_model=output/xxx/xxx.pdparams
模型导出
文本检测--模型导出命令:
python
python3 tools/export_model.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml -o \
Global.pretrained_model=output/PP-OCRv5_server_det/best_accuracy.pdparams \
Global.save_inference_dir="./PP-OCRv5_server_det_infer/"
文本识别--模型导出命令:
python
python3 tools/export_model.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \
Global.pretrained_model=output/xxx/xxx.pdparams \
Global.save_inference_dir="./PP-OCRv5_server_rec_infer/"
模型导出脚本:
python
#!/bin/bash
# 脚本名称:model_export.sh
# 功能:执行PaddleOCR表格检测模型转换
# 依赖:已安装PaddleOCR环境和相关依赖包
# 训练命令(保持原始参数不变)
# Global.pretrained_model:训练完模型路径
# Global.save_inference_dir:静态图模型导出到的路径
#PP-OCRv5_server_det
python3 tools/export_model.py -c configs/det/PP-OCRv5/PP-OCRv5_server_det.yml -o \
Global.pretrained_model=/xxx/det/best_accuracy.pdparams \
Global.save_inference_dir="/xxx/output/det/export_model/"
#PP-OCRv5_server_rec
python3 tools/export_model.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \
Global.pretrained_model=/xxx/rec/best_accuracy.pdparams \
Global.save_inference_dir="/xxx/output/rec/export_model/"
# 检查命令执行状态
if [ $? -eq 0 ]; then
echo "======================================"
echo "导出任务执行完成!"
echo "======================================"
else
echo "======================================"
echo "导出任务执行失败!请检查错误信息"
echo "======================================"
exit 1
fi
导出模型后,静态图模型会存放于当前目录的./PP-OCRv5_server_rec_infer/中,在该目录下,您将看到如下文件:
./PP-OCRv5_server_rec_infer/
├── inference.json
├── inference.pdiparams
├── inference.yml