PaddleOCR训练自己的数据集(中英文)(全套)和C#部署(半套)

目录

一、环境安装

1.Anaconda安装        打开Anaconda官网去下载然后安装,这个在网上很多教程根据他们安装就行 2.cuda,cudnn安装  

二、下载训练源码:

如果打不开可以直接下载我的

 预训练模型

三、数据集制作

旧的数据集中加入新数据集

四、开始训练字符模型

如果你训练中断,继续训练方法  原训练指令后面加入 

 完整的指令

五、测试

六、训练rec识别模型()

七、运行

八、然后测试

然后用如下代码进行推理,cls的分类模型可以直接用官方的

效果如下

上述训练流程是英文的,中英文都可用步骤不变  唯一不同的就是用的模型和.yml配置文件不同

如果你训练结束后acc为0  或者 没有任何参数  但是有流程的话 那就是你配置出了问题可以看我另一篇博客


      PaddleOCR是一个基于飞桨开发的OCR(Optical Character Recognition,光学字符识别)系统。其技术体系包括文字检测、文字识别、文本方向检测和图像处理等模块。以下是其优点:

高精度:PaddleOCR采用深度学习算法进行训练,可以在不同场景下实现高精度的文字检测和文字识别。

多语种支持:PaddleOCR支持多种语言的文字识别,包括中文、英文、日语、韩语等。同时,它还支持多种不同文字类型的识别,如手写字、印刷体、表格等。

高效性:PaddleOCR的训练和推理过程都采用了高效的并行计算方法,可大幅提高处理速度。同时,其轻量化设计也使得PaddleOCR能够在移动设备上进行部署,适用于各种场景的应用。

易用性:PaddleOCR提供了丰富的API接口和文档说明,用户可以快速进行模型集成和部署,实现自定义的OCR功能。同时,其开源代码也为用户提供了更好的灵活性和可扩展性。

鲁棒性:PaddleOCR采用了多种数据增强技术和模型融合策略,能够有效地应对图像噪声、光照变化等干扰因素,并提高模型的鲁棒性和稳定性。

总之,PaddleOCR具有高精度、高效性、易用性和鲁棒性等优点,为用户提供了一个强大的OCR解决方案。

一、环境安装

1.Anaconda安装
        打开Anaconda官网去下载然后安装,这个在网上很多教程根据他们安装就行
 2.cuda,cudnn安装  

去这里找入口安装对应的cuda和cudnn版本  cuda各个版本的Pytorch下载网页版,模型转化工具,免费gpt链接_cuda国内镜像下载网站-优快云博客

和yolov5配置跑通基本流程一样

ppocr环境

pip install requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

二、下载训练源码:

GitHub - PaddlePaddle/PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)https://github.com/PaddlePaddle/PaddleOCR/tree/main

如果打不开可以直接下载我的

PaddleOCR-main(可训练可标注一体,内置推理脚本)(这个版本可正常训练,亲测可用)资源-优快云文库

 预训练模型

【免费】paddleocr预训练模型资源-优快云文库

如果打开了就下载

最好下载这个 其他版本可能报错

这个版本的没有标注的程序所以你还需要下载一个r2.6的把里面的PPOCRlabel复制到你下载的main版本的OCR。

验证环境是否跑通

        进入往下翻

PaddleOCR/doc/doc_ch/models_list.md at release/2.6 · PaddlePaddle/PaddleOCR · GitHubhttps://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.mdGitHub - PaddlePaddle/PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)https://github.com/PaddlePaddle/PaddleOCR/tree/main

下载压缩然后放到下方文件夹中

打开py终端输入指令

python tools/infer/predict_system.py  --image_dir="C:\Users\User\Desktop\test.jpg" --det_model_dir="./inference_model/en_PP-OCRv3_det_infer/" --rec_model_dir="./inference_model/en_PP-OCRv3_rec_infer"

效果大概就是这个样子 

环境没问题的话就可以开始制作自己的数据集训练了

三、数据集制作

如果你的环境没问题,那么进入PPOCRLabel中直接右键运行,

网上又说用这个   python PPOCRLabel.py --lang ch指令的,我用不了这个,报错,所以这个指令用不了的可以直接右键run   PPOCRLabel.py 文件即可

