日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

我做的百度飞桨PaddleOCR .NET调用库

發布時間:2023/12/4 asp.net 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我做的百度飞桨PaddleOCR .NET调用库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? .NET Conf 2021中國我做了一次《.NET玩轉計算機視覺OpenCV》的分享,其中提到了一個效果特別好的OCR識別引擎——百度飛槳PaddleOCR,后來我逐步把它封裝了一下,代碼全部開源(可點擊查看原文跳轉到Github):https://github.com/sdcb/paddlesharp,可以直接安裝NuGet包使用,支持.NET Framework/.NET Core、支持Linux、支持GPU調用,支持14種語言模型的自動下載:

這里有使用方法和示例代碼:

運行效果:

促使我給PaddleOCR做.NET封裝的原因,是PaddleOCR令人驚訝的識別精度。我之前用過TesseractOCR,看到有人說是“世界上唯一”免費且好用的OCR引擎,但我發現它不好用,它的精度一直介于“可用”與“不可用”之間,處于勉強可用的狀態——即使是我使用了Best的TesseractOCR模型也是如此(而且性能也不快)。

比如你看這個例子,用TesseractOCR跑的,耗時48秒,英語和數字識別還是可圈可點的,但中文……里面有空格不說,而且大量識別錯誤,非常不通順,詮釋了什么叫“介于可用與不可用之間”。

但PaddleOCR不同,去看看官網示例,全部都是效果爆炸的感覺,最令人我驚訝的是它的精度,尤其是文字在旋轉的狀態下的精度:

上文中同樣的例子,在PaddleOCR中的執行結果:

可見精度好得多,耗時也只要9秒。

我是怎么封裝的?

我發現市場上有人封裝過,但他們都是基于C++ API,然后自己寫了一層C++,然后包裝成C API進行封裝。這樣的好處是暴露出來的C API比較簡單,調用起來很方便,但缺點是不方便擴展,使用起來笨重得多,跨平臺也很難。

基于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,注意這個擴展包與上述包沒有任何引用關系。

  • 有了這些包,我做出來的這個封裝就比其它封裝更有競爭力,比如能支持GPU或者不支持GPU,比如支持Linux平臺,比如更換不同的模型,比如支持設置不同的參數——用戶甚至可以不基于我提供的應用包,自己去使用自己的邏輯封裝PaddleOCR或者其它應用。

    這幾天我參與了百度飛槳的一個車牌號識別的3天訓練營,我發現可以從百度的BML平臺下載模型之后,只需簡短的改動就能將我的PaddleSharp改成支持車牌號識別:

    我發現通過這些綿薄之力,能為.NET社區帶來一些方便。比如有客戶已經用上我的包,做了一個Word插件,是付費產品,效果很不錯:

    這些內容都是開源的:https://github.com/sdcb/paddlesharp,各位可以點擊閱讀原文跳轉到Github,喜歡的朋友請給我一個star哦。

    另外我還創建了一個QQ群,C#/.NET計算機視覺技術交流,里面也包括有關這個PaddleSharp的使用、部署答疑和技術討論,歡迎有興趣的同行一起參與!

    總結

    以上是生活随笔為你收集整理的我做的百度飞桨PaddleOCR .NET调用库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。