惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cloudbric
Cloudbric
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
A
About on SuperTechFans
宝玉的分享
宝玉的分享
小众软件
小众软件
T
Tor Project blog
The Hacker News
The Hacker News
WordPress大学
WordPress大学
IT之家
IT之家
L
LINUX DO - 热门话题
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
NISL@THU
NISL@THU
D
Darknet – Hacking Tools, Hacker News & Cyber Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Latest news
Latest news
Martin Fowler
Martin Fowler
F
Full Disclosure
爱范儿
爱范儿
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
W
WeLiveSecurity
C
Cisco Blogs
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - Franky
美团技术团队
N
Netflix TechBlog - Medium
Know Your Adversary
Know Your Adversary
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Help Net Security
雷峰网
雷峰网
G
Google Developers Blog
人人都是产品经理
人人都是产品经理
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence
J
Java Code Geeks
Project Zero
Project Zero
Jina AI
Jina AI
P
Palo Alto Networks Blog
Vercel News
Vercel News
腾讯CDC
N
News | PayPal Newsroom
V
Visual Studio Blog
Cisco Talos Blog
Cisco Talos Blog
V
Vulnerabilities – Threatpost
AWS News Blog
AWS News Blog

博客园 - China Soft

.NET 程序保护实战系列01-流水线架构与保护引擎总览 试官问:你用 AI 编程半年了,那怎么保证 Claude Code 写出来的代码是对的? C#实现控制台多区域输出 园友特惠| 1Panel 企业版 & AI 一体机限量放售,最高直降 5100! 上位机程序发布打包成安装包---Inno Setup 这是一篇学习笔记,分享给大家,如果大家喜欢,也会开启USB的专辑 我问了 AI 一个问题:编码能力贬值后,什么能力值钱? Visual Studio 2026(VS2026) 密钥/激活码 Dddify:给 ASP.NET Core 项目一套轻量、清晰、可落地的 DDD 基础设施 C# ESP32/STM32 轻量 Web 能力库:PicoServer.Nano 别再说 AI 开发就是调接口了!5 种主流模式一次讲清 使用Cursor实现管理系统登录界面的快速开发 在 Avalonia 中编写高性能动画 傻子可懂的 Harness Engineering 入门教程 + 项目实战,一次搞懂 AI 编程工程化! 提升 Text2SQL 准确率 AI/Vibe Coding,本质是软件人工时代向软件工业时代发展 体验优先:十分钟使用 Python+LangChain 玩转阿里通义千问 大模型基础(二):必懂5大基础概念《Token、上下文窗口、Embedding、预训练、微调》 大模型基础(一):什么是LLM? Prompt、Agent、Function Call、Skill、MCP,傻傻分不清楚? 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 作为一线研发,我快被全网的 AI 焦虑逼疯了。 Qt QtWebEngine 白屏的解决方案 都是微软亲儿子,WPF凭啥干不掉WinForm?这3个场景说明白了 .NET 高级开发 | C# 中的动态代码:反射、EMIT、表达式树、Roslyn、Source Generators 大模型看大模型:推理Token的能耗用电量比对 WorkBuddy:从“我是谁”到“帮我干活” .NET 高级开发 | 开发 .NET 诊断工具、链路追踪原理 Prompt 焚诀——一个模板,终结你和 AI 的所有沟通问题 [项目]涉案资产信息化管理平台(山东某执法单位定制开发) 大模型RAG实战,从被骂不靠谱到成为部门MVP,这是我的踩坑全记录 白帽子为什么几乎都绕不开 httpx:一款 HTTP 资产探测工具的技术价值 从Prompt工程到Skill工程:Agent Skills开放标准彻底改变了AI协作方式 MAUI项目在Android平台通过U盘实现软件更新 微软竟然出了免费的 AI 应用开发课?!我已经学上了 一文彻底搞懂 OpenClaw 的架构设计与运行原理(万字图文) AI到底聪明在哪——从手机人脸识别说起 硬核科普:为何小米任天堂封杀 Root?揭秘操作系统从启动到“夺权”的底层游戏
高性能百度OCR ONNX Runtime C#实现
China Soft · 2026-05-14 · via 博客园 - China Soft