如果报错

就在 PPOCRLabel.py 文件头上加入

import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

  然后右键运行 PPOCRLabel.py

  打开后是这样的

 

导入图片,再点击自动保存

旁边改成你需要标注的字符  注意如果你是自动标注里面有中文那你需要设置一下否则就是如下结果。

点上面paddleocr   然后再点 Choose OCR model   或者直接快捷键 ctrl+M

 

然后就没问题了

注意自动标注后 需要检测一下 防止有问题  最后一定要保存

  这里是绿色勾勾 就是你保存成功了

标注后你的数据集文件夹中会生成这些文件

 全部打标完成之后,点击文件选择导出标记结果,再点击文件选择导出识别结果,完成后再文件夹多出四个文件fileState,Label,rec_gt, crop_img。

其中crop_img中的图片用来训练文字识别模型,

fileState记录图片的打标完成与否,

Label为训练文字检测模型的标签,

rec_gt为训练文字识别模型的标签。

注意如果你文件夹中没有上述的文件,如下这样

依次点击Export Label 

 Export Recognition

Result  Export Table Label

然后就有了

如果是文字文本识别标注那你可以直接点击左下角那里进行自动标注

然后数据集划分

python gen_ocr_train_val_test.py --trainValTestRatio 6:2:2 --datasetRootPath ../train_data/drivingData

如果无法划分  那就直接去代码里划分

修改这几处就行

在终端运行上述指令 文件路劲在PPOCRLabel文件中

运行后数据集就会被划分

生成的det   和rec文件打开后为如下

旧的数据集中加入新数据集

训练paddleocr数据集在原有的数据集中加入新标注的数据一起训练(建议收藏)-优快云博客

四、开始训练字符模型

下载训练模型 

当然也可以不需要,训练模型那里添 null 就行,这样的话你训练出来的模型只针对于你训练的数据集字体,所以需要大量的数据集,来训练。

GitHub - PaddlePaddle/PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices) - PaddlePaddle/PaddleOCRhttps://github.com/PaddlePaddle/PaddleOCR/tree/main

如果你打不开如上链接,那就这里下载里面有两种训练模型和推理模型

【免费】PP-OCR-V3-V4模型包含训练模型以及推理模型资源-优快云文库

最好三个都下载下来,也可以只下载检测和识别两个

下载好解压,放入

配置训练文件

打开后你需要手动修改数据集路径

这里有一个是多少代保存一次,你可以设置为一代保存一次 改为1即可

py终端运行如下指令就可以开始运行了

python tools/train.py -c configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_dml.yml

运行完毕了模型会保存在这里

如果你训练中断,继续训练方法  原训练指令后面加入 

-o Global.checkpoints=./output/rec_ppocr_v3_distillation/latest

 完整的指令

python tools/train.py -c configs/ch_rec_to_det/ch_PP_OCR_V3_rec.yml -o Global.checkpoints=./output/rec_ppocr_v3_distillation/latest

五、测试

python tools/infer_det.py -c configs/det/ch_ppocr_v2.0/ch_det_res18_db_v2.0.yml -o Global.pretrained_model=output/ch_db_driving/iter_epoch_400.pdparams Global.infer_img="C:\Users\User\Desktop\PaddleOCR-release-2.6\train_data\det\test\0201_1 (3).jpg"

六、训练rec识别模型()

和上面的检测det模型的训练方式一样

这里更改多少代 保存一次

七、运行

python tools/train.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml

八、然后测试

和上面的方法一样,只是把模型换成rec模型

python tools/infer_det.py -c configs/det/ch_ppocr_v2.0/ch_det_res18_db_v2.0.yml -o Global.pretrained_model=output/en_db_driving/iter_epoch_400.pdparams Global.infer_img="C:\Users\User\Desktop\PaddleOCR-release-2.6\train_data\det\test\0201_1 (3).jpg"

你可以用如下代码进行批量推理和模型测试

中间那个是分类模型 你可以在官网上直接下载

将训练的rec和det模型,转为 推理模型 inf 模型

det模型

