【无标题】

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 复制代码
相关推荐
程序员老猫12 小时前
vide coding 个人产品,那就从博客开始吧
人工智能·程序员·全栈
geo搜搜果数据13 小时前
实测5大AI平台品牌排名:复现GEO监测流程
人工智能·langchain·搜搜果
minge000114 小时前
【世界杯中的AI】(2026-07-05)当足球遇见AI:7月5日世界杯的“人机共舞”与冷门之夜
人工智能·科技·世界杯
IT_陈寒14 小时前
闭包陷阱让我加了两天班,JavaScript你真行
前端·人工智能·后端
wumingxiaoyao14 小时前
从 0 开始学 AI:第 2 课,AI、机器学习、深度学习和大模型是什么关系?
人工智能·深度学习·机器学习·ai·大模型·llm
2601_9626838914 小时前
治理遗留系统中的“生肉 SQL”:一次用多模型协作优化慢查询的实战复盘
数据库·人工智能·sql
踩着两条虫14 小时前
可视化 vs 终端 vs 云端:VTJ.PRO、Claude Code、Codex 三强横评
前端·vue.js·人工智能·低代码·架构
字节跳动视频云技术团队14 小时前
Agentic 范式下的视频画质优化:火山引擎的新路径
人工智能·音视频开发
bandaoyu15 小时前
大模型训练并行技术理解-DP/TP/PP/SP/EP
深度学习