【无标题】

works:

  1. .dec/rec :parameters --> inference -->onnx
  2. deal srt contrast
  3. cls+ocr
  4. flask
    1+2 要求:图像输入 → 输出文本 + 文本框 + 文本比对
    检测 ONNX:输入图像 → 输出 文本框坐标
    识别 ONNX(端到端内嵌字典 + 解码):输入裁剪文本行图 → 直接输出字符串文本
    上层业务:拿到 框坐标 + 文本 → 执行文本比对

Start

1.1 从训练权重 → Paddle 推理模型 → ONNX 模型

bash 复制代码
python3 tools/export_model.py -c ./configs/det/PP-OCRv5/PP-OCRv5_mobile_det.yml -o Global.pretrained_model=./output/PP-OCRv5_mobile_det/first_train/best_accuracy.pdparams -o  Global.save_inference_dir=output/infer/PP-OCRv5_mobile_det_infer/first_det_0610
'''
(paddle) root@autodl-container-d8dlmpu3b9-2023ec6b:~/PaddleOCR-main# python3 tools/export_model.py -c ./configs/det/PP-OCRv5/PP-OCRv5_mobile_det.yml -o Global.pretrained_model=./output/PP-OCRv5_mobile_det/first_train/best_accuracy.pdparams -o  Global.save_inference_dir=output/infer/PP-OCRv5_mobile_det_infer/first_det
/root/miniconda3/envs/paddle/lib/python3.10/site-packages/paddle/utils/cpp_extension/extension_utils.py:715: UserWarning: No ccache found. Please be aware that recompiling all source files may be required. You can download and install ccache from: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md
  warnings.warn(warning_message)
Skipping import of the encryption module.
W0610 15:23:09.306272  1993 gpu_resources.cc:114] Please NOTE: device: 0, GPU Compute Capability: 8.9, Driver API Version: 13.0, Runtime API Version: 11.8
[2026/06/10 15:23:09] ppocr INFO: load pretrain successful from ./output/PP-OCRv5_mobile_det/first_train/best_accuracy
[2026/06/10 15:23:09] ppocr INFO: Export inference config file to output/infer/PP-OCRv5_mobile_det_infer/first_det/inference.yml
Skipping import of the encryption module
[2026/06/10 15:23:12] ppocr INFO: inference model is saved to output/infer/PP-OCRv5_mobile_det_infer/first_det/inference
'''
python 复制代码
python3 tools/export_model.py -c ./configs/rec/PP-OCRv5/PP-OCRv5_mobile_rec.yml -o Global.pretrained_model=./output/PP-OCRv5_mobile_rec/first/best_accuracy.pdparams -o  Global.save_inference_dir=output/infer/PP-OCRv5_mobile_rec_infer/first_rec_0610

(paddle) root@autodl-container-d8dlmpu3b9-2023ec6b:~/PaddleOCR-main# python3 tools/export_model.py -c ./configs/rec/PP-OCRv5/PP-OCRv5_mobile_rec.yml -o Global.pretrained_model=./output/PP-OCRv5_mobile_rec/first/best_accuracy.pdparams -o  Global.save_inference_dir=output/infer/PP-OCRv5_mobile_rec_infer/first_rec                                         Skipping import of the encryption module.
W0610 15:28:27.813534  2532 gpu_resources.cc:114] Please NOTE: device: 0, GPU Compute Capability: 8.9, Driver API Version: 13.0, Runtime API Version: 11.8
[2026/06/10 15:28:28] ppocr INFO: load pretrain successful from ./output/PP-OCRv5_mobile_rec/first/best_accuracy
[2026/06/10 15:28:28] ppocr INFO: Export inference config file to output/infer/PP-OCRv5_mobile_rec_infer/first_rec/inference.yml
Skipping import of the encryption module
[2026/06/10 15:28:31] ppocr INFO: inference model is saved to output/infer/PP-OCRv5_mobile_rec_infer/first_rec/inference

export_model.py生成ONNX