python tools/export_model.py -c "./configs/endet_enrec_encls/en_PP_OCRV3_det_cml.yml" -o Global.pretrained_model="./output/det/ch_PP-OCR_v3_det3/latest.pdparams" Global.save_inference_dir="./models/inf_det/"

 rec模型

python tools/export_model.py -c "./configs/endet_enrec_encls/en_PP_OCRv3_rec.yml" -o Global.pretrained_model="./output/rec/v3_en_mobile_rec4/latest.pdparams" Global.save_inference_dir="./models/inf_rec/"

 转完后如下   det中可能是三个文件夹,可以将teacher中的三个模型文件拉出来,或者直接在下方代码中写路径

然后用如下代码进行推理,cls的分类模型可以直接用官方的

from paddleocr import PaddleOCR
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
from paddleocr import PaddleOCR, draw_ocr
import os
import skimage

font = cv2.FONT_HERSHEY_SIMPLEX

# 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。
ocr = PaddleOCR(use_angle_cls=True, lang="en", use_gpu=False,
                rec_model_dir='./models/en_PP-OCRv3_rec_infer/',
                cls_model_dir='./models/ch_ppocr_mobile_v2.0_cls_infer/',
                det_model_dir='./models/en_PP-OCRv3_det_infer/')  # need to run only once to download and load model into memory
def OCRsspt_en(img_path,out_path):

    for filename in os.listdir(img_path):
        img = os.path.join(img_path,filename)
        print(filename)
        # ims = np.ndarray(range(img))
        # img_flor=cv2.imread(ims,flags=1)

        # img_flor=Image.open(img)
        # img_flor = skimage.io.imread(img)
        result = ocr.ocr(img, cls=True)
        # 显示结果
        image = Image.open(img).convert('RGB')
        boxes = [line[0] for line in result[0]]
        txts = [line[1][0] for line in result[0]]
        scores = [line[1][1] for line in result[0]]
        im_show = draw_ocr(image, boxes, txts, scores, font_path='./simfang.ttf')
        im_show = Image.fromarray(im_show)
        output_path = os.path.join(out_path, f"{os.path.splitext(filename)[0]}s.bmp")

        im_show.save(output_path)
        print(txts)
    print("####################OK#####################")

img_path = "H:\\DL\\OCRrelse\\PaddleOCR-release-2.6\\train_DATA\\jpegs"
out_path = "H:\\DL\\OCRrelse\\PaddleOCR-release-2.6\\inference_results\\dete"
OCRsspt_en(img_path,out_path)

效果如下

上述训练流程是英文的,中英文都可用步骤不变  唯一不同的就是用的模型和.yml配置文件不同
如果你训练结束后acc为0  或者 没有任何参数  但是有流程的话 那就是你配置出了问题可以看我另一篇博客

PPOCR训练后acc为0解决方法_paddleocr训练rec模型 acc一直是0-优快云博客

九、C#部署(不完善)

官方部署包  https://github.com/sdcb/PaddleSharp

1.你需要下载ocr的包以及其他工具包

将你训练的两个模型导入进去,根据官方的部署包进行修改,读取模型

就像这样

然后就可以进行ocr识别了

需要其他操作,都可以自己加

