使用 JYPPX.DeploySharp 高效摆设 PaddleOCR,解锁多种高性能 OCR 笔墨辨认方案 [复制链接]
发表于 2026-1-28 22:28:38 | 显示全部楼层 |阅读模式
使用 JYPPX.DeploySharp 高效摆设 PaddleOCR,解锁多种高性能 OCR 笔墨辨认方案

本文先容怎样通过 DeploySharp 框架在 .NET 环境下摆设 PaddleOCR 模子,支持 OpenVINO、TensorRT、ONNX Runtime 等多种推理引擎,实现百毫秒级笔墨辨认。
目次

一、媒介

OCR(光学字符辨认)技能在数字化办公、文档管理、单子辨认等场景中发挥侧告急作用。百度飞桨开源的 PaddleOCR 作为业界领先的 OCR 框架,以其优秀的辨认精度和丰富的功能特性深受开辟者喜好。
一年前,我基于自己开辟的 OpenVINO C# API 项目,在 .NET 框架下使用 OpenVINO 摆设工具摆设 PaddleOCR 系列模子,推出了 PaddleOCR-OpenVINO-CSharp 项目。借助 OpenVINO 在 CPU 上的强大推理优化本领,该项目乐成实现了在纯 CPU 环境下完成图片笔墨辨认、版面分析及表格辨认等功能,推理速率可控制在 300 毫秒以内。
随着项目的发展和应用场景的多样化,单一推理引擎已无法满足全部需求。近期,我将 OpenVINO、TensorRT、ONNX Runtime 等主流推理工具举行了同一封装,推出了 DeploySharp 开源项目。该项目的核心上风在于:

  • 同一接口:通过底层接口抽象,实现一套代码适配多种推理引擎
  • 机动摆设:开辟者可根据现实硬件环境选择最优推理方案
  • 性能优化:充实发挥各推理引擎的硬件加快本领
得益于 DeploySharp 底层接口同一的上风,开辟者如今可以用同一段代码在 OpenVINO、TensorRT、ONNX Runtime 等多种推理引擎间自由切换。近期,我们完成了 PaddleOCR 模子的支持更新,为 .NET 开辟者提供了一套完备的 OCR 办理方案。
如今,PaddleOCR 功能已集成至 DeploySharp 开源项目中(代码已上传至堆栈,NuGet 包正在预备中)。为了让各人快速体验新版 PaddleOCR 的极致性能,我们特别预备了 JYPPX.DeploySharp.OpenCvSharp.PaddleOcr.TestDemo 演示步调,支持即开即用,无需复杂设置。
二、核心技能原理剖析

2.1 PaddleOCR 工作流程

PaddleOCR 采取经典的「检测-分类-辨认」三阶段流水线架构:
  1. 输入图片
  2.     │
  3.     ▼
  4. ┌─────────────┐
  5. │ 文本检测     │ → 检测图片中的文本区域位置
  6. │ (Detection) │
  7. └─────────────┘
  8.     │
  9.     ▼
  10. ┌─────────────┐
  11. │ 文本方向分类 │ → 判断文本方向(180度翻转等)
  12. │ (Classifier)│
  13. └─────────────┘
  14.     │
  15.     ▼
  16. ┌─────────────┐
  17. │ 文本识别     │ → 识别文本区域的具体内容
  18. │ (Recognition)│
  19. └─────────────┘
  20.     │
  21.     ▼
  22. 输出识别结果
复制代码
2.2 三阶段模子详解

阶段模子名称输入输出作用检测PP-OCRv5_det原始图片 (3xHxW)文本框坐标定位文当地区分类PP-OCRv5_cls裁剪文本框 (3x80x160)方向标签改正文本方向辨认PP-OCRv5_rec裁剪文本框 (3x48xL)文本内容辨认字符序列2.3 性能优化计谋


  • 模子量化:使用 int8 量化减小模子体积,提升推理速率
  • 动态批处置惩罚:支持 Batch Size > 1,进步 GPU 使用率
  • 并发推理:支持多线程并发处置惩罚,充实使用多核性能
  • 硬件加快:针对差别硬件选择最优盘算后端
三、DeploySharp 架构上风

