教程详解 | 用 PaddleOCR 进行集装箱箱号检测识别

YOLO+PaddleOCR实现车牌检测识别 本篇文章将会使用Keras-YOLOV3来训练自己的车牌检测的模型,结合PaddleOCR来识别车牌,最终使用OpenCV将其整体进行串联。 阅读详情
AI摘要

利用PaddleOCR训练集装箱箱号检测模型,显著提高港口作业效率。通过少量数据集实现箱号的准确检测与识别。

内容一览:基于 PaddleOCR 进行集装箱箱号检测,缩短记录集装箱箱号的时间,提高港口装卸效率。
关键词:PaddleOCR 文字识别 在线教程

国际航运咨询分析机构 Alphaliner 在今年 3 月公布的一组数据,2021 年集装箱吞吐量排名前 30 的榜单中,上海港以 4702.5 万标箱的「成绩单」雄踞鳌头。
较上一年同期,上海港集装箱吞吐量8.1%,与最近的竞争对手新加坡拉开了近 1000 万标准箱的差距

全球百大集装箱港口,更是在 2021 年共完成集装箱吞吐量 6.76 亿 TEU。如此大规模的集装箱数量,使得箱号识别的压力骤增, 传统的由人对集装箱号进行识别记录的方式成本高、效率低,运营条件落后。

随着经济和社会的发展,在港口经营中引入人工智能,已经成为传统港口在市场竞争中蜕变升维的关键。

本文将从环境准备到模型训练,演示如何借助 PaddleOCR,进行集装箱箱号检测识别。

直接查看代码教程:
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu

用少量数据实现箱号检测识别任务

集装箱号是指装运出口货物集装箱的箱号,填写托运单时必填此项。 标准箱号的构成采用ISO6346 (1995) 标准,由 11 位编码组成,以箱号 CBHU 123456 7 为例,它包括 3 个部分:

第一部分由 4 个英文字母组成, 前 3 个字母表示箱主、经营人,第 4 个字母表示集装箱类型。CBHU 表示箱主和经营人为中远集运的标准集装箱。

第二部分由 6 位数字组成, 表示箱体注册码,是集装箱箱体持有的唯一标识。

第三部分为校验码,由前面 4 个字母和 6 位数字经过校验规则运算得到,用于识别在校验时是否发生错误。

堆积在港口等待运输的集装箱
本教程基于PaddleOCR进行集装箱箱号检测识别任务, 使用少量数据分别训练检测、识别模型,最后将他们串联在一起实现集装箱箱号检测识别的任务

环境准备

  1. 在 OpenBayes 控制台启动一个「模型训练」的容器, 环境选择 PaddlePaddle 2.3,资源选择 RTX 3090 或其他 GPU 类型。

暂无平台账号的,请访问以下地址先行注册:
https://openbayes.com/console/signup

  1. 在 Jupyter 中打开一个 Terminal 窗口, 然后执行如下命令:
cd PaddleOCR-release-2.5 #进入PaddleOCR-release-2.5文件夹
pip install -r requirements.txt #安装PaddleOCR所需依赖
python setup.py install #安装PaddleOCR

数据集介绍

本教程使用集装箱箱号数据集 (ContainerNumber-OCR Dataset),该数据包含 3003 张分辨率为 1920×1080 的集装箱图像。

查看数据集详细信息,请访问:
https://openbayes.com/console/open-tutorials/datasets/BzuGVEOJv2T/3

  1. PaddleOCR 检测模型训练标注规则如下,中间用 “\t” 分隔:
" 图像文件名                    json.dumps编码的图像标注信息"
ch4_test_images/img_61.jpg    [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}]

其中 json.dumps 编码前的图像标注信息是包含多个字典的 list ,字典中的 points 表示文本框 4 个点的坐标 (x, y),从左上角的点开始顺时针排列。

transcription 表示当前文本框的文字,当其内容为“###”时,表示该文本框无效,在训练时会跳过。

  1. PaddleOCR 识别模型训练标注规则如下,中间用 “\t” 分隔:
" 图像文件名                 图像标注信息 "

