CoreOCRRuntime.DirectML.win-x64
4.2.0
dotnet add package CoreOCRRuntime.DirectML.win-x64 --version 4.2.0
NuGet\Install-Package CoreOCRRuntime.DirectML.win-x64 -Version 4.2.0
<PackageReference Include="CoreOCRRuntime.DirectML.win-x64" Version="4.2.0" />
<PackageVersion Include="CoreOCRRuntime.DirectML.win-x64" Version="4.2.0" />
<PackageReference Include="CoreOCRRuntime.DirectML.win-x64" />
paket add CoreOCRRuntime.DirectML.win-x64 --version 4.2.0
#r "nuget: CoreOCRRuntime.DirectML.win-x64, 4.2.0"
#:package CoreOCRRuntime.DirectML.win-x64@4.2.0
#addin nuget:?package=CoreOCRRuntime.DirectML.win-x64&version=4.2.0
#tool nuget:?package=CoreOCRRuntime.DirectML.win-x64&version=4.2.0
CoreOCROnnx NuGet 包说明
CoreOCROnnx 是离线 OCR/YOLO 推理组件,支持 ONNX Runtime、DirectML、OpenVINO 和 TensorRT 后端。各后端保持相同的 PaddleOCROnnx C API,C# 调用代码通常不需要随运行时后端改变,只需安装与目标平台和设备匹配的 NuGet runtime 包。
一个应用只能选择一个与目标平台和设备匹配的 runtime 包。不要同时引用多个 runtime 包,否则同名的
PaddleOCROnnx.dll或PaddleOCROnnx.so会相互覆盖。
包的组成
应用通常需要引用以下两类 NuGet 包:
CoreOCROnnx.SDK:C# 接口、数据模型和服务实现。- 一个
CoreOCRRuntime.*包:对应平台和推理后端的原生库。
每个 runtime 包同时提供 PP-OCRv6 ONNX 示例模型、识别字典、License 申请码工具及相关说明资源。安装或发布应用后,可在应用输出内容中找到这些文件,无需另外下载示例模型。也可以改为部署自己的兼容模型。
应用的目标平台和进程架构必须与 runtime 包一致,例如 win-x64 包只能由 Windows x64 进程加载。
Windows11测试结果
| 后端 | 设备 | 状态 | 检测平均 ms | 方向分类平均 ms | 文字识别平均 ms | 全流程平均 ms | 每秒图片数 | 相对最快 |
|---|---|---|---|---|---|---|---|---|
| ONNX CPU x86 | CPU | 通过 | 26.293 | 95.720 | 115.855 | 238.765 | 4.19 | 12.30x |
| ONNX CPU x64 | CPU | 通过 | 11.736 | 34.482 | 57.742 | 104.770 | 9.54 | 5.40x |
| ONNX DirectML x86 | GPU | 通过 | 6.540 | 16.348 | 71.805 | 95.592 | 10.46 | 4.93x |
| ONNX DirectML x64 | GPU | 通过 | 8.996 | 18.127 | 138.863 | 166.732 | 6.00 | 8.59x |
| OpenVINO CPU x64 | CPU | 通过 | 24.999 | 22.288 | 84.874 | 132.912 | 7.52 | 6.85x |
| OpenVINO GPU x64 | GPU | 通过 | 18.968 | 17.993 | 46.915 | 84.635 | 11.82 | 4.36x |
| TensorRT GPU x64 | GPU | 通过 | 3.711 | 3.267 | 10.977 | 19.406 | 51.53 | 1.00x |
Ubuntu24.04测试结果
| 后端 | 设备 | 状态 | 检测平均 ms | 方向分类平均 ms | 文字识别平均 ms | 全流程平均 ms | 每秒图片数 | 相对最快 |
|---|---|---|---|---|---|---|---|---|
| ONNX CPU x64 | CPU | 通过 | 23.530978 | 4.326278 | 57.450887 | 222.980341 | 4.484700 | 1.000000 |
| OpenVINO CPU x64 | CPU | 通过 | 36.845275 | 2.991579 | 85.127946 | 322.929937 | 3.096647 | 1.448244 |
| TensorRT GPU x64 | GPU | 通过 | 3.222552 | 3.781233 | 5.115418 | 32.734582 | 30.548733 | 0.146805 |
包内附带资源
models:PP-OCRv6 tiny/small 检测和识别 ONNX 模型、文字方向分类模型及对应字典。CoreOCROnnxLicenseCode.exe:Windows 授权申请码辅助工具;Linux 用户应通过 SDK 的GetLicenseRequestCode()获取申请码。- 其他随包图片:用于显示项目交流、支持或捐赠信息,不是运行时依赖。
发布应用时请保留所选模型和字典文件。只使用自有模型时,可以按实际部署需要排除未使用的示例模型及非运行时图片。
Runtime 包列表
| 包 | 平台/架构 | 设备 | 主要模型格式 | License |
|---|---|---|---|---|
CoreOCRRuntime.Onnx.CPU.win-x86 |
Windows x86 | CPU | .onnx |
不需要 |
CoreOCRRuntime.Onnx.CPU.win-x64 |
Windows x64 | CPU | .onnx |
不需要 |
CoreOCRRuntime.Onnx.CPU.linux-x64 |
Linux x64 | CPU | .onnx |
需要授权 |
CoreOCRRuntime.DirectML.win-x86 |
Windows x86 | DirectML GPU | .onnx |
CPU不需要;使用GPU需要 |
CoreOCRRuntime.DirectML.win-x64 |
Windows x64 | DirectML GPU | .onnx |
CPU不需要;使用GPU需要 |
CoreOCRRuntime.OpenVino.CPU.win-x64 |
Windows x64 | CPU | .onnx、.xml + .bin |
不需要 |
CoreOCRRuntime.OpenVino.GPU.win-x64 |
Windows x64 | Intel GPU,也包含 CPU 插件 | .onnx、.xml + .bin |
CPU不需要;使用GPU需要 |
CoreOCRRuntime.TensorRT.GPU.win-x64 |
Windows x64 | NVIDIA GPU | .onnx、.engine、.plan |
需要GPU授权 |
CoreOCRRuntime.TensorRT.GPU.linux-x64 |
Linux x64 | NVIDIA GPU | .onnx、.engine、.plan |
需要GPU授权 |
授权规则如下:
- Windows CPU 模式免费,不要求激活 License。
- Windows 上只要启用 GPU,包括 DirectML、OpenVINO GPU 和 TensorRT,就必须先激活允许 GPU 的 License。
- Linux 上无论使用 CPU 还是 GPU,都必须先激活 License。
- NuGet 包包含运行程序和授权申请辅助工具,但不包含已激活的商业 License。
后端对比
| 后端 | 适合场景 | 优点 | 注意事项 |
|---|---|---|---|
| ONNX Runtime CPU | 通用 CPU 部署、服务器兼容性优先 | 部署简单,Windows 支持 x86/x64,Linux 支持 x64 | 不使用 GPU;Linux 仍需要 License |
| DirectML | Windows 上使用 AMD、Intel 或 NVIDIA GPU | 不依赖 CUDA,硬件覆盖广 | 仅 Windows;性能和算子支持取决于显卡及驱动;需要 GPU License |
| OpenVINO CPU | Intel/AMD x64 CPU,尤其是 Intel 平台 | CPU 推理效率高,支持 ONNX 和 OpenVINO IR | 当前包仅 Windows x64 |
| OpenVINO GPU | Windows Intel GPU | 适合 Intel 核显/独显,可在同一包内使用 CPU 插件 | GPU 指 Intel GPU,不是 CUDA/DirectML;GPU 模式需要 License |
| TensorRT | Windows/Linux NVIDIA GPU,追求吞吐和低延迟 | NVIDIA GPU 性能优先,支持 engine 缓存 | 仅 x64;需自行部署 TensorRT 11.1、CUDA 12.9 和兼容驱动;需要 GPU License |
选择建议:
- 没有 GPU 或希望最少外部依赖:选择对应平台的 ONNX CPU 包。
- Windows 通用 GPU:选择 DirectML。
- Windows Intel CPU/Intel GPU:选择 OpenVINO。
- NVIDIA GPU 且性能优先:选择 TensorRT。
- Linux CPU:选择 ONNX CPU,但仍需完成 License 激活。
原生依赖与部署
ONNX Runtime CPU
ONNX CPU runtime 包中的 ONNX Runtime 已按当前项目构建方式集成。部署时保证对应的 PaddleOCROnnx.dll 或 PaddleOCROnnx.so 被复制到应用输出目录,并安装目标系统所需的标准 C/C++ 运行环境。
DirectML
DirectML 包包含:
PaddleOCROnnx.dll
onnxruntime.dll
onnxruntime_providers_shared.dll
DirectML.dll
这些文件必须位于应用输出目录或操作系统可搜索的动态库路径中,不要只复制 PaddleOCROnnx.dll。
OpenVINO
OpenVINO 包会携带 openvino*.dll、对应设备插件和 plugins.xml。GPU 包还包含 openvino_intel_gpu_plugin.dll 和 cache.json。这些文件必须与 PaddleOCROnnx.dll 一起部署。
OpenVINO IR 模型必须传入具体的 .xml 文件,且同目录存在同名 .bin;不要把模型目录直接传给初始化接口。
TensorRT
TensorRT NuGet runtime 包不包含 NVIDIA TensorRT 和 CUDA 依赖。目标机器需要另外部署:
- TensorRT 11.1
- CUDA 12.9 Runtime
- 与 CUDA 12.9 和目标 GPU 兼容的 NVIDIA 驱动
Windows 需要确保 nvinfer_11.dll、nvonnxparser_11.dll、nvinfer_builder_resource_*.dll 和 cudart64_*.dll 位于应用目录或 PATH 中。
Linux 需要确保 libnvinfer.so.11、libnvonnxparser.so.11、builder resource 库及 libcudart.so.12 可通过系统动态库路径、LD_LIBRARY_PATH 或应用部署目录解析。可使用下面的命令检查缺失依赖:
ldd PaddleOCROnnx.so
TensorRT 从 .onnx 首次初始化时会构建并缓存 .fp32.engine,模型目录必须可写。.engine/.plan 与 TensorRT 版本、操作系统、GPU 架构和构建配置相关,不建议跨机器直接复用。
License 授权
需要授权的模式必须在 OCR 或 YOLO 初始化之前完成激活。CoreOCROnnx.SDK 提供以下接口:
string requestCode = ocrService.GetLicenseRequestCode();
bool activated = ocrService.ActivateLicense(@"D:\license\coreocr.lic");
string statusJson = ocrService.GetLicenseStatus();
推荐流程:
- 在最终部署机器上调用
GetLicenseRequestCode()获取机器授权申请码。 - Windows 也可以在最终部署机器上运行 NuGet 包随附的
CoreOCROnnxLicenseCode.exe获取申请码;Linux 请使用 SDK API。 - 登录http://ocr.axinw.com 在线申请与当前机器、平台和产品版本匹配的 License 文件。
- 应用启动时调用
ActivateLicense(licenseFile)。 - 检查返回值,并可通过
GetLicenseStatus()或GetLicenseStatusInfo()确认平台、产品版本、有效期和allow_gpu。 - 激活成功后再调用 OCR
Init/Initjson或 YOLO 初始化接口。
License 可能绑定机器、平台、产品主版本和有效期。复制到其他机器、授权过期、产品版本不匹配,或使用 GPU 但 License 未包含 GPU 权限时,初始化会失败,不会自动降级到 CPU。失败原因可通过 SDK 的 GetError() 获取。
Windows CPU 免费模式无需调用 ActivateLicense,但调用也不影响按授权状态进行管理。Linux 即使使用 ONNX CPU 包,也不能跳过激活步骤。
配置要点
use_gpu=false:Windows 的 ONNX CPU/OpenVINO CPU 使用免费 CPU 会话。use_gpu=true:Windows DirectML/OpenVINO GPU 需要允许 GPU 的 License。- TensorRT 始终使用 NVIDIA GPU,
use_gpu仅为 ABI 兼容保留,不能切换到 CPU。 gpu_id用于选择 GPU 设备,默认是0。- Windows x64 项目应明确设置为 x64,避免
Any CPU启动为 32 位进程。 - Linux runtime 当前只支持 x64。
常见问题
无法加载 PaddleOCROnnx.dll 或 PaddleOCROnnx.so
确认 runtime 包与进程架构一致,并检查后端依赖是否都能被动态加载。Windows 可检查应用输出目录和 PATH,Linux 可使用 ldd。
同时安装多个 runtime 包后文件被覆盖
每个 runtime 包都提供同名原生库,但实现后端不同。一个最终应用只保留一个 runtime 包;需要发布多个后端时,应创建独立发布目录或独立项目配置。
Windows GPU 或 Linux 初始化提示 License 未激活
先调用 GetLicenseRequestCode() 生成当前机器的申请码,取得并激活匹配平台和产品版本的 License。GPU 模式还需要 License 中 allow_gpu=true。
TensorRT 从 ONNX 初始化很慢
首次加载会选择 CUDA tactic 并构建 engine,耗时和显存占用均高于直接加载缓存。保留生成的 .fp32.engine 可加快后续启动;更换 GPU、TensorRT/CUDA 版本后应删除旧缓存并重新生成。
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.2.0 | 66 | 9/11/2026 |
| 4.1.0 | 132 | 7/15/2026 |
| 4.1.0-beta01 | 111 | 7/13/2026 |