PadleOCR训练自己的ocr模型之训练步骤

该文详细介绍了使用PaddleOCR2.6版本进行OCR系统训练的过程,包括前期准备(代码、标注工具),环境配置(CPU或GPU环境,库安装),数据集准备,模型训练(det和rec模型),转换成推理模型以及最终的测试步骤。提供了相关工具和配置文件修改的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、代码

2、标注工具

二、环境配置

CPU环境:

 库的安装:

三、数据准备

1、数据集准备

2、数据集结构

2.1 数据集文件结构

四、训练模型

1、训练模型获取

2、det模型训练

2.1 找到det模型对应的yml文件

2.2 修改配置文件的参数(我这里以det_mv3_db.yml为例,需要修改的参数都差不多)

2.2.1 第一部分

2.2.2 第二部分

2.2.3 第三部分

2.3 开始训练

3、rec模型训练

3.1 找到rec模型对应的yml文件

3.2 修改配置文件的参数(我这里以rec_chinese_lite_train_v2.0.yml为例,需要修改的参数都差不多)

3.2.1 第一部分

3.2.2 第二部分

3.2.3 第三部分

3.3 开始训练

五、转换成推理模型

 六、测试

七、问题记录

7.1 训练时卡在不动

7.2 训练时只有 latest文件,没有best文件

7.3 模型训练的样子

参考文献:


一、前期准备

1、代码

目前用的是2.6版本的

这个是我使用的版本

下面这个是官方的,可能已经更新了

paddleocr的源代码

2、标注工具

ocr标注工具(里面有安装教程)

或者直接安装

pip install PPOCRLabel  # 安装

# 选择标签模式来启动
PPOCRLabel --lang ch  # 启动【普通模式】,用于打【检测+识别】场景的标签
PPOCRLabel --lang ch --kie True  # 启动 【KIE 模式】,用于打【检测+识别+关键字提取】场景的标签
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

二、环境配置

CPU环境:

paddlepaddle-GPU或者CPU版本的安装教程

官网的安装教程

 库的安装:

在文件配置完后,训练时看缺什么库就安什么库

三、数据准备

1、数据集准备

可以参考我写的笔记

2、数据集结构

2.1 数据集文件结构

四、训练模型

1、训练模型获取

paddleocr之gitcode

github可能下载不了模型,只能用gitcode的

下载之后在PaddleOCR-release-2.6根目录下建立Preliminary_training文件夹,并将训练模型解压至该文件夹下。如下图所示:

2、det模型训练

2.1 找到det模型对应的yml文件

在项目的configs里面找到需要修改的yml文件

2.2 修改配置文件的参数(我这里以det_mv3_db.yml为例,需要修改的参数都差不多)
2.2.1 第一部分

2.2.2 第二部分

2.2.3 第三部分

2.3 开始训练

激活环境进入到PaddleOCR-releas-2.6根目录下。输入以下指令开始模型训练

python tools/train.py -c configs/det/"自己选的 det 的yml文件路径"
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

出现以下画面则代表成功

3、rec模型训练

3.1 找到rec模型对应的yml文件

3.2 修改配置文件的参数(我这里以rec_chinese_lite_train_v2.0.yml为例,需要修改的参数都差不多)
3.2.1 第一部分

3.2.2 第二部分

3.2.3 第三部分

3.3 开始训练

 激活环境进入到PaddleOCR-releas-2.6根目录下。输入以下指令开始模型训练

python tools/train.py -c configs/rec/"自己选的 rec 的yml文件路径"
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

出现以下画面则代表成功

  最后训练好可以在./output 下面查看训练后的模型

 

五、转换成推理模型

需要将生成的转换成为infer文件 命令如下: 

需要修改三个地方,改的时候去掉引号

#  将生成的模型转换成    infer 文件                                                                        最好的模型轮数                                  保存的目录地址
python tools/export_model.py -c configs/"det or rec 对应的yml地址" -o Global.checkpoints=./output/"需要转换的模型地址"/best_accuracy Global.save_inference_dir=./"模型保存地址"/
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

例如我的是

det 和 rec

python tools/export_model.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./output/label_ocr_11_7/det/best_accuracy Global.save_inference_dir=./inference_model/det/
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
python tools/export_model.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml -o Global.pretrained_model=./output/label_ocr_11_7/rec/best_accuracy Global.save_inference_dir=./inference_model/rec/
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

