跳到正文
>sdcb.ai
旗舰项目latest v2.0.0 · 2026/10/9Apache-2.0

SimdPaddleOCR

一个纯 C# 写成的完整 OCR 推理引擎。不依赖 Paddle Inference、ONNX Runtime,也不需要 OpenCV 原生库。

安装
dotnet add package Sdcb.SimdPaddleOCR
dotnet add package Sdcb.SimdPaddleOCR.Models.ChineseV6Tiny
0 个
原生推理依赖
896 KB
核心包体积(nupkg)
2.36%
tiny 模型 CER(CI 数据集)
15×
3080 Ti 上 medium 的 GPU 加速(2.0)

为什么

PaddleSharp 与 OpenVINO.NET 在 AI 时代的彻底焕新

PaddleSharp 和 OpenVINO.NET 已经帮很多人把 OCR 跑进了 .NET,但它们都得背着几十上百 MB 的原生运行时:换一个平台、换一个 CPU 架构,就要换一套 native 包,部署和排错都很痛苦。

SimdPaddleOCR 换了个思路:模型用自带的托管 ONNX 解释器加载,卷积、GEMM 等算子全部用 C# 的硬件内在函数手写,运行时按 CPU 能力自动选择 AVX-512、AVX2、NEON 或纯 Vector 路径。结果是一个 NuGet 包到处跑,连 NativeAOT 和 .NET Framework 4.8 都不例外。

核心 API 只接收像素内存(BGR24 / RGB24 / BGRA32 / RGBA32),不强迫你引入任何图像库。ImageSharp、SkiaSharp、OpenCvSharp、System.Drawing,想用哪个用哪个。

推理流水线
像素DETCLSREC
文本检测方向分类文字识别
托管 ONNX 解释器 · NHWC graph · session cache
Conv · GEMM · Pooling · Activation · Resize — C# 手写算子
AVX2 · FMA
x64
AVX-512 · VNNI
x64
AdvSIMD (NEON)
ARM64
Vector<T> / scalar
netstandard2.0
Vulkan
cross-platform
Metal
macOS

青色为 2.0 新增的 GPU 后端,仅 net10.0。

上手

选你喜欢的图像库,三行代码出结果

Program.cs
using System.Runtime.InteropServices;
using Sdcb.SimdPaddleOCR;
using Sdcb.SimdPaddleOCR.Models.ChineseV6Tiny;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.PixelFormats;

using PaddleOcrAll ocr = await PaddleOcrAll.LoadAsync(ChineseV6TinyModels.Default);
// Clone Default:改 Configuration.Default 会丢掉 PNG/JPEG 解码器
Configuration cfg = Configuration.Default.Clone();
cfg.PreferContiguousImageBuffers = true;
using Image<Rgba32> image = await Image.LoadAsync<Rgba32>(
    new DecoderOptions { Configuration = cfg }, "sample.jpg");
if (!image.DangerousTryGetSinglePixelMemory(out Memory<Rgba32> memory))
{
    Rgba32[] copy = new Rgba32[image.Width * image.Height];
    image.CopyPixelDataTo(copy);
    memory = copy;
}

PaddleOcrResult result = ocr.Run(MemoryMarshal.AsBytes(memory.Span),
    image.Width, image.Height, format: ImagePixelFormat.Rgba32);
Console.WriteLine(result.Text);

性能

每个版本都更快、更省

数据来自仓库 docs/ 下各机型报告(去掉首张预热后的中位墙钟,同机 CPU 对比 Vulkan / Metal GPU)。CPU 数据每次 CI 都会在 Windows / Linux / macOS 多架构上重跑。

RTX 3080 Ti · 端到端 / 张

Ryzen 7 5800X CPU vs Vulkan · 100 images · 2.0

CPUVulkan
tiny0.45×
49.6 ms
22.1 ms
small0.16×
166.8 ms
27.4 ms
medium0.07×
523.2 ms
36.4 ms

Intel Arc B580 · 端到端 / 张

CPU vs Vulkan · 三轮中位 · 2.0

CPUVulkan
tiny0.34×
66 ms
22.2 ms
small0.16×
205.9 ms
32.3 ms
medium0.10×
546.5 ms
57.1 ms

