介绍
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 添加依赖,如下图:
下载模型
下载模型,解压后,放到 debug目录,如下图:
工具类
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 ;
}
}

