受欢迎的博客标签

.NET OCR识别引擎——百度飞桨PaddleOCR

Published

 

效果特别好的百度OCR识别引擎——百度飞桨PaddleOCR

可离线部署

PaddleOCR精度高,

文字在旋转的状态下的精度高

 

识别文字

识别表格

 

封装

把它封装了一下,代码开源Github:https://github.com/sdcb/paddlesharp,

可以直接安装NuGet包使用,

支持.NET Framework/.NET Core、支持Linux、支持GPU调用,

支持14种语言模型的自动下载

 

怎么封装的

基于C API使用起来不方便,但上层不是有咱们.NET/C#嘛,我相信再不方便的API,只要用上了C#/.NET去封装它,都能做得很方便地去调用。

做出了这样的一个架构(这个架构本质是模仿了OpenCvSharp4)
最底层是C API的NuGet封装包,这个用PInvoke来封装C API,它的NuGet包名字是:Sdcb.PaddleInference
与底层配套的包叫native binding包,提供了两个,一个是基于CPU的Sdcb.PaddleInference.runtime.win64.mkl,一个是基于GPU的Sdcb.PaddleInference.runtime.win64.cuda11_cudnn8_tr7。

值得注意的是,native binding包与低层包没有任何依赖关系。
再往上层是应用包,应用包依赖于低层的推理库包Sdcb.PaddleInference,文字识别OCR就是Paddle推理库Inference的一个应用,因此提供了一个Sdcb.PaddleOCR,封装了PaddleDetector、PaddleClassificator、PaddleRecognizor以及PaddleOcrAll用来做串联

最往上层走就是扩展包,我提供了一个用于帮助用户自动下载OCR模型的Sdcb.PaddleOCR.KnownModels,注意这个扩展包与上述包没有任何引用关系。