转换后的模型会保存在你创建的目录下

 六、测试

将det和rec模型替换成自己路径下的模型即可

这个代码是预测文件夹的示例

import os
from PIL import Image

def batch_ocr(input_dir, output_dir):
    from paddleocr import PaddleOCR, draw_ocr

    ocr = PaddleOCR(det_model_dir='inference_model/det',rec_model_dir='inference_model/rec', use_angle_cls=True, use_gpu=False)

    # 遍历输入文件夹下的所有图片文件
    for filename in os.listdir(input_dir):
        if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
            img_path = os.path.join(input_dir, filename)

            # 进行 OCR 识别
            result = ocr.ocr(img_path, cls=True)[0]

            # 获取识别结果的坐标、文本和置信度
            boxes = [line[0] for line in result]
            txts = [line[1][0] for line in result]
            scores = [line[1][1] for line in result]

            # 读取原始图片
            image = Image.open(img_path).convert('RGB')

            # 在原始图片上绘制识别结果
            im_show = draw_ocr(image, boxes, txts, scores, font_path='doc/fonts/simfang.ttf')
            im_show = Image.fromarray(im_show)

            # 保存绘制结果的图片
            output_path = os.path.join(output_dir, filename)
            im_show.save(output_path)


if __name__ == '__main__':
    # Ocr()
    input_dir = r'text_img/Eval_img'
    output_dir = r'text_img/result_img'

    batch_ocr(input_dir, output_dir)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

七、问题记录

7.1 训练时卡在不动

比如卡在:During the training process, after the 0th iteration, an evaluation is run every 200这个报错

解决方法:重新安装下面三个库,注意版本必须为2.6(因为我用的就是2.6版本的代码)

  

7.2 训练时只有 latest文件,没有best文件

解决方法: 可能是当前没有训练出best最好的模型,可以再等等,后面会出现(遇到过一次)

7.3 模型训练的样子

模型训练不一定每一轮都会显示详情,也可能是这样的

  

参考文献:

PaddlePaddle / PaddleOCR Public训练自己的数据集

PaddleOCR训练自己的数据集(已踩坑windows10)

PaddleOCR训练自己的数据

### PaddleOCR 的关键信息提取 (KIE) 功能 PaddleOCR 是一个基于 PaddlePaddle 构建的强大多语言 OCR 工具包,支持超过80种语言识别,并提供数据标注和合成工具[^2]。此工具不仅限于简单的文字识别,还集成了多种高级功能,其中包括关键信息提取(KIE)。特别是,在 README_ch.md 文件中提到,PaddleOCR 最新加入了若干先进算法,进一步增强了其处理能力[^3]。 对于 KIE 任务而言,PaddleOCR 集成了一项名为 Spatial Dual-Modality Graph Reasoning for Key Information Extraction(SDMG-R) 的技术。这项技术通过构建空间双模态图推理模型来提升从文档图像中抽取出结构化信息的效果[^1]。下面是一个简单示例展示如何利用 PaddleOCR 实现 KIE: #### 安装依赖库 首先安装必要的 Python 库: ```bash pip install paddlepaddle==2.4.0 pip install paddleocr ``` #### 加载并初始化模型 加载预训练好的 KIE 模型实例: ```python from paddleocr import PaddleOCR # 创建一个新的 OCR 对象,默认会下载最新的可用版本 ocr = PaddleOCR(use_angle_cls=True, lang='en', use_gpu=False) # 如果想要指定特定的检测/识别/KIE 模型路径,则可以通过如下方式设置参数 kie_ocr = PaddleOCR(det_model_dir='./inference/ch_ppocr_server_v2.0/det', rec_model_dir='./inference/ch_ppocr_server_v2.0/rec', kie_algorithm="SDMG", kie_model_dir="./inference/kie/sdmgr_novisual_lncd_st_real", use_angle_cls=True, lang='ch') ``` #### 执行关键信息提取操作 准备一张含有表格或表单样式的图片文件 `example_form.jpg` 并调用 API 进行分析: ```python result = ocr.ocr('example_form.jpg', cls=True) for line in result: print(line[-1][0]) # 输出每行的文字内容及其位置坐标 ``` 为了更深入理解所获得的结果以及更好地应用到实际项目当中,建议阅读官方 GitHub 页面提供的详细说明文档 和相关论文资料 来获取更多背景知识和技术细节。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值