支持PP-OCRv6的OnnxOCRSharp 也支持 GPU 和竖排文字了 📅 2026/7/17 5:15:45 1、写在前面这阵子除了尝试给Android版的OnnxOCR做技术方案,也没有忘记给OnnxOCRSharp做升级。支持GPU被放到了前面,由于PC机配的英伟达的5060Ti显卡,所以本次也就是单独支持了CUDA GPU。同时在修改旋转字体的BUG后,也想着将方向分类的能力也加入进来,这样对竖排文字也一并做支持。拖拖拉拉搞了半个多月吧,终于算是把OnnxOCRSharp v0.1.4正式发布了:CUDA GPU 推理和竖排/倾斜文本方向校正都支持了。桌面应用顶部可以直接切 CPU / GPU,v6 模型下载时会自动拉取方向分类模型,竖排场景也默认可用。下面就是一张神奇的竖排文字图片,大家可以用它自行测试。2、详细说明一下2.1 版本目标交付物说明OnnxOcr.Core新增 GPU 推理、竖排方向校正流水线NuGet 包OnnxOCRSharpv0.1.4,含 Core 引擎OnnxOcr.Desktop工具栏支持 CPU / GPU 切换、GPU 设备选择OnnxOcr.Console新增--gpu、--gpu-id命令行参数方向模型rapid_orientation.onnx,v6 预设下载时自动获取2.2 流水线变化v0.1.4 在 v6 两阶段流水线基础上,支持了方向校正:图片输入 ↓ TextDetector(PP-OCRv6 det)→ DbPostProcessV6 ↓ ImageCropper(透视变换裁剪) ↓[可选]TextOrientationClassifier(rapid_orientation.onnx) ↓ TextRecognizer(PP-OCRv6 rec)→ CtcLabelDecode ↓ OcrResult默认Auto 模式:只对「看起来像竖排」的检测框跑方向模型,横排框不额外消耗推理时间。3、GPU 加速详解3.1 依赖切换推理包从Microsoft.ML.OnnxRuntime升级为Microsoft.ML.OnnxRuntime.Gpu1.26.0。OnnxSessionFactory在创建 Session 时,根据OcrOptions.UseGpu决定是否挂载 CUDA Execution Provider:if(_options.UseGpu){ConfigureGpu(sessionOptions);}// ConfigureGpu 内部sessionOptions.AppendExecutionProvider_CUDA(deviceId);CUDA 不可用(没显卡、驱动不匹配、DLL 缺失)时,不会显示GPU选项。3.2 GPU 设备探测新增GpuDeviceDetector,负责枚举和推荐 GPU:能力实现CUDA 设备枚举P/Invoke 调用cudart,读取设备名、显存、算力自动选卡按空闲显存从高到低排序,取第一张可用卡桌面端启动时调用DetectGpus()填充 GPU 下拉框;控制台--gpu走自动选卡,--gpu-id 0指定设备。3.3 配置项OcrOptions新增 GPU 相关字段:参数默认值说明UseGpufalse是否启用 GPUGpuId0手动指定的 GPU 编号AutoSelectGputrue自动按空闲显存选卡GpuMemoryLimitBytes0显存上限(预留,当前未启用)三个工厂方法:// 手动指定 GPU 0varservice=OcrService.