PaddleSharp是PaddleInference C API的C#封裝版本,支持在 Windows(x64)、NVIDIA GPU和Linux(Ubuntu-20.04 x64)中使用。PaddleShare主要包括PaddleOCR 和PaddleDetection,其中PaddleOCR 支持14種語言的文字,支持識別多種旋轉(zhuǎn)角度的文字,PaddleDetection支持PPYolo檢測模型和PicoDet模型(關(guān)于PaddleSharp的詳細介紹見參考文獻1)。
可以通過NuGet管理器下載PaddleSharp相關(guān)的包,最開始以為包名是以PaddleSharp開頭,結(jié)果在NuGet管理器中什么都搜不到,在GitHub的PaddleSharp主頁中,列出了PaddleSharp相關(guān)的包清單(如下圖所示),其都以Sdcb開頭,這些包在NuGet管理器中都可以搜索安裝。
本文主要測試用C#調(diào)用PaddleSharp的PaddleOCR進行圖片文字識別,參考文獻2的PaddleOCR使用說明中列出了要安裝的包清單,在VS中安裝以下包(最初不想裝這么多,就只安裝了Sdcb.PaddleOCR,雖然程序可以編譯通過,也可以運行,但是識別圖片文字過程中會一直提示缺少下拉包清單中的某些,最終要想正常識別圖片文字,還是需要把下面這些包都裝全)。
Sdcb.PaddleInference
Sdcb.PaddleInference.runtime.win64.mkl
Sdcb.PaddleOCR
Sdcb.PaddleOCR.KnownModels
OpenCvSharp4
OpenCvSharp4.runtime.win
參照參考文獻2中的示例代碼進行功能測試(詳細代碼請到文獻中查看,這里就不貼出來了),其代碼順序主要是加載模型->加載圖片->識別文字->顯示結(jié)果。這里主要說一下跟使用PaddleOCRSharp的不同點,由于都是簡單測試,說的都是比較簡單的。
PaddleOCRSharp和PaddleSharp都是其它語言編寫的ocr功能的C#封裝版本,相比之下PaddleOCRSharp封裝的更簡單一些。通過NuGet安裝PaddleOCRSharp,會把依賴文件自動下載并關(guān)聯(lián)到項目上,而PaddleSharp需要手動安裝所有需要的包。
PaddleOCRSharp執(zhí)行所需的模型在安裝包時同步下載并關(guān)聯(lián)到項目上,而PaddleSharp,從測試代碼來看,其默認從C:\Users\HP\AppData\Roaming\paddleocr-models\ppocr-v2文件夾中讀取所需的模型,如果不存在,則實時從網(wǎng)上下載的,OCRModel對象中記錄了各類模型的下載路徑(實際執(zhí)行過程中,由于下載速度一般,直接用迅雷手動下載并復制到對應文件夾中)。
OCRModel model = KnownOCRModel.PPOcrV2;await model.EnsureAll();
還有就是識別圖片文字時,PaddleOCRSharp封裝了一下,只需在程序中指定圖片路徑、圖片字節(jié)數(shù)組或Image對象即可,而PaddleSharp識別圖片的函數(shù),PaddleOcrAll.Run,需要將圖片轉(zhuǎn)成指定的Mat對象。
PaddleSharp識別的結(jié)果包括兩類,PaddleOcrResult.Text中將識別出的所有文字合并為一個字符串,PaddleOcrResult.Regions中保存識別出的每個文本塊。
文本塊類型為PaddleOcrResultRegion,其中Rect(類型為RotatedRect)保存包含文本的矩形位置信息(該矩形可能是非水平或垂直的)。RotatedRect類的定義如下圖所示,其中BoundingRect函數(shù)返回包含旋轉(zhuǎn)矩形的矩形。以下面的圖片為例PaddleOcrResultRegion.Rect為紅色矩形,而BoundingRect()返回的是紫色矩形。同時RotatedRect類的Points函數(shù)返回旋轉(zhuǎn)矩形的四個角的點位置信息,可以通過繪制線條方式繪制包含文本的旋轉(zhuǎn)矩形,這樣簡單一些。
最后列出測試圖片的識別效果(使用參考文獻中的示例代碼,文本塊基本都圈出來了,但其中的內(nèi)容有部分沒有正確識別)。
參考文獻
[1]https://github.com/sdcb/PaddleSharp
[2]https://github.com/sdcb/PaddleSharp/blob/master/docs/ocr.md
測試圖片來源
[1]https://baijiahao.baidu.com/s?id=1676249081188736513&wfr=spider&for=pc
[2]https://www.xjauto.net/html/cheping/202105/69508.html
[3]https://item.jd.com/10041422363991.html?openbpab=dontwritecookie&uabt=92_16_21&cu=true&utm_source=image.baidu.com&utm_medium=tuiguang&utm_campaign=t_1003608409_&utm_term=1a1dd3a2f0b24eaab2325b16b12d3d8d
[4]http://news.sohu.com/a/524033869_121124363
該文章在 2023/9/4 12:41:21 編輯過