RapidOCRSharpOnnx 是一个基于OpenCV与ONNX Runtime 实现的PaddleOCR C#开源推理库,参考了RapidOCR 的实现,重新使用C#实现,并做了大量性能优化与架构重新设计,方便多种ONNX Runtime 执行提供程序部署

特性

  • 不依赖于具体的模型,直接导入需要的PP-OCR模型,识别指定的语言,PP-OCRv5模型支持识别106种语言,只需要将PP-OCRv5模型导出为onnx格式,就可以离线运行
  • 支持的ONNX Runtime 执行提供程序:Execution Provider CPU, CUDA / TensorRT, OpenVINO, CoreML, DirectML
  • 支持批量识别,并提供异步执行性能优化,大幅提高批量执行性能
  • 使用OpenCVSharp4 进行图像处理操作
  • 绘制识别结果图片使用SkiaSharp
  • PP-OCR 版本支持:PP-OCRv5, PP-OCRv4
  • 推理引擎:ONNX Runtime 是一个跨平台的机器学习模型加速器

OCR 示例

res_book

res_csharp

res_yongledadian

RapidOCRSharpOnnx使用

1 导出模型为onnx格式

如何转换PP-OCR模型为onnx格式,可以参考PP-OCR官网Obtaining ONNX Models, 或者直接从RapidOCR的魔塔社区下载Model List.

2 安装RapidOCRSharpOnnx组件并加载模型

Install Nuget packages RapidOCRSharpOnnx, OnnxRuntime, OpenCvSharp4.runtime

CPU 推理

dotnet add package RapidOCRSharpOnnx
dotnet add package OpenCvSharp4.runtime.win
dotnet add package Microsoft.ML.OnnxRuntime
using RapidOCRSharp ocr = new RapidOCRSharp(new ExecutionProviderCPU(new OcrConfig(detectPath, recPath, LangRec.CH, OCRVersion.PPOCRV5, clsMobilePath)));

CoreML 推理

dotnet add package RapidOCRSharpOnnx
dotnet add package OpenCvSharp4.runtime.osx.10.15-x64
dotnet add package Microsoft.ML.OnnxRuntime
using RapidOCRSharp ocr = new RapidOCRSharp(new ExecutionProviderCoreML(new OcrConfig(detectPath, recPath, LangRec.CH, OCRVersion.PPOCRV5, clsMobilePath)));

CUDA/TensorRT 推理

dotnet add package RapidOCRSharpOnnx
dotnet add package OpenCvSharp4.runtime.win
dotnet add package Microsoft.ML.OnnxRuntime.Gpu.Windows
using RapidOCRSharp ocr = new RapidOCRSharp(new ExecutionProviderCUDA(new OcrConfig(detectPath, recogPath, LangRec.CH, OCRVersion.PPOCRV5, clsPath), deviceId));
using RapidOCRSharp ocr = new RapidOCRSharp(new ExecutionProviderTensorRT(new OcrConfig(detectPath, recogPath, LangRec.CH, OCRVersion.PPOCRV5, clsPath), deviceId));

DirectML 推理

dotnet add package RapidOCRSharpOnnx
dotnet add package OpenCvSharp4.runtime.win
dotnet add package Microsoft.ML.OnnxRuntime.DirectML
using RapidOCRSharp ocr = new RapidOCRSharp(new ExecutionProviderDirectML(new OcrConfig(detectPath, recogPath, LangRec.EN, OCRVersion.PPOCRV5, clsPath), deviceId));

OpenVINO 推理

 
dotnet add package RapidOCRSharpOnnx
dotnet add package OpenCvSharp4.runtime.win
dotnet add package Intel.ML.OnnxRuntime.OpenVino
using RapidOCRSharp ocr = new RapidOCRSharp(new ExecutionProviderOpenVINO(new OcrConfig(detectPath, recogPath, LangRec.EN, OCRVersion.PPOCRV5, clsPath), IntelDeviceType.NPU));

基本的API使用

using RapidOCRSharp ocr = new RapidOCRSharp(new ExecutionProviderDirectML(new OcrConfig(detectPath, recogPath, LangRec.EN, OCRVersion.PPOCRV5, clsPath), _deviceId));
string savePath = $"res_{Path.GetFileName(imgPath)}";
var result = ocr.RecognizeText(imgPath, savePath);
Console.WriteLine($"result: {result.ToString()}");