train_data/rec/train/word_001.jpg   简单可依赖
train_data/rec/train/word_002.jpg   用科技让复杂的世界更简单

数据整理

3.1 检测模型所需数据准备

将数据集 3000 张图片按 2:1 划分成训练集和验证集,运行以下代码:

from tqdm import tqdm
finename = "all_label.txt"
f = open(finename)
lines = f.readlines() 
t = open('det_train_label.txt','w')
v = open('det_eval_label.txt','w')
count = 0
for line in tqdm(lines):
   if count < 2000:
       t.writelines(line)
       count += 1
   else:
       v.writelines(line)
f.close()
t.close()
v.close()

3.2 识别模型所需数据准备

根据检测部分的注释,裁剪数据集尽可能只包含文字部分图片作为识别的数据,运行以下代码:
在这里插入图片描述
完整代码详见:
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu

实验

由于数据比较少,为了模型更好和更快的收敛,这里选用 PaddleOCR 中的 PP-OCRv3 模型进行检测和识别。

PP-OCRv3 在 PP-OCRv2 的基础上,中文场景端到端 Hmean 指标相比于 PP-OCRv2 提升 5% , 英文数字模型端到端效果提升 11% 。

详细优化细节请参考 PP-OCRv3 技术报告。

4.1 检测模型

4.1.1 检测模型配置

PaddleOCR 提供了许多检测模型, 在路径 PaddleOCR-release-2.5/configs/det 下可找到模型及其配置文件。如我们选用模型 ch_PP-OCRv3_det_student.yml,配置文件路径为:PaddleOCR-release-2.5/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml

使用前需对其进行必要的设置,如训练参数、数据集路径等。将部分关键配置展示如下:

#关键训练参数
use_gpu: true #是否使用显卡
epoch_num: 1200 #训练epoch个数
save_model_dir: ./output/ch_PP-OCR_V3_det/ #模型保存路径
save_epoch_step: 200 #每训练200epoch,保存一次模型
eval_batch_step: [0, 100] #训练每迭代100次,进行一次验证
pretrained_model: ./PaddleOCR-release
2.5/pretrain_models/ch_PP-OCR_V3_det/best_accuracy.pdparams #预训练模型路径
#训练集路径设置
Train:
  dataset:
    name: SimpleDataSet
    data_dir: /input0/images #图片文件夹路径
    label_file_list:
      - ./det_train_label.txt #标签路径

4.1.2 模型微调

在 notebook 中运行如下命令对模型进行微调,其中 -c 传入的为配置好的模型文件路径:

leOCR-release-2.5/tools/train.py \
    -c PaddleOCR-release-2.5/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml

使用默认超参数,模型 ch_PP-OCRv3_det_student 在训练集上训练 385 个 epoch 后,模型在验证集上的 hmean 达到:96.96% ,此后再无明显增长:

[2022/10/11 06:36:09] ppocr INFO: best metric, hmean: 0.969551282051282, precision: 0.9577836411609498,
recall: 0.981611681990265, fps: 20.347745459258228, best_epoch: 385

4.2 识别模型

4.2.1 识别模型配置

PaddleOCR 提供了许多识别模型。在路径 PaddleOCR-release-2.5/configs/rec 下可找到模型及其配置文件。

如我们选用模型 ch_PP-OCRv3_rec_distillation,其配置文件路径在:
PaddleOCR-release-2.5/configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml

使用前需对其进行必要的设置,如训练参数、数据集路径等。 将部分关键配置展示如下:

#关键训练参数
use_gpu: true #是否使用显卡
epoch_num: 1200 #训练epoch个数
save_model_dir: ./output/rec_ppocr_v3_distillation #模型保存路径
save_epoch_step: 200 #每训练200epoch,保存一次模型
eval_batch_step: [0, 100] #训练每迭代100次,进行一次验证
pretrained_model: ./PaddleOCR-release-2.5/pretrain_models/PPOCRv3/best_accuracy.pdparams #预训练模型路径
#训练集路径设置
Train:
  dataset:
    name: SimpleDataSet
    data_dir: ./RecTrainData/ #图片文件夹路径
    label_file_list:
      - ./rec_train_label.txt #标签路径

