SimdPaddleOCR 1.4
非常自豪地发布 SimdPaddleOCR 1.4。这一版把 1.3 没开闸的路径补上了:墙钟更快、工作集腰斩、medium 正确率贴上 C,像素也不用再先转成 BGR。
性能碉堡
图级 NHWC 从「仅 AVX2」扩到 ns2 / x64 scalar / net10 AdvSIMD。预处理直接写 NHWC,少一次输入搬家。
本机 Ryzen 7 5800X、4 worker、同一套 100 张(墙钟 n=99):
| 模型 | 路径 | 1.3 | 1.4 | 相对 |
|---|---|---|---|---|
| tiny | net10 AVX2 | 86.0 ms | 63.1 ms | 0.73× |
| tiny | ns2 | 203.1 ms | 96.5 ms | 0.48× |
| small | net10 AVX2 | 222 ms | 200 ms | 0.90× |
| medium | net10 AVX2 | 628 ms | 585 ms | 0.93× |
| medium | ns2 | 1606 ms | 874 ms | 0.54× |
CI 上 linux-arm64 N2 tiny-4w 241 → 180 ms(约快 25%);win-x64 7763 的 ns2 343 → 228 ms。AVX2 默认路径和 1.3 持平,台阶在以前吃不到 NHWC 的那些人。
内存优化
tiny 工作集峰值 804 → 515 MB,medium 2489 → 1206 MB。CI 同一把尺子:7763 817 → 515 MB,N2 840 → 572 MB,Δ WS 从大约 400 MB 掉到 100–160 MB。
正确率优化
CLS 预处理改回 PaddleOCR ClsResizeImg 保比例,细长拉丁行不再被拉成 160×80 后 0/180 翻面。本机同一 1036 行:tiny / small 没动;medium CER 0.67% → 0.26%,已经贴上 lw.PPOCR.C 的 0.24%。
像素格式
Run 默认仍是 Bgr24,也可以直接吃 RGB24 / BGRA32 / RGBA32。swizzle 发生在本来就要做的 resize / warp 里,不摊一张中间 BGR。ImageSharp 的 Rgba32、Skia / Bitmap 的 BGRA 可以原样送进来。
LINQPad
NuGet 包带 4 个脚本:imagesharp / skiasharp / opencvsharp5 / bitmap。下载示例图,tiny 模型识别,控制台输出文字。打了 linqpad-samples 标签,免费版也能用。bitmap 在 LINQPad 5 / .NET Framework 4.8 和 .NET 10 上都能跑。
完整数字和读数规则见 docs/perf.md。NuGet:Sdcb.SimdPaddleOCR。