python 复制代码
import paddle
from paddle.static import InputSpec
from ppocr.modeling.architectures import build_model
from ppocr.postprocess import build_post_process
from ppocr.utils.save_load import load_pretrained_params
import yaml

# 1. 加载配置文件
config_path = './configs/det/PP-OCRv5/PP-OCRv5_mobile_det.yml'
with open(config_path, 'r') as f:
    config = yaml.safe_load(f)

# 2. 构建模型并加载权重
model = build_model(config['Architecture'])
load_pretrained_params(model, './output/PP-OCRv5_mobile_det/first_train/best_accuracy.pdparams')
model.eval()  # 切换到评估模式

# 3. 定义输入张量的形状(根据你的模型实际输入调整)
# OCR 检测模型通常输入为 [batch_size, channels, height, width]
input_spec = [InputSpec(shape=[1, 3, 640, 640], dtype='float32', name='image')]

# 4. 导出为 ONNX 格式
paddle.onnx.export(
    layer=model,
    path='./output/infer/PP-OCRv5_mobile_det_infer/first_det_0610/model',
    input_spec=input_spec,
    opset_version=13,  # 推荐使用 13 或更高版本以支持现代算子
    enable_onnx_checker=True
)

print("✅ ONNX 模型已成功导出!")

REC 导出ONNX

python 复制代码
import paddle
from paddle.static import InputSpec
from ppocr.modeling.architectures import build_model
from ppocr.utils.save_load import load_pretrained_params
# 导入官方的配置解析工具
from tools.program import get_config 

# 1. 使用官方工具加载配置(会自动读取你修改的字典路径并补全参数)
config_path = './configs/rec/PP-OCRv5/PP-OCRv5_mobile_rec.yml'
config, _, _ = get_config(config_path, show=False)

# 2. 构建模型并加载权重
model = build_model(config['Architecture'])
load_pretrained_params(model, './output/PP-OCRv5_mobile_rec/first/best_accuracy.pdparams')
model.eval()

# 3. 定义输入张量的形状(识别模型标准尺寸)
input_spec = [InputSpec(shape=[1, 3, 48, 320], dtype='float32', name='image')]

# 4. 导出为 ONNX 格式
paddle.onnx.export(
    layer=model,
    path='./output/infer/PP-OCRv5_mobile_rec_infer/first_rec_0610/model',
    input_spec=input_spec,
    opset_version=13,
    enable_onnx_checker=True
)

print("✅ 识别模型 ONNX 已成功导出!")
bash 复制代码
相关推荐
IT_陈寒5 分钟前
当Java的hashCode遇上Lombok,我的缓存被全清了
前端·人工智能·后端
刘胡子大叔13 分钟前
评测驱动优化:失败样本回流 Prompt 的闭环
人工智能·prompt
这个DBA有点耶15 分钟前
内核级AI与多模融合:AI数据库在海外场景的落地要点
数据库·人工智能·架构
涛思数据(TDengine)20 分钟前
从工业本体到 AI 原生:TDengine 出席 2026 QCon 分享工业数据基础设施路径
大数据·数据库·人工智能·tdengine·工业
yz_aiks28 分钟前
WorkBuddy 怎么做网页小游戏:深海钓鱼游戏 43 次对话、301 积分从一句话做到发布(附手机横屏踩坑)
人工智能·html5·ai编程·小游戏·workbuddy
byte轻骑兵1 小时前
【LMP】规范精讲[12]: 链路层的花名册——一张表数完88条指令的门道
人工智能·蓝牙协议·lmp·蓝牙链路管理·通信学习
萤箜1 小时前
Chroma、Pinecone、Milvus 选型对比:不同发展阶段该选哪款向量数据库
人工智能
jimmyleeee1 小时前
Agent安全之九:OWASP ASI09 人机信任利用------当人类成为攻击链上最后一道被攻破的关口
人工智能·安全
Gu_WenYun1 小时前
从主题定价到订单定价:机器人基金的产业链观察
大数据·人工智能·金融
song150265372981 小时前
小型零部件外观检测难?AI机器视觉检测设备,适配全行业小件质检
人工智能·计算机视觉·视觉检测