4.2.2 模型微调

在 notebook 中运行如下命令对模型进行微调,其中 -c 传入的为配置好的模型文件路径:

%run PaddleOCR-release-2.5/tools/train.py \
    -c PaddleOCR-release-2.5/configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml

使用默认超参数,模型 ch_PP-OCRv3_rec_distillation 在训练集上训练 136 个 epoch 后,模型在验证集上的精度达到:96.11% ,此后再无明显增长:

[2022/10/11 20:04:28] ppocr INFO: best metric, acc: 0.9610600272522444, norm_edit_dis: 0.9927426548965615,
Teacher_acc: 0.9540291998159589, Teacher_norm_edit_dis: 0.9905629345025616, fps: 246.029195787707, best_epoch: 136

结果展示

5.1 检测模型推理

在 notebook 中运行如下命令使用微调过的模型检测测试图片中的文字,其中:

  • Global.infer_img 为图片路径或图片文件夹路径
  • Global.pretrained_model 为微调过的模型
  • Global.save_res_path 为推理结果保存路径
%run PaddleOCR-release-2.5/tools/infer_det.py \
    -c PaddleOCR-release-2.5/configs/det/ch_PP-OCRv3/ch_PP-OCRv3_det_student.yml \
    -o Global.infer_img="/input0/images" Global.pretrained_model="./output/ch_PP-OCR_V3_det/best_accuracy" Global.save_res_path="./output/det_infer_res/predicts.txt"

5.2 识别模型推理

在 notebook 中运行如下命令使用微调过的模型检测测试图片中的文字,其中:

  • Global.infer_img为图片路径或图片文件夹路径
  • Global.pretrained_model 为微调过的模型
  • Global.save_res_path 为推理结果保存路径
%run PaddleOCR-release-2.5/tools/infer_rec.py \
    -c PaddleOCR-release-2.5/configs/rec/PP-OCRv3/ch_PP-OCRv3_rec_distillation.yml \
    -o Global.infer_img="./RecEvalData/" Global.pretrained_model="./output/rec_ppocr_v3_distillation/best_accuracy" Global.save_res_path="./output/rec_infer_res/predicts.txt"

5.3 检测识别模型串联推理

5.3.1 模型转换

在串联推理前首先需要将训练保存的模型转换成推理模型,分别执行如下检测命令即可。 其中:

  • -c 传入要转换模型的配置文件路径
  • -o Global.pretrained_model 为要被转换的模型文件
  • Global.save_inference_dir 为转换得到推理模型的储存路径
    在这里插入图片描述

5.3.2 模型串联推理

转换完毕后,PaddleOCR 提供了检测和识别模型的串联工具,可以将训练好的任一检测模型和任一识别模型串联成两阶段的文本识别系统。

输入图像经过文本检测、检测框矫正、文本识别、得分过滤四个主要阶段输出文本位置和识别结果。

执行代码如下,其中:

  • image_dir 为单张图像或者图像集合的路径
  • det_model_dir 为检测 inference 模型的路径
  • rec_model_dir 为识别 inference 模型的路径

可视化识别结果默认保存到 ./inference_results 文件夹里面。

%run PaddleOCR-release-2.5/tools/infer/predict_system.py \
--image_dir="OCRTest" \
--det_model_dir="./output/det_inference/" \
--rec_model_dir="./output/rec_inference/Student/"

可视化结果示例
查看完整教程,请访问:
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu

关于 PaddleOCR 和 OpenBayes

PaddleOCR 是一种基于百度飞桨的 OCR 工具库,包含总模型仅 8.6M 的超轻量级中文 OCR,同时支持多种文本检测、文本识别的训练算法、服务部署和端侧部署。

更多详情请访问:
https://github.com/PaddlePaddle/PaddleOCR

了解 OpenBayes

OpenBayes 是国内领先的机器智能研究机构,提供算力容器、自动建模、自动调参等多项 AI 开发相关的基础服务。

同时 OpenBayes 还上线了数据集、教程、模型等众多主流公开资源, 供开发者快速学习并创建理想的机器学习模型。

