C# 文字識(shí)別(OCR)
共 1668字,需瀏覽 4分鐘
·
2022-02-09 17:41
在上一篇中已經(jīng)實(shí)現(xiàn)了自定義截圖,這一篇接著來把最后的功能完善,將截取下來的圖片做文字識(shí)別。
有現(xiàn)成并且好用的輪子,能用就用,若無必要,還是少造為好(反正我懶)。。。
所以我們采用使用百度OCR的SDK來實(shí)現(xiàn)。大家可以自己去 百度AI開放平臺(tái),找到文字識(shí)別的項(xiàng)目看看,然后拿到api_key和secret_key即可,具體的SDK文檔可以在官網(wǎng)詳細(xì)查看。
實(shí)現(xiàn)功能:
截圖并識(shí)別圖片中的文字
開發(fā)環(huán)境:
開發(fā)工具:Visual Studio 2013
.NET Framework版本:4.5
實(shí)現(xiàn)代碼:
//從官網(wǎng)下載AipSdk.dll引用到自己項(xiàng)目
//填寫自己賬號(hào)的api_key和secret_keystring api_key = "", secret_key = "";
//文字識(shí)別private void lbOcr_Click(object sender, EventArgs e){ //設(shè)置鼠標(biāo)等待 this.Cursor = Cursors.WaitCursor; string text = ""; //獲取到截取的圖片 Bitmap clipBmp = SuccessCap(); if (clipBmp != null) { byte[] imgBytes = ImageToByte(clipBmp); //ocr var client = new Baidu.Aip.Ocr.Ocr(api_key, secret_key); JObject result = client.GeneralBasic(imgBytes, null); if ((int)result["words_result_num"] > 0) { JArray jarr = (JArray)result["words_result"]; foreach (JToken jtoken in jarr) { text += jtoken["words"] + "\r\n"; } } else { text = "未識(shí)別到文字"; } Form3 frm = new Form3(text); frm.Show(); this.Close(); } else { MessageBox.Show("請選擇正確的圖片"); }
}
//圖片轉(zhuǎn)byte[]public byte[] ImageToByte(Bitmap inImg){ MemoryStream mstream = new MemoryStream(); inImg.Save(mstream, ImageFormat.Bmp); byte[] bytes = new Byte[mstream.Length]; mstream.Position = 0; mstream.Read(bytes, 0, bytes.Length); mstream.Close(); return bytes;}實(shí)現(xiàn)效果:
首先吐槽下百度OCR,從一開始的不限量到每月1000,著實(shí)降的受不了(百度一貫作風(fēng)),不過自己用的話就將就一下吧。也可以選擇其他平臺(tái)或者。。。pandlepandle考慮一下
我頁面寫的不太美觀(其實(shí)就是丑),有想法的話自己美化吧。代碼我也上傳了,可以直接私信:文字識(shí)別 獲取下載地址。
由簡入繁,拿來即用
后續(xù)精彩,持續(xù)關(guān)注
歡迎關(guān)注公眾號(hào): dotnet編程大全
技術(shù)群: 需要進(jìn)技術(shù)群的添加小編微信mm1552923,備注:加群;
評論
圖片
表情