DeploySharp 的核心筹划理念是「同一接口,机动摆设」,其架构如下图所示:
  1. ┌─────────────────────────────────────────────────────────┐
  2. │                    应用层 (Application)                  │
  3. │            PaddleOCR 文字识别 / 其他模型应用              │
  4. └─────────────────────────────────────────────────────────┘
  5.                             │
  6.                             ▼
  7. ┌─────────────────────────────────────────────────────────┐
  8. │                 DeploySharp 抽象接口层                    │
  9. │  统一的模型加载 / 推理执行 / 资源管理接口                 │
  10. └─────────────────────────────────────────────────────────┘
  11.                             │
  12.             ┌───────────────┼───────────────┐
  13.             ▼               ▼               ▼
  14. ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
  15. │   OpenVINO    │ │   TensorRT    │ │ ONNX Runtime  │
  16. │   Engine      │ │   Engine      │ │    Engine     │
  17. │  (CPU 优化)   │ │ (GPU 加速)    │ │ (跨平台支持)   │
  18. └───────────────┘ └───────────────┘ └───────────────┘
  19.             │               │               │
  20.             ▼               ▼               ▼
  21. ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
  22. │  Intel CPU    │ │  NVIDIA GPU   │ │ 多种硬件设备   │
  23. │               │ │               │ │ (CPU/GPU/DML) │
  24. └───────────────┘ └───────────────┘ └───────────────┘
复制代码
重要上风:

  • 零代码切换:更换推理引擎无需修改业务代码
  • 资源高效使用:主动管理模子生命周期和盘算资源
  • 扩展性强:易于添加新的推理引擎支持
  • 生产停当:颠末充实测试,可直接用于生产环境
四、支持的推理装备

本演示步调支持多种主流推理后端,覆盖从入门级装备到高性能服务器的各种场景:
推理引擎支持装备实用场景性能特点OpenVINOCPU无 GPU 环境、Intel 处置惩罚器CPU 优化,启动快,稳固TensorRTCUDA 11/12NVIDIA GPU 高性能场景GPU 加快,极致性能,需模子转换ONNX Runtime CPUCPU跨平台摆设通用性强,性能中等ONNX Runtime CUDACUDA 12NVIDIA GPU 环境摆设GPU 加快,开箱即用ONNX Runtime TensorRTCUDA 12NVIDIA GPU 高性能场景GPU 加快 + TensorRT 优化ONNX Runtime DMLDML GPUWindows 平台多厂商 GPU支持 AMD/NVIDIA/Intel GPU
性能提示:初次加载模子和推理时会较慢,这是正常征象(模子初始化和 JIT 编译)。初次运行时请制止频仍利用,待模子预热完成后性能将显着提升。
五、快速开始指南

5.1 步调界面概览

运行步调后,主界面如下图所示:
核心利用阐明:
利用项阐明留意事项推理后端选择使用的推理引擎切换后需重新加载模子模子路径预置模子路径,一样平常无需修改支持自界说模子路径图像路径选择待辨认的图片支持 JPG/PNG/BMP 等格式加载模子加载指定模子到内存初次使用必须实行推理图片实行单次图片辨认初次需预热时间测试一连推理十次并统计匀称耗时用于性能评估并发数目调解推理并发线程数修改后需重新加载模子BatchSize批量处置惩罚巨细可动态调解5.2 OpenVINO 推理

OpenVINO 是 Intel 推出的开源工具套件,针对 CPU 和Intel IGPU举行了深度优化,特别恰当无 GPU 环境下的高性能推理。
CPU使用步调:
1.运行步调

2.在「推理后端」下拉框中选择 OpenVINO
3.点击「加载模子」
4.点击「推理图片」开始辨认
IGPU使用步调:
英特尔集显使用流程与上述同等,重要是装备要选择GPU0
混淆装备使用步调:
英特尔OpenVINO支持CPU+IGPU混淆装备推理,即AUTO模式,OpenVINO会根据装备环境自主选择,使用方式与上述同等,重要是装备要选择AUTO
实用场景:

  • 服务器环境摆设
  • 低功耗装备
  • Intel CPU 用户
  • 对启动速率要求高的场景
5.3 ONNX Runtime CPU 推理

ONNX Runtime 是微软推出的跨平台推理引擎,支持多种硬件加快后端,CPU 模式无需任何依靠即可使用。
使用步调:

  • 运行步调
  • 在「推理后端」下拉框中选择 ONNX Runtime CPU
  • 点击「加载模子」
  • 点击「推理图片」开始辨认

