C# 使用PaddleOCRSharp识别图片文字 作者:马育民 • 2025-07-02 13:42 • 阅读:10003 # 介绍 PaddleOCRSharp是一个.NET的OCR工具本地类库,可离线使用。包含文本识别、文本检测、表格识别功能。 底层是百度飞桨PaddleOCR 官方网址: https://gitee.com/raoyutian/PaddleOCRSharp/ https://github.com/raoyutian/PaddleOCRSharp ### 特点 ★ 高度集成:PaddleOCRSharp将百度飞桨PaddleOCR的核心功能完美集成到.NET平台,让开发者无需关心底层实现,只需调用相应接口即可实现OCR功能。 ★ 性能卓越:得益于百度飞桨PaddleOCR的高效算法和对PaddleOCR代码的部分算法优化,PaddleOCRSharp在保持高度集成的同时,也保证了卓越的性能表现。 ★ 易于使用:PaddleOCRSharp提供了丰富的API接口和详细的文档说明,让开发者能够轻松上手,快速实现OCR功能。 ★ 扩展性强:PaddleOCRSharp支持自定义模型加载和训练,开发者可以根据自己的需求进行模型扩展和优化。 ★ 离线免费:PaddleOCRSharp支持离线绿色部署,无其他依赖需要安装,满足了众多开发者的福音。 # 使用 官方网址: https://gitee.com/raoyutian/PaddleOCRSharp/blob/master/doc/UseInCsharp.md ### 添加依赖 通过 nuget 添加依赖,如下图: [](https://www.malaoshi.top/upload/0/0/1GW1Psz80Soj.png) ### 下载模型 下载模型,解压后,放到 debug目录,如下图: [](https://www.malaoshi.top/upload/0/0/1GW1Pt1XGHls.png) ### 工具类 ``` public class PaddleOCRUtil { // 模型根目录 public static readonly string MODEL_PATH_ROOT = "ch_PP-OCRv4"; // 初始化OCR引擎 private PaddleOCREngine engine ; public PaddleOCRUtil() { init(); } private void init() { OCRModelConfig config = null; //中英文模型V4 config = new OCRModelConfig(); string modelPathroot = Path.Combine(System.Environment.CurrentDirectory, MODEL_PATH_ROOT ); // 文本检测 det_infer模型路径 config.det_infer = modelPathroot + @"\ch_PP-OCRv4_det_infer"; // 文本角度检测cls_infer模型路径 config.cls_infer = modelPathroot + @"\ch_ppocr_mobile_v2.0_cls_infer"; // 文本识别rec_infer模型路径 config.rec_infer = modelPathroot + @"\ch_PP-OCRv4_rec_infer"; //ppocr_keys.txt文件名全路径 config.keys = modelPathroot + @"\ppocr_keys.txt"; //OCR参数 OCRParameter oCRParameter = new OCRParameter(); oCRParameter.cpu_math_library_num_threads = 10;//预测并发线程数 oCRParameter.enable_mkldnn = true; oCRParameter.cls = false; //是否执行文字方向分类;默认false oCRParameter.det = true;//是否执行文字检测,单行文本可以关闭该参数来提高速度 oCRParameter.det_db_score_mode = true;//是否使用多段线,即文字区域是用多段线还是用矩形, oCRParameter.max_side_len = 1500; oCRParameter.rec_img_h = 48; oCRParameter.rec_img_w = 320; oCRParameter.det_db_thresh = 0.3f; oCRParameter.det_db_box_thresh = 0.618f; engine = new PaddleOCREngine(config, oCRParameter); } public string DetectText(string imgPath) { OCRResult ocrResult = engine.DetectText(imgPath); return ocrResult.Text ; } } ``` 原文出处:http://malaoshi.top/show_1GW1Pt1yLW8z.html