现在访问 openbayes.com 并注册
即可享用
600 分钟/周的 RTX 3090
以及 300 分钟/周 的 CPU 免费计算时

注:每周赠送的资源将于每周一下午到账

查看并运行完整教程,访问以下链接:
https://openbayes.com/console/open-tutorials/containers/XJsxhLTnKNu

—— 完 ——

PaddleOCR 训练时遇到的问题 【代码】PaddleOCR 训练时遇到的问题。 阅读详情

相关推荐

PaddleOCR使用详解

文章目录PaddleOCR简介环境配置PaddleOCR2.0的配置环境Docker数据集文本检测使用自己的数据集文本识别使用自己的数据集字典自定义字典添加空格类别文本角度分类文本检测训练模型准备启动训练断点训练指标评估测试检测效果文本识别启动训练评估预测文本角度分类训练启动训练数据增强训练评估预测配置文件说明GlobalOptimizer ([ppocr/optimizer](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.0/ppocr/

c2861024198的博客 2万+

搞定系列 :paddleocr训练自己数据集windows版

paddleocr训练自己数据集windows版是一门专门适合初学者训练自己的paddleocr模型教程。通过本教程您可以收获:(1)学会在windows上安装自己的显卡驱动(2)学会在windows上安装cuda+cudnn(3)学会在windows上安装anaconda3(4)学会在windows安装PPOCRLabel以及使用PPOCRLabel标注自己的数据集(5)学会使用paddleocr训练文本检测模型(6)学会使用paddleocr训练文本识别模型(7)学会使用paddleocr导出自己的模型(8)学会使用paddleocr测试自己的模型

OCR识别——百度飞桨PaddleOCR测试及环境搭建详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录PaddleOCR 概述环境准备前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 PaddleOCR 概述 PaddleOCR 包含富文本检测、文本识别和端到端算法。结合现实场景和行业经验,PaddleOCR 选择 DB 和 CRNN 作为基本检测识别模型,经过一系列优化策略,提出了一系列模型,命名为 PP-OCR,用于工业应用。PP-OCR模型针对一般场景,形成不同语言的模型库。基于 PP-OCR 的能力,Pa.

weixin_44901043的博客 1万+

A.[OCR]基于PaddleOCR的多视角集装箱箱号检测识别,实现检测识别模型串联推理。

本教程所使用的集装箱箱号数据集,该数据包含3003张分辨率为1920×1080的集装箱图像" 图像文件名 json.dumps编码的图像标注信息"其中json.dumps编码前的图像标注信息是包含多个字典的list,字典中的 points 表示文本框的四个点的坐标(x, y),从左上角的点开始顺时针排列。transcription 表示当前文本框的文字,当其内容为“###”时,表示该文本框无效,在训练时会跳过。" 图像文件名 图像标注信息 "

丨汀、的博客 1378

PaddleOCR文字检测、标注与识别详细记录

如果用户想将内置模型更换为自己的推理模型,可根据自定义模型代码使用,通过修改PPOCRLabel.py中针对。

2401_89317704的博客 1729

YOLOv8实战:智慧码头集装箱箱号识别系统全流程解析

在计算机视觉领域,目标检测与OCR技术一直是工业自动化的核心支撑。面对智慧码头中集装箱箱号识别的实际需求,传统人工核对方式效率低、易出错,而基于深度学习的目标检测方法正在重塑这一场景。YOLOv8作为当前高效的目标检测模型,凭借其出色的精度与速度平衡,成为构建箱号识别系统的理想选择。本文从技术原理出发,剖析如何利用YOLOv8实现箱号区域的精准定位与字符识别,涵盖数据集构建、模型训练、后处理排序及部署避坑等关键环节。无论是本科毕设还是课程设计,这套方案都能帮助你快速搭建一个可演示、可迭代的完整系统,同时为工

weixin_34279184的博客 884

基于PaddleOCR的集装箱箱号检测识别

国际航运咨询分析机构 Alphaliner 在今年 3 月公布的一组数据,2021 年集装箱吞吐量排名前 30 的榜单中,上海港以 4702.5 万标箱的「成绩单」雄踞鳌头。较上一年同期,上海港集装箱吞吐量增长 8.1%与最近的竞争对手新加坡拉开了近 1000 万标准箱的差距全球百大集装箱港口,更是在 2021 年共完成集装箱吞吐量 6.76 亿 TEU。**如此大规模的集装箱数量,使得箱号识别的压力骤增,**传统的由人对集装箱号进行识别记录的方式成本高、效率低,运营条件落后。随着经济和社会的发展,在港口经

风信子的猫Redamancy的快乐星球 2680

集装箱箱号识别实战:基于YOLOv8的字符检测与部署避坑

目标检测作为计算机视觉的核心技术,在工业OCR和物流信息化中扮演重要角色。集装装箱号识别与普通车牌识别不同,字符附着于瓦楞曲面,受光照、遮挡和小尺寸影响,检测难度显著提升。基于YOLOv8的字符级检测方案,将箱号视为独立字符目标,配合坐标排序与ISO 6346校验规则,可高效完成从字符定位到完整箱号拼接的闭环。该方法在智慧码头闸口、轨道吊等场景具有强落地价值,也适合作为验证目标检测实际效果的课题。本文围绕数据准备、训练调参、后处理规则及RK3588边缘部署,系统梳理了从模型训练到工程交付的关键步骤,并总结常

weixin_34090562的博客 339

人工智能:基于PaddleOCR的多视角集装箱箱号检测识别

本教程所使用的集装箱箱号数据集,该数据包含3003张分辨率为1920×1080的集装箱图像" 图像文件名 json.dumps编码的图像标注信息"其中json.dumps编码前的图像标注信息是包含多个字典的list,字典中的 points 表示文本框的四个点的坐标(x, y),从左上角的点开始顺时针排列。transcription 表示当前文本框的文字,当其内容为“###”时,表示该文本框无效,在训练时会跳过。" 图像文件名 图像标注信息 "

丨汀、的博客 1954

container.zip实战:集装箱箱号识别从数据清洗到OCR校验

目标检测与OCR文本识别是计算机视觉在工业自动化中的高频应用,但面对集装箱箱号这类强规则、少样本场景,通用模型往往精度不足。理解ISO 6346箱号规则及其校验位算法,是数据治理和结果纠错的关键原理。以container.zip集装箱箱号标注数据集为例,从文件解析、格式统一到基于校验位的自动清洗,构建可训练的YOLO检测与PaddleOCR识别管线,并利用正则替换和后处理手段修正易混字符,最终在港口、堆场等场景实现高可靠识别。本文完整展示了从原始数据到部署验证的工程路径,帮助开发者快速落地集装箱箱号识别方案

weixin_32238157的博客 133

基于PaddleOCR的车牌检测识别

Python、PaddlePaddle、OCR、车牌检测、文本识别

FriendshipTang的博客 3426

用 PaddleOCR 进行集装箱箱号检测识别详细教程

基于 PaddleOCR 进行集装箱箱号检测,缩短记录集装箱箱号的时间,提高港口装卸效率。

weixin_44906759的博客 1453

集装箱箱号识别

本程序采用数学形态学对集装箱箱号进行定位,通过神经网络学习来对箱号进行识别,识别率达98%。

基于PaddleOCR的多视角集装箱箱号检测识别,实现模型串联推理

基于PaddleOCR的多视角集装箱箱号检测识别, 使用少量数据分别训练检测、识别模型,最后将检测识别模型串联推理实现集装箱箱号检测识别的任务。

m0_63642362的博客 975

人机交互期末复习笔记

人机交互期末复习笔记 进行复习的童鞋们可以跟着清华大学《人机交互基础教程第3版(孟祥旭、李学庆、杨承磊、王璐编著)的书籍参照借阅。上面的一字一句皆是敲键盘敲出来的,并且掌握课本的基本内容。 博客中的知识点有些地方会进行粗略的跳过(主要的大框架没有省略),建议有同样需求的读者结合书本与博客一同借阅。本博客有错误的地方多多指正,谢谢大家~ 文章目录人机交互期末复习笔记第一章 绪论 P11.1 人机交互的概念1.2 人机交互的研究内容1.3 人机交互的发展历史(只介绍人机交互阶段)第二章 感知和认知基础 P122

server643的博客 5024

VirtualBox虚拟机上ubuntu系统安装问题记:显示画面太小、启动就异常退出等

报错:Failed to load R0 module D:/VMMR0.r0: The path is not clean of leading double slashes: ‘D:/VMMR0.r0’ (VERR_SUPLIB_PATH_NOT_CLEAN).解决方法特别简单,就是安装VIrtualBox的时候不要安装在CDE等盘根目录下。首先VirtualBox的下载安装过程是比较简单的,此处就不赘述了。然后E盘下新建个目录,安装到这个目录下就可解决。

qq_42595610的博客 2826

PaddleOCR详解和识别图片中文字

目录一、介绍1、什么是OCR?2、 PaddleOCR 2.1 PP-OCR简介和特点 2.2 特点3、模型训练 3.1 文本检测 3.2 文本识别 3.1 文字方向分类 二、安装和使用1、安装2、python 识别图片文字光学字符识别(Optical Character Recognition, OCR),ORC是指对包含文本资料的图像文件进行分析识别处理,获取文字及版面信息的技术,检测图像中的文本资料,并且识别出文本的内容。那么有哪些应用场景呢?其实我们日常生活中处处都有ocr的影子,比

创作不易,请多支持,将为本站提供更多「有价值的文章」。 2万+

基于PlatformIO与CMSIS的STM32库函数开发实战:从环境搭建到外设驱动

本文详细介绍了基于PlatformIO与CMSIS的STM32库函数开发实战,从环境搭建到外设驱动实现。通过对比传统IDE,PlatformIO结合CMSIS框架在跨平台开发、代码可移植性和调试体验上更具优势。文章包含PlatformIO.ini配置详解、GPIO/USART驱动开发实例及常见问题解决方案,帮助开发者高效完成STM32项目开发。

weixin_29190169的博客 423

PaddleOCR—图片文字识别提取—快速使用教程

Paddle-OCR 属于Paddle 框架其中的一个应用,Paddle 除了 OCR 之外还有许多其它好玩的模型,关键开发者提供有训练好的预权重文件、降低了使用门槛。

weixin_45897172的博客 2万+

playwright-mcp 安装使用的详细教程

Playwright MCP 快速入门指南 Playwright MCP Server 是由微软开发的浏览器自动化服务,通过 MCP 协议为 AI/Agent/LLM 提供网页交互能力。它基于可访问性树而非屏幕截图,支持多种浏览器和运行模式。 安装要求: Node.js v18+ 命令行操作能力 支持 MCP 的客户端 安装方式: 通过 npx 快速启动:npx @playwright/mcp@latest 项目依赖安装:npm install @playwright/mcp 主要特性: 支持 Chrome

上善若水 7996

深入解析AutoConfigURL劫持:从注册表权限到一键修复

本文深入解析了AutoConfigURL劫持的原理,揭示其通过篡改注册表权限锁定浏览器设置的机制。文章提供了从手动修复注册表权限到使用一键修复工具的详细解决方案,并指导用户进行DNS检查与病毒查杀,以彻底根除此类顽固劫持问题。

weixin_29229989的博客 767

PaddleOCR模型训练及使用详细教程

PaddleOCR是基于PaddlePaddle深度学习框架的开源OCR工具,但它提供了推理模型/训练模型/预训练模型,用户可以直接使用推理模型进行识别,也可以对训练模型或预训练模型进行再训练。支持约80种语言的文本识别,并具有较高的准确性和速度。

Elaine的博客 2万+

metaRTC嵌入式webrtc编译指南

metaRTC编译支持qmake和cmake,qmake使用QT最为方便,新版本新增了cmake支持。 ...

metaRTC的博客 9518
上一篇: PyTorch 1.13 正式发布:CUDA 升级、集成多个库、M1 芯片支持
下一篇: TorchVision Transforms API 大升级,支持目标检测、实例/语义分割及视频类任务
HyperAI超神经
博客等级 码龄7年 8872粉丝 1753原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值