«

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:识别结果,包含文本、置信度、坐标、角度等
四、完整基础示例(控制台)

  1. 项目配置
    右键项目 → 属性 → 生成 → 平台目标:x64
  2. 代码
    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);
}
  1. 只识别单行文本(不检测,速度极快)
    适合身份证号码、验证码、单行文字,关闭 det 检测
    csharp
    运行
    OCRParameter ocrParam = new OCRParameter
    {
    det = false,  // 关闭检测
    rec = true,
    use_angle_cls = false
    };
    // 单行识别,直接返回文本
    string text = ocr.RecognizeTextSingleLine(bmp);
  2. 识别印章文字
    csharp
    运行
    OCRParameter ocrParam = new OCRParameter
    {
    use_stamp = true, // 开启印章识别
    use_angle_cls = true
    };
  3. 繁体识别
    csharp
    运行
    ocrParam.lang = "chinese_cht";
  4. 批量识别文件夹图片
    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 实例,全局单例即可,初始化耗时较长
    八、常见报错与解决

  5. 无法加载 DLL"PaddleOCR.dll"
    原因:项目平台是 AnyCPU/x86
    解决:项目属性 → 生成 → 平台目标改为 x64
  6. 模型文件缺失
    解决:安装ModelsLite或Models包,复制模型到输出目录
    手动部署:把inference文件夹放到 exe 同级目录
  7. 识别慢
    开启单行模式:det=false
    减少线程:cpu_threads=2
    使用 Lite 轻量模型
  8. 识别乱码 / 空白
    图片模糊:提高图片分辨率
    角度问题:开启use_angle_cls=true
    语言不对:简体用ch
    九、自定义模型(进阶)
    如果内置模型识别不准,可替换自定义 PaddleOCR 推理模型:
    csharp
    运行
    OCRParameter param = new OCRParameter();
    param.det_model_dir = @"自定义检测模型路径";
    param.rec_model_dir = @"自定义识别模型路径";
    param.cls_model_dir = @"自定义方向模型路径";