工作集峰值

tiny · 4 workers

1.3.01.4.2
win-x640.63×
817 MB
515 MB
linux-arm640.68×
840 MB
572 MB

本机 CER:tiny 2.78% → 2.37%,small 0.60% → 0.41%,medium 0.67% → 0.14%。

平台

一个包,到处都能跑

  • 目标框架:net10.0 与 netstandard2.0(含 .NET Framework 4.8)
  • NativeAOT 兼容(IsAotCompatible)
  • 模型从程序集嵌入资源直接加载,不解压、不写临时文件
  • 骁龙 8 Gen 3 上实测 CPU 与 Vulkan
OSCPUGPU (2.0)
Windows
x64x86ARM64
Vulkan
Linux
x64ARM64
Vulkan
macOS
x64ARM64
Metal
Android
ARM64
Vulkan

NuGet

包与模型

累计下载 5,341

版本

发布历史

  1. v2.0.0
    2026/10/9
  2. v1.4.2
    2026/9/20
  3. v1.4
    2026/9/19
  4. v1.3.0
    2026/9/14
  5. v1.2.0
    2026/9/9

系列文章

从 0 到 2.0 的开发手记

SimdPaddleOCR 2.0:再快15倍!见证纯C#驱动的GPU性能核弹

大家好,SimdPaddleOCR 今天发布 2.0。这是项目第一次升大版本号,原因很简单:1.x 一直在折腾 CPU 上的 SIMD,2.0 加上了 GPU 后端,Windows / Linux / 安卓走 Vulkan,macOS 走 Metal。在我的 RTX 3080 Ti 上,medium

2,26240

Fable 5.1操刀,内存腰斩,外星科技——SimdPaddleOCR 1.4 发布!

大家好,我非常自豪地宣布纯 C# 写的 SimdPaddleOCR 今天发布 1.4 版本,这个版本有许多重大改进,其中有一些甚至说得上是“外星科技”! 对于刚认识这个项目的朋友,先交代一下我们的硬核定位:这是一个纯 C# 实现的 PP-OCRv6 引擎。它不需要 Paddle Inference,

2,22144

AVX性能暴涨135%,吊打OpenVINO.NET——SimdPaddleOCR 1.3发布!

先看性能跑分,机器是我自己的主力开发机 Ryzen 7 5800X(16 逻辑核,AVX2),Windows 11,PP-OCRv6,4 个行级 worker,仓库里会生成 100 张合成图,去掉第一张预热,统计 99 张,长这个样子: 耗时是每张图的平均毫秒。C 引擎换成了较新的 lw.PPOCR

1,24426

ARM64端到端再提速40%:SimdPaddleOCR 1.2 发布!

前两天连载了 SimdPaddleOCR 的发布 和 C# 手写向量化的底层逻辑。1.1 版本在 win-x64 上已经基本站稳了脚跟,但短板也很明显:ARM64 环境下虽然能跑,但速度明显慢了一截。 现在 ARM64 早就不是小众平台了——MacBook、手机、Windows on ARM 以及越

1,06427

C# 手写向量化能追上 C 吗?

昨天发布了 SimdPaddleOCR,评论区和群里最多的一类问题是:纯 C# 写的推理,凭什么比纯 C 还快? 有人觉得肯定是偷偷调了 ONNX Runtime,有人觉得是 C 那边写得太烂,还有人直接说"C# 就不该谈性能"。 这篇不谈 OCR,谈一个更朴素的问题:C# 到底有没有能力写出和 C

1,60431

SimdPaddleOCR发布——一个纯 C# 的完整 OCR 推理库

今天正式发布 SimdPaddleOCR(NuGet: Sdcb.SimdPaddleOCR)。这是一个完全用 C# 编写的完整 OCR 推理引擎。它不依赖 Paddle Inference,不依赖 ONNX Runtime,也不需要附带 OpenCV 的原生动态链接库。 如果你现在去翻这个 Git

2,82658
计算机视觉微信群二维码

C#/.NET 计算机视觉技术交流

扫码加入微信群;二维码每周更新,如已过期,请先加 QQ 群 579060605。