<think>好的,我现在需要帮助用户了解如何训练PaddleOCR模型。用户已经提供了一些引用资料,我需要仔细分析这些资料并结合我的知识来构建一个清晰的回答。 首先,用户提供的引用1提到了PaddleOCR提供了训练脚本、评估脚本预测脚本,特别是以PP-OCRv4英文识别模型为例,启动训练的步骤。引用2详细说明了如何手动修改配置文件,比如ch_PP-OCRv3_rec_distillation.yml,并执行训练命令。引用3解释了检查点模型的结构,包括.pdopt、.pdparams.states文件。这些信息都是训练过程中的关键点。 接下来,我需要按照用户的要求,结构清晰地分步骤说明训练流程。可能需要包括环境准备、数据准备、配置文件修改、启动训练、恢复训练、模型评估导出等步骤。每个步骤需要具体说明操作,比如安装依赖、数据路径设置、配置文件参数调整、运行命令等。同时,要确保使用正确的中文表达,并符合LaTeX格式的要求,比如数学公式用$...$,独立公式用$$...$$,但根据用户的问题,可能数学公式较少,主要关注代码配置步骤。 另外,用户要求生成相关问题,我需要根据训练流程中的关键点提出相关问题,比如数据预处理、配置文件参数解释、恢复训练的方法、评估指标、多语言支持等。这些问题应该能帮助用户进一步深入理解训练过程。 需要注意的是,回答中引用的部分要自然地添加引用标识,例如在提到启动训练时引用[^1],修改配置文件时引用[^2],检查点模型时引用[^3]。同时,确保所有引用在回答末尾正确列出。 最后,检查回答是否符合系统级指令,特别是LaTeX语法是否正确,段落结构是否清晰,是否使用中文,以及是否生成相关问题。可能还需要验证提供的代码块是否正确,比如训练命令是否正确,路径是否准确。 总结来说,我需要将用户提供的引用信息整合到训练流程中,分步骤详细说明每个环节,确保引用正确,语言清晰,并生成相关问题以帮助用户进一步学习。</think>### PaddleOCR 训练教程及配置方法 以下是训练PaddleOCR模型的核心步骤及配置方法,基于PP-OCRv3/v4模型的训练流程进行说明: --- #### **一、环境准备** 1. 安装PaddlePaddle框架 ```bash pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html ``` 2. 克隆PaddleOCR仓库 ```bash git clone https://github.com/PaddlePaddle/PaddleOCR cd PaddleOCR ``` --- #### **二、数据准备** 1. 标准数据集格式要求 ``` |-train_data |- rec |- train.txt # 训练集标注文件 |- val.txt # 验证集标注文件 |- images # 图片文件夹 |- img1.jpg |- img2.png ``` 2. 标注文件示例(每行格式): `图像路径\t标签文本` 例如:`images/img1.jpg HelloWorld` --- #### **三、配置文件修改** 修改蒸馏训练配置文件`ch_PP-OCRv3_rec_distillation.yml`(路径:`configs/rec/PP-OCRv3/`),关键参数如下: ```yaml Global: pretrained_model: null # 预训练模型路径 save_model_dir: ./output/rec_ppocr_v3_distillation # 模型保存路径 character_dict_path: ppocr/utils/en_dict.txt # 字典文件路径 Train: dataset: name: SimpleDataSet data_dir: ./train_data/rec/ # 训练数据根目录 transforms: - DecodeImage: { img_mode: BGR, channel_first: false } - RecResizeImg: { image_shape: [3, 48, 320] } # 输入图像尺寸 Optimizer: name: Adam lr: name: Cosine learning_rate: 0.001 ``` --- #### **四、启动训练** 执行以下命令启动训练: ```bash python tools/train.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml \ -o Global.pretrained_model=pretrain_models/en_PP-OCRv3_rec_train/best_accuracy ``` *关键参数说明:* - `-c`: 指定配置文件路径 - `-o`: 覆盖配置文件中的参数 - `Global.pretrained_model`: 预训练模型路径(支持断点续训) --- #### **五、恢复训练** 当需要从检查点继续训练时[^3]: ```bash python tools/train.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml \ -o Global.checkpoints=./output/rec_ppocr_v3_distillation/latest ``` 检查点包含三个核心文件: - `.pdparams`: 网络权重参数 - `.pdopt`: 优化器状态 - `.states`: 训练状态信息 --- #### **六、模型评估与导出** 1. 评估命令: ```bash python tools/eval.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml \ -o Global.pretrained_model=./output/rec_ppocr_v3_distillation/best_accuracy ``` 2. 导出为推理模型: ```bash python tools/export_model.py -c configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml \ -o Global.pretrained_model=./output/rec_ppocr_v3_distillation/best_accuracy \ Global.save_inference_dir=./inference/rec_ppocrv3 ``` --- ### 关键概念说明 1. **蒸馏训练**:教师模型(高精度)指导学生模型(轻量级)的训练方式,兼顾精度与速度 2. **数据增强策略**:包括旋转、模糊、噪声注入等,提升模型鲁棒性 3. **评估指标**:主要使用准确率(Accuracy)编辑距离(Edit Distance) ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

该醒醒了~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值