C# PaddleOCRSharp 详细使用教程
向田欢 发布于 阅读:8
C# PaddleOCRSharp 详细使用教程
PaddleOCRSharp 是基于百度 PaddleOCR 封装的 .NET 离线 OCR 库,支持 Windows,开箱即用,无需安装 Python,可识别简体 / 繁体、中英文、数字、印章、倾斜文本,本文从环境配置、安装、基础使用、高级用法、常见问题完整讲解。
一、环境要求
系统:Windows 7/10/11(x64)
.NET 框架:.NET Framework 4.6.1+ /.NET Core 3.1 /.NET 5/6/7/8
项目平台:必须设置为 x64(AnyCPU 会报错,因为底层是 C++ 库)
二、NuGet 安装
方式 1:NuGet 包管理器搜索安装
核心包:PaddleOCRSharp
模型包(二选一,内置推理模型):
轻量版:PaddleOCRSharp.ModelsLite(体积小,速度快)
完整版:PaddleOCRSharp.Models(识别更精准,体积大)
方式 2:NuGet 命令行
powershell
Install-Package PaddleOCRSharp
Install-Package PaddleOCRSharp.ModelsLite
安装后自动复制模型文件到输出目录,无需手动放模型。
三、核心类说明
OCRParameter:OCR 参数配置(是否检测、是否识别、角度、语言等)
PaddleOCRSharp.OCR:OCR 核心实例,用于识别
OCRResult:识别结果,包含文本、置信度、坐标、角度等
四、完整基础示例(控制台)
- 项目配置
右键项目 → 属性 → 生成 → 平台目标:x64 - 代码
csharp
运行
c```csharp
using System;
using PaddleOCRSharp;
namespace PaddleOCRSharpDemo
{
class Program
{
static void Main(string[] args)
{
// 1. 初始化OCR参数
OCRParameter ocrParam = new OCRParameter
{
use_angle_cls = true, // 开启角度检测,识别倾斜文字
cls = true, // 开启方向分类
det = true, // 开启文本检测
rec = true, // 开启文本识别
lang = "ch", // 语言:ch中文,en英文
cpu_threads = 4 // CPU线程数,根据CPU核心调整
};
// 2. 创建OCR实例
using (OCR ocr = new OCR(ocrParam))
{
// 3. 识别图片
string imgPath = @"D:\test.png";
OCRResult result = ocr.DetectText(imgPath);
// 4. 解析结果
Console.WriteLine($"识别到 {result.TextBlocks.Count} 个文本块");
foreach (var block in result.TextBlocks)
{
Console.WriteLine($"文本:{block.Text}");
Console.WriteLine($"置信度:{block.Confidence:F4}");
Console.WriteLine($"坐标:{string.Join(",", block.BoxPoints)}");
Console.WriteLine("————————————");
}
}
Console.ReadKey();
}
}
}
五、高级用法
1. 识别 Bitmap 图片(内存识别,不保存文件)
```csharp
csharp
运行
using System.Drawing;
// 加载Bitmap
using (Bitmap bmp = new Bitmap(@"D:\test.png"))
{
OCRResult result = ocr.DetectText(bmp);
}
- 只识别单行文本(不检测,速度极快)
适合身份证号码、验证码、单行文字,关闭 det 检测csharp 运行 OCRParameter ocrParam = new OCRParameter { det = false, // 关闭检测 rec = true, use_angle_cls = false }; // 单行识别,直接返回文本 string text = ocr.RecognizeTextSingleLine(bmp); - 识别印章文字
csharp 运行 OCRParameter ocrParam = new OCRParameter { use_stamp = true, // 开启印章识别 use_angle_cls = true }; - 繁体识别
csharp 运行 ocrParam.lang = "chinese_cht"; - 批量识别文件夹图片
csharp 运行 using System.IO; var files = Directory.GetFiles(@"D:\imgs", "*.png"); foreach (var file in files) { var res = ocr.DetectText(file); Console.WriteLine($"{Path.GetFileName(file)}:{res.Text}"); }六、OCRParameter 常用参数详解
表格
参数 类型 说明
use_angle_cls bool 是否开启角度检测,倾斜文字必开
cls bool 文本方向分类
det bool 文本检测,单行识别可关闭
rec bool 文本识别
lang string ch = 简体,en = 英文,chinese_cht = 繁体
cpu_threads int CPU 线程,推荐 2-8
use_stamp bool 是否识别印章
show_log bool 是否输出日志
七、WinForm/WPF 使用注意
必须 x64 平台,AnyCPU 直接报错
释放资源:using(OCR ocr = new OCR()) 或手动Dispose(),避免内存泄漏
不要频繁 new OCR 实例,全局单例即可,初始化耗时较长
八、常见报错与解决 - 无法加载 DLL"PaddleOCR.dll"
原因:项目平台是 AnyCPU/x86
解决:项目属性 → 生成 → 平台目标改为 x64 - 模型文件缺失
解决:安装ModelsLite或Models包,复制模型到输出目录
手动部署:把inference文件夹放到 exe 同级目录 - 识别慢
开启单行模式:det=false
减少线程:cpu_threads=2
使用 Lite 轻量模型 - 识别乱码 / 空白
图片模糊:提高图片分辨率
角度问题:开启use_angle_cls=true
语言不对:简体用ch
九、自定义模型(进阶)
如果内置模型识别不准,可替换自定义 PaddleOCR 推理模型:csharp 运行 OCRParameter param = new OCRParameter(); param.det_model_dir = @"自定义检测模型路径"; param.rec_model_dir = @"自定义识别模型路径"; param.cls_model_dir = @"自定义方向模型路径";