Azure認知服務之使用墨跡識別功能識別手寫漢字

2022-01-10 09:39:19 字數 2644 閱讀 6482

前面我們使用azure face實現了人臉識別、使用azure**識別器提取了**裡的資料。這次我們試試使用azure墨跡識別api來對筆跡進行識別。

墨跡識別器認知服務提供基於雲的 rest api 用於分析和識別數字墨跡內容。 與使用光學字元識別 (ocr) 的服務不同,該 api 需要使用數字墨跡筆劃資料作為輸入。 數字墨跡筆劃是 2d 點(x,y 座標,表示數字手寫筆或手指的動作)的時序集。 然後,墨跡識別器會識別輸入中的形狀和手寫內容,並返回包含所有已識別實體的 json 響應。

引用自微軟文件

它不是ocr對影象進行識別,而是對墨跡資料進行識別。墨跡資料的原理主要是一些手寫輸入裝置,比如平板,手寫板等。

跟前面的內容一樣,在portal控制台找到墨跡識別功能,點選建立,取乙個例項名。墨跡識別也是乙個免費服務,定價選f0方案,額度為5次/分,20000事務/月。

我們呼叫墨跡識別api需要秘鑰跟終結點資訊。點選選單「金鑰和終結點」檢視資訊。

我們這次同樣實現乙個wpf小程式。介面上放置乙個inkcanvas用來手寫,乙個文字框用來顯示識別的文字,乙個按鈕用來觸發識別。

修改mainwindow.xaml為如下**:

開始識別

注意:inkcanvas控制項需要使用的是microsoft.toolkit.wpf.ui.controls包下的,如果本地沒有使用nuget進行安裝

inkcanvas load事件裡設定輸入裝置的型別:

private void inkcanvas_loaded(object sender, routedeventargs e)

先定義幾個模型用來儲存墨跡資料:

public class inkstroke

public string points

}public class inkdata

public liststrokes

}

從inkcanvas獲取墨跡資料組裝成inkdata:

private inkdata getinkdata()

inkstorke.points = sb.tostring().trimend(',');

data.strokes.add(inkstorke);

}return data;

}private listconvertpixelstomillimeters(ireadonlylistpointsinpixels)

return transformedinkpoints;

}

這裡需要前面複製好的金鑰跟終結點位址。識別其實很簡單,就是把墨跡資料轉換成json後給伺服器發生乙個put請求,識別成功後就會返回乙個json字串的結果。

private async taskinkrec(inkdata data)

)else

";return err;}}

}

識別成功後,結果會以json字串的形式進行返回。結果是乙個陣列,裡面存放了每乙個筆跡的識別結果,以及最終的識別結果。

結果示例:

,,,,],"boundingrectangle":,"category":"inkword","class":"leaf","id":4,"parentid":3,"recognizedtext":"乘","rotatedboundingrectangle":[,,,],"strokeids":[0,1,2,3,4,5,6,7,8,9]},,,,,],"boundingrectangle":

}public class inkrecresponseunit

public string recognizedtext

}private async void button_inkrec(object sender, routedeventargs e)

我們的程式寫好了,執行一下。在canvas上隨便寫上幾個漢字點選識別按鈕。字雖然醜了點,但是結果還是完美的。

使用azure墨跡識別可以輕鬆的識別手寫輸入裝置的筆跡。墨跡識別功能並不是見到的orc識別,它可以對每乙個筆畫進行識別,提供候選結果。以上**雖然多,其實主要是獲取墨跡資料比較麻煩,其實真正識別墨跡只是乙個http put請求而已,這是非常簡單的。有了這個api我們可以實現很多創意,比如稍微改進下上面的**就可以實現手寫文字的連續識別功能,一邊寫一邊不斷的識別,封裝進平板就是一款可以實時識別手寫板啦。

Azure 認知服務 1 概述

windows azure platform 系列文章目錄 在筆者之前的文章中,介紹的都是azure infrastructure as a service iaas 和platform as a service paas 的內容。主要偏向於開發人員和運維人員,如何使用微軟雲計算的相關能力。其實az...

微軟增強了Azure認知服務

微軟正在為公司的azure雲平台上的開發人員引入新的人工智慧功能。azure認知服務的一項增強功能稱為 決策 它針對特定使用者提供了更好的決策建議。azure認知服務是針對智慧型演算法的api的集合,開發人員可以利用它們來執行影象識別,語音識別,自然語言處理,異常檢測和其他智慧型任務。決策新增了一項...

在Azure上使用SQL服務

1.首先請先登入windows azure 管理使用者介面 並輸入您的帳號資訊 2.選擇資料庫 選擇您的訂閱 點選 建立新伺服器 3.在彈出的 建立新伺服器 視窗裡選擇您要建立伺服器所在資料中心位置,我們選擇 east asia 隨後點選 下一步 按鈕。4.隨後輸入管理員帳號和密碼。管理員帳號是用來...