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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CSharp 如何OCR离线识别文本

發布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CSharp 如何OCR离线识别文本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WPF開發者QQ群:?340500857? | 微信群 -> 進入公眾號主頁?加入組織

?? ? ?由于微信群人數太多入群請添加小編微信號

(yanjinhuawechat)或(W_Feng_aiQ)入群

(需備注WPF開發者

本項目是基于開源項目PaddleOCR的C++代碼修改并封裝的.NET庫,包含文本OCR功能。同時也提供了C++的調用示例代碼,可以供C++開發者使用。

PaddleOCR.dll文件是基于開源項目PaddleOCR的C++代碼修改的C++動態庫,基于opencv的x64編譯而成的。

為了降低部署文件大小,PaddleOCR.dll使用了openblas依賴編譯,paddle_inference.dll是官方提供的openblas模式下的庫。

模型庫支持輕量版(本項目)、服務器版模型庫(更準確),可以自行更改模型庫適用實際需求。

PS:有更好的方式歡迎推薦。

01

使用方式

文件夾結構

Cpp //PaddleOCR.dll的頭文件和庫文件,方便C++調用PaddleOCR.dll

一、C++代碼如下。

#include <iostream> #include <Windows.h> #include "include/PaddleOCR.h" #include "include/OCRResult.h" #include <tchar.h> #include "string" #pragma comment (lib,"PaddleOCR.lib") using namespace std; int main() {LpOCRResult lpocrreult;modeldata md;OCRParameter parameter;char path[MAX_PATH];GetCurrentDirectoryA(MAX_PATH, path);string cls_infer(path);cls_infer += "\\inference\\ch_ppocr_mobile_v2.0_cls_infer";string rec_infer(path);rec_infer += "\\inference\\ch_PP-OCRv2_rec_infer";string det_infer(path);det_infer += "\\inference\\ch_PP-OCRv2_det_infer";string ocrkeys(path);ocrkeys += "\\inference\\ppocr_keys.txt";string imagefile(path);imagefile += "\\test.png";md.cls_infer = const_cast<char*>(cls_infer.c_str());md.rec_infer = const_cast<char*>(rec_infer.c_str());md.det_infer = const_cast<char*>(det_infer.c_str());md.keys = const_cast<char*>(ocrkeys.c_str());md.imagefile = const_cast<char*>(imagefile.c_str());int cout =Detect(md.det_infer, md.cls_infer, md.rec_infer, md.keys, md.imagefile, parameter, &lpocrreult);for (size_t i = 0; i < cout; i++){wstring ss =(WCHAR*)(lpocrreult->pOCRText[i].ptext);std::wcout <<ss;}FreeDetectMem(lpocrreult); }

二、添加引用PaddleOCRSharp.dll System.Drawing.dll?

運行需要用的庫文件目錄如下。

PaddleOCRLib //OCR運行需要的文件 |--inference //OCR的模型庫文件夾 |--openblas.dll //第三方引用庫 |--paddle_inference.dll //飛槳庫 |--PaddleOCR.dll //基于開源項目PaddleOCR修改的C++動態庫 PaddleOCRSharp //.NET封裝庫

二、新建?MainWindow.xaml 代碼點擊按鈕調用OCR識別如下

using PaddleOCRSharp; private void button1_Click(object sender, EventArgs e){OpenFileDialog ofd = new OpenFileDialog();ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";if (ofd.ShowDialog() != DialogResult.OK) return;var imagebyte = File.ReadAllBytes(ofd.FileName);Bitmap bitmap = new Bitmap(new MemoryStream(imagebyte));OCRResult ocrResult = PaddleOCRSharp.PaddleOCRHelper.DetectText(bitmap);if (ocrResult != null){MessageBox.Show(ocrResult.Text,"識別結果");}}

02


效果預覽

鳴謝素材提供者 - 饒玉田

源碼地址如下

gitee:https://gitee.com/raoyutian/paddle-ocrsharp

WPF開發者QQ群:?340500857?

掃一掃關注我們,

更多知識早知道!

點擊閱讀原文可跳轉至源代碼

總結

以上是生活随笔為你收集整理的CSharp 如何OCR离线识别文本的全部內容,希望文章能夠幫你解決所遇到的問題。

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