批量识别图片

复制代码

 using RapidOCRSharp ocr = new RapidOCRSharp(new ExecutionProviderDirectML(new OcrConfig(detectPath, recogPath, LangRec.CH, OCRVersion.PPOCRV5, clsPath), _deviceId));
 var list = Directory.GetFiles(@"C:\code\model\OCRTestImages");
 Stopwatch sw = new Stopwatch();
 sw.Start();
 var resPath = ocr.BatchParallelAsync(list.ToList(), saveDir, receiveAction: ReceiveResult);
 sw.Stop();
 Console.WriteLine($"BatchAsync Time: {sw.ElapsedMilliseconds} ms");

private static void ReceiveResult(OcrBatchResult batchResult)
{
    Console.WriteLine(batchResult.ToString());
    Console.WriteLine("------------------------------------------------------------");
}

复制代码

批量识别使用Foreach API

复制代码

        private static async Task TestBatchForeachAsync()
        {

            string detectPath = @"D:\code\RapidOCRSharpOnnx\RapidOCRSharpOnnx.TestCommon\Models\ch_PP-OCRv5_det_mobile.onnx";
            string recogPath = @"D:\code\RapidOCRSharpOnnx\RapidOCRSharpOnnx.TestCommon\Models\ch_PP-OCRv5_rec_mobile.onnx";
            string clsPath = @"D:\code\RapidOCRSharpOnnx\RapidOCRSharpOnnx.TestCommon\Models\ch_PP-LCNet_x0_25_textline_ori_cls_mobile.onnx";

            using RapidOCRSharp ocr = new RapidOCRSharp(new ExecutionProviderDirectML(new OcrConfig(detectPath, recogPath, LangRec.CH, OCRVersion.PPOCRV5, clsPath), _deviceId));
            var list = Directory.GetFiles(@"D:\code\model\OCRTestImages");
            var res = ocr.BatchForeachAsync(list.ToList(), @"D:\code\model\OCRTestImagesResults");

            await foreach (var item in res)
            {
                Console.WriteLine(item.TextBlocks);
            }

        }

复制代码

性能测试

OCR组件库性能对比测试 CPU推理测试

OCR libraryVersionlanguageInference Engine
PaddleSharp 3.0.1 Paddle Inference C API .NET binding Sdcb.PaddleInference
PaddleOCR 3.5.0 python paddlepaddle
RapidOCR 3.8.1 python openvino
RapidOCRSharpOnnx 1.0.0 C# Intel.ML.OnnxRuntime.OpenVino

测试电脑

Windows 11 Pro OS Version 25H2

CPU: Intel Core Ultra 9 285k 3.7GHz

内存:DDR5 128GB speed 4400MT/s

硬盘:SSD 2TB

测试数据

图片: 60 张图片 (图片大小: 1180x92)

PP-OCR 模型: ch_PP-OCRv5_det_mobile, ch_PP-OCRv5_rec_mobile, ch_PP-LCNet_x0_25_textline_ori_cls_mobile

PaddleSharp 测试结果

CPU 推理时间 : 48.1769278s

Snipaste_2026-05-12_22-11-36

PaddleOCR 测试结果

CPU 推理时间 : 62.6685s

Snipaste_2026-05-12_22-12-18

RapidOCR 测试结果

CPU 推理时间 : 17.9634s

Snipaste_2026-05-12_22-12-44

RapidOCRSharpOnnx 测试结果

CPU 推理时间 : 9.2447s

Snipaste_2026-05-12_22-13-29

性能测试结果

OCR libraryVersionlanguageInference EngineElapsed Time
PaddleSharp 3.0.1 Paddle Inference C API .NET binding Sdcb.PaddleInference.runtime.win64.mkl version 3.1.0.54 CPU 48.1769s
PaddleOCR 3.5.0 python paddlepaddle version 3.2.0 CPU 62.6685s
RapidOCR 3.8.1 python openvino version 2026.1.0 21367 CPU 17.9634s
RapidOCRSharpOnnx 1.0.0 C# Intel.ML.OnnxRuntime.OpenVino CPU version 1.24.1 9.2447s

免责声明:本内容来自平台创作者,博客园系信息发布平台,仅提供信息存储空间服务。