实用场景:

  • 跨平台摆设需求
  • 无 GPU 加快环境
  • 必要快速原型验证
5.4 ONNX Runtime CUDA 推理

CUDA 是 NVIDIA 提供的并行盘算平台,可充实使用 GPU 的并行盘算本领实现显着加快。
设置步调


  • 安装 CUDA 驱动

  • 复制依靠文件
    将以下 CUDA 相干 DLL 文件复制到步调运行目次:

  • 启动推理
    运行步调,在「推理后端」下拉框中选择 ONNX Runtime CUDA

依靠阐明:
NuGet 包名版本Microsoft.ML.OnnxRuntime.Gpu.Windows1.23.0Microsoft.ML.OnnxRuntime.Managed1.23.0实用场景:

  • 拥有 NVIDIA 显卡的装备
  • 对推理速率有较高要求
  • 必要快速摆设无需模子转换
5.5 ONNX Runtime TensorRT 推理

TensorRT 是 NVIDIA 推出的高性能深度学习推理优化器,联合 CUDA 加快可到达极致性能。
设置步调

依靠文件复制方式与 CUDA 模式同等。
使用步调


  • 运行步调
  • 在「推理后端」下拉框中选择 ONNX Runtime TensorRT
  • 点击「加载模子」
  • 点击「推理图片」开始辨认

告急提示:初次运行推理时,TensorRT 会主动对 ONNX 模子举行优化编译,此过程大概必要数分钟,请耐烦等候。编译后的引擎文件会被缓存,后续推理速率将大幅提升。
依靠阐明:
NuGet 包名版本Microsoft.ML.OnnxRuntime.Gpu.Windows1.23.2Microsoft.ML.OnnxRuntime.Managed1.23.2实用场景:

  • 对推理速率要求极高的生产环境
  • NVIDIA GPU 装备
  • 可继承初次运行较长的编译时间
5.6 ONNX Runtime DML 推理

DirectML(DML)是 Windows 平台的高性能硬件加快接口,支持 AMD、NVIDIA 和 Intel 多厂商显卡。
设置步调

将 DML 相干 DLL 文件复制到步调运行目次:

使用步调


  • 运行步调
  • 在「推理后端」下拉框中选择 ONNX Runtime DML
  • 点击「加载模子」
  • 点击「推理图片」开始辨认

实用场景:

  • Windows 平台用户
  • AMD 显卡用户
  • 必要同一接口支持多品牌显卡
5.7 TensorRTSharp 推理

TensorRTSharp 是对 NVIDIA TensorRT 的 C# 封装,提供原生的 TensorRT 引擎加载和推理本领,支持 FP16 精度进一步提升性能。
环境预备

具体的安装和设置指南请参考:
  1. https://mp.weixin.qq.com/s/D0c6j5MmraJO4Eza7tWm1A
复制代码
TensorRTSharp 支持 CUDA 11 和 CUDA 12 两个系列,请根据体系安装的 CUDA 版本选择对应的 DLL 文件。
设置步调


  • 更换 DLL 文件
    根据安装的 CUDA 版本,将对应的 TensorRT DLL 文件复制到步调目次:

  • 模子转换
    使用 trtexec 工具将 ONNX 模子转换为 TensorRT 引擎文件:

模子转换指令

文本检测模子(Det):
  1. trtexec.exe --onnx=PP-OCRv5_mobile_det_onnx.onnx \
  2.   --minShapes=x:1x3x32x32 \
  3.   --optShapes=x:4x3x640x640 \
  4.   --maxShapes=x:8x3x960x960 \
  5.   --fp16 \
  6.   --memPoolSize=workspace:1024 \
  7.   --sparsity=disable \
  8.   --saveEngine=PP-OCRv5_mobile_det_f16_onnx.engine
复制代码
文天职类模子(Cls):
  1. trtexec.exe --onnx=PP-OCRv5_mobile_cls_onnx.onnx \
  2.   --minShapes=x:1x3x80x160 \
  3.   --optShapes=x:8x3x80x160 \
  4.   --maxShapes=x:64x3x80x160 \
  5.   --fp16 \
  6.   --memPoolSize=workspace:1024 \
  7.   --sparsity=disable \
  8.   --saveEngine=PP-OCRv5_mobile_cls_f16_onnx.engine
