PP-OCRv6-Small-ONNX-CUDA-FP16

0 downloads 0 likes on ModelScope updated

Model card

PP-OCRv6 Small ONNX Runtime CUDA FP16(C++ 部署版)

这是面向 Windows x64 / C++ 的 PP-OCRv6 Small 文本检测(Det)与文字识别(Rec)配套模型仓库,提供 CUDA FP16 权重、CPU FP32 回退权重、字符字典、模型契约和 C++ 加载示例。

本仓库不是从零训练的新模型。基础权重和网络结构来自 PaddleOCR 官方 PP-OCRv6 Small;本仓库的工作是完成 CUDA FP16 转换、Det/Rec 配套整理、Windows C++ 接入、动态形状验证和端到端性能测试。

适用场景

  • Windows C++ 本地 OCR;
  • 视频硬字幕检测与识别;
  • NVIDIA CUDA 加速,同时保留 CPU 回退;
  • 不希望在产品中依赖 Python/PaddlePaddle Runtime 的 ONNX Runtime 项目。

语言和识别能力继承自上游 PP-OCRv6 Small。实际效果会受到图片质量、裁切、检测后处理、字符字典和识别阈值影响。

仓库文件

文件 用途 大小
onnx/det.cuda.fp16.onnx CUDA FP16 文本检测 4.80 MiB
onnx/rec.cuda.fp16.onnx CUDA FP16 文字识别 10.15 MiB
onnx/det.fp32.onnx CPU FP32 文本检测 / 回退 9.47 MiB
onnx/rec.fp32.onnx CPU FP32 文字识别 / 回退 20.17 MiB
character_dict.txt 18,709 项识别字符字典 73.19 KiB
model-manifest.json 稳定 role、下载组合、依赖、文件大小和 SHA256 —
DOWNLOAD_CONTRACT.md C++ 选择、下载、校验和缓存契约 —

本仓库只保留当前硬字幕项目实际会使用的四个 ONNX:FP32 Det/Rec 是程序默认入口和 CPU 回退,CUDA 可用时程序自动选择 FP16 Det/Rec。未进入当前运行路径的额外兼容模型不随本仓库发布。

FP16 模型的内部权重主要为 FLOAT16,但输入和输出仍为 FLOAT32,因此业务侧的数据契约不需要改成半精度。

模型来源与转换信息

下载

完整仓库:

modelscope download --model BeePlug/PP-OCRv6-Small-ONNX-CUDA-FP16 --revision v1.0.0 --local_dir .\ppocrv6-small

C++ 产品不必安装 ModelScope Python SDK,可以直接读取 model-manifest.json,按稳定的 role 或 profile 选择文件,并校验其中的 bytes 和 sha256:

https://www.modelscope.cn/models/BeePlug/PP-OCRv6-Small-ONNX-CUDA-FP16/resolve/v1.0.0/<仓库相对路径>

生产软件应固定 v1.0.0 或具体提交,不要长期依赖会变化的 master。

魔塔仓库为了便于网页上传,仅使用一级目录。清单中的 path 是远端扁平路径,install_path 是下载器安装到本地缓存时使用的项目兼容路径;C++ 程序不要假设两者相同。

v1.0.0 的 model-manifest.json 信任锚(SHA256):

97eee00e2edafad62b4dafe4e8b3631dd8b46282a65d572f3daf9a3b36d71f6d
  • 只做检测:可单独选择 detector_cuda_fp16 或 detector_cpu_fp32;
  • 只做识别:选择 recognizer 后还必须按 requires 下载 recognition_dictionary;
  • 完整 CUDA OCR:选择 cuda_fp16_ocr profile;
  • 完整 CPU OCR:选择 cpu_fp32_ocr profile。

安全下载和缓存要求见 DOWNLOAD_CONTRACT.md。

C++ 加载

仓库提供两个 Windows x64 C++ 示例。安全下载示例只依赖 Windows 自带的 WinHTTP 和 BCrypt:

cmake -S cpp -B cpp\build -A x64
cmake --build cpp\build --config Release `
  --target ppocrv6-download-example
.\cpp\build\Release\ppocrv6-download-example.exe list
.\cpp\build\Release\ppocrv6-download-example.exe `
  verify detector_cuda_fp16 .

下载器支持 HTTPS、Unicode 路径、进度/取消回调、已存在文件复用、.part 临时文件、流式 SHA256 和校验后原子替换。

ONNX Runtime 模型加载与输入输出检查示例:

cmake -S cpp -B cpp\build -A x64 `
  -DONNXRUNTIME_ROOT=D:\path\to\onnxruntime-win-x64-gpu-1.24.4
cmake --build cpp\build --config Release `
  --target ppocrv6-model-info
.\cpp\build\Release\ppocrv6-model-info.exe .

最小 Session 创建方式:

Ort::Env env{ORT_LOGGING_LEVEL_WARNING, "ppocrv6"};
Ort::SessionOptions options;
options.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_ALL);

std::filesystem::path det =
    model_root / L"onnx/det.cuda.fp16.onnx";
Ort::Session det_session{env, det.c_str(), options};

仅创建 Session 不等于完成 OCR。实际集成还必须实现 Det 归一化、DB 后处理、透视裁切、Rec 宽度分桶、CTC 解码和字典查表。完整契约见 MODEL_CONTRACT.md。

实测性能

在 RTX 2060、ONNX Runtime 1.24.4、CUDA 13、Windows x64 Release 环境中,对 177.144 秒、1920×1080 视频执行固定字幕区域 OCR:

指标 实测结果
端到端墙钟(含加载/一次性准备) 23.2–29.4 秒
相对视频时长 6.1–7.6× 实时
热态处理速度 17.4–20.4× 实时
Rec 全片累计推理 0.28–0.31 秒
固定宽度桶稳态 Rec 12–17 ms/批
固定质量门 46/46 通过,连续 3 次

这些是完整硬字幕工具的集成基准,不是跨平台通用的模型排行榜成绩。输入形状、GPU、驱动、CUDA/cuDNN、批大小、视频解码与预热策略都会显著影响结果。测试方法和批次说明见 benchmark/README.md。

限制

  • 只包含 Det + Rec,不包含文档方向分类、图像矫正或版面分析模型;
  • CUDA FP16 版本主要面向 NVIDIA GPU;
  • 动态 Rec 宽度在 cuDNN 下可能触发执行计划重建,建议使用固定 320/640/960 宽度桶并为每个桶复用 Session;
  • 应用必须校验模型文件 SHA256,避免下载中断或缓存污染;
  • 模型效果和上游数据偏差由 PP-OCRv6 能力边界决定。

许可证与署名

本仓库遵循 Apache License 2.0。基础模型和 PaddleOCR 项目版权归其原作者及贡献者所有。这里提供的是转换、部署和工程验证成果;修改内容已在本模型卡中明确说明。详见 LICENSE。