复制代码
文本辨认模子(Rec):
  1. trtexec.exe --onnx=PP-OCRv5_mobile_rec_onnx.onnx \
  2.   --minShapes=x:1x3x48x48 \
  3.   --optShapes=x:8x3x48x1024 \
  4.   --maxShapes=x:64x3x48x1024 \
  5.   --fp16 \
  6.   --memPoolSize=workspace:1024 \
  7.   --sparsity=disable \
  8.   --saveEngine=PP-OCRv5_mobile_rec_f16_onnx.engine
复制代码
开始推理

模子转换完成后,在步调中选择对应的 .engine 文件即可开始推理:

实用场景:

  • 寻求极致推理性能
  • NVIDIA GPU 环境
  • 允许离线模子转换
六、性能测试与分析

6.1 性能测试工具

演示步调内置了完备的性能测试工具,支持两种测试模式:

  • 团体耗时统计:盘算从图片输入到结果输出的完备端到端耗时
  • 具体阶段分析:记录预处置惩罚、推理、后处置惩罚各阶段的具体耗时


6.2 TensorRTSharp 性能示例

以下为使用 TensorRTSharp 在 4 并发设置下的性能测试数据:
  1. Inference time: 53 ms
  2. ---- Detection ----
  3. Inference Time Records:
  4. Index    Preprocess(ms)    Inference(ms)    Postprocess(ms)    Total(ms)
  5. 1         2.01              6.37              0.57              8.96
  6. 2         2.23              5.51              0.68              8.43
  7. ---- Classification ----
  8. Device/Worker 0:
  9. Inference Time Records:
  10. Index    Preprocess(ms)    Inference(ms)    Postprocess(ms)    Total(ms)
  11. 1         1.84              6.89              0.00              8.73
  12. 2         1.99              6.97              0.01              8.96
  13. Device/Worker 1:
  14. Inference Time Records:
  15. Index    Preprocess(ms)    Inference(ms)    Postprocess(ms)    Total(ms)
  16. 1         1.79              6.66              0.00              8.46
  17. 2         1.66              7.60              0.00              9.26
  18. Device/Worker 2:
  19. Inference Time Records:
  20. Index    Preprocess(ms)    Inference(ms)    Postprocess(ms)    Total(ms)
  21. 1         1.61              5.31              0.00              6.92
  22. 2         1.51              8.01              0.00              9.53
  23. Device/Worker 3:
  24. Inference Time Records:
  25. Index    Preprocess(ms)    Inference(ms)    Postprocess(ms)    Total(ms)
  26. 1         1.24              7.73              0.00              8.98
  27. 2         1.82              8.35              0.00              10.17
  28. ---- Recognition ----
  29. Device/Worker 0:
  30. Inference Time Records:
  31. Index    Preprocess(ms)    Inference(ms)    Postprocess(ms)    Total(ms)
  32. 1         0.00              41.97             1.42              43.39
  33. 2         0.00              14.50             2.30              16.81
  34. Device/Worker 1:
  35. Inference Time Records:
  36. Index    Preprocess(ms)    Inference(ms)    Postprocess(ms)    Total(ms)
  37. 1         0.00              47.40             6.81              54.21
  38. 2         0.00              19.42             2.76              22.18
  39. Device/Worker 2:
  40. Inference Time Records:
  41. Index    Preprocess(ms)    Inference(ms)    Postprocess(ms)    Total(ms)
  42. 1         0.00              38.10             3.42              41.52
  43. 2         0.00              22.36             3.37              25.73
  44. Device/Worker 3:
  45. Inference Time Records:
  46. Index    Preprocess(ms)    Inference(ms)    Postprocess(ms)    Total(ms)
  47. 1         0.00              109.94            4.58              114.52
  48. 2         0.00              26.59             4.55              31.14
复制代码
6.3 性能对比总结

下表为使用洗发水图片,跑10次的匀称时间测试:
推理引擎装备匀称耗时装备范例OpenVINOCPU288msIntel(R) Core(TM) Ultra 9 288V  8核OpenVINOIGPU99msIntel(R) Arc(TM) 140V GPU (16GB)OpenVINO混淆 AUTO:IGPU+CPU100msIntel(R) Core(TM) Ultra 9 288V  8核  
Intel(R) Arc(TM) 140V GPU (16GB)ONNX RuntimeCPU656msAMD Ryzen 7 5800H with Radeon Graphics 8核ONNX Runtime DMLGPU114msNVIDIA GeForce RTX 3060 Laptop GPUONNX Runtime DMLIGPU331msIntel(R) Arc(TM) 140V GPU (16GB)ONNX Runtime CUDAGPU93msNVIDIA GeForce RTX 3060 Laptop GPUONNX Runtime TensorRTGPU52msNVIDIA GeForce RTX 3060 Laptop GPUTensorRTSharpGPU51msNVIDIA GeForce RTX 3060 Laptop GPU
性能测试征集:我们接待广大开辟者分享各自的测试数据。请在品评区提供您的测试设置(硬件型号、并发数、Batch Size)和实测耗时,后续我们将整理成性能基准对比表。
七、常见题目解答

Q1: 初次推理为什么特别慢?

A: 初次推理时必要举行以下利用:

  • 模子加载到内存
  • 推理引擎初始化
  • JIT 编译(部分引擎)
这是正常征象,后续推理速率会显着提升。
Q2: 怎样选择符合的推理引擎?

A: 根据硬件环境和需求选择:
场景保举引擎无 GPU,有Intel CPU,寻求稳固性OpenVINO有Intel GPU,必要跨平台OpenVINO无 GPU,必要跨平台ONNX Runtime CPU有 NVIDIA 显卡,快速摆设ONNX Runtime CUDA有 NVIDIA 显卡,寻求性能ONNX Runtime TensorRT / TensorRTSharpWindows 平台,AMD 显卡ONNX Runtime DMLQ3: 切换推理引擎时为什么必要重新加载模子?

A: 差别推理引擎对模子格式的内部表现和优化计谋差别,因此必要重新剖析和加载模子。点击「加载模子」即可完成切换。
Q4: BatchSize 和并发数目有什么区别?

A: 两个参数的作用差别:

  • BatchSize:单次推理处置惩罚的图片数目,提升 GPU 使用率
  • 并发数目:同时运行的推理引擎数目,设置几个就会天生几个推理引擎举行同时推理,提升多核/CPU 使用率
调解 BatchSize 不必要重新加载模子,但调解并发数目后必要重新加载。
Q5: TensorRT 模子转换失败怎么办?

A: 查抄以下几点:

  • 确保 CUDA 版本与 TensorRT 版本匹配
  • 查抄 ONNX 模子文件是否完备
  • 确认 trtexec 参数中输入尺寸范围公道
  • 如显存不敷,减小 --memPoolSize 参数
Q6: 推理结果为空或辨认禁绝确怎么办?

A: 常见缘故起因息争决方法:

  • 图片质量:查抄图片是否含糊、倾斜或光照不敷
  • 输入尺寸:确保图片尺寸符合模子输入要求
  • 语言支持:确认模子是否支持目的语言
  • 模子版本:实行使用差别版本的 PaddleOCR 模子
八、软件获取

8.1 源码下载

DeploySharp 项目已完全开源,可通过以下方式获取:
主堆栈:
  1. https://github.com/guojin-yan/DeploySharp.git
复制代码
PaddleOCR 演示步调:
  1. https://github.com/guojin-yan/DeploySharp/tree/DeploySharpV1.0/applications/JYPPX.DeploySharp.OpenCvSharp.PaddleOcr
复制代码
8.2 可实行步调

如需直接获取编译好的可实行步调,请参加技能交换群,从群文件下载最新版本。
九、技能支持

9.1 反馈与交换


  • GitHub Issues:在项目堆栈提交 Issue 或 Pull Request
  • QQ 交换群:参加 945057948,获取及时技能支持

9.2 相干资源

结语

通过 DeploySharp 框架,我们乐成实现了 PaddleOCR 在 .NET 环境下的高效摆设。无论是纯 CPU 环境下的稳固运行,照旧 GPU 加快下的极致性能,开辟者都可以根据现实需求机动选择。
未来,我们将连续优化框架性能,支持更多模子范例和推理引擎,为 .NET 开辟者提供更完满的 AI 模子摆设办理方案。
作者:Guojin Yan
末了更新:2026年1月
【文章声明】

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表