1. 程式人生 > >Azure認知服務之使用墨跡識別功能識別手寫漢字

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

前面我們使用Azure Face實現了人臉識別、使用Azure表格識別器提取了表格裡的資料。這次我們試試使用Azure墨跡識別API來對筆跡進行識別。 ## 墨跡識別 墨跡識別器認知服務提供基於雲的 REST API 用於分析和識別數字墨跡內容。 與使用光學字元識別 (OCR) 的服務不同,該 API 需要使用數字墨跡筆劃資料作為輸入。 數字墨跡筆劃是 2D 點(X,Y 座標,表示數字手寫筆或手指的動作)的時序集。 然後,墨跡識別器會識別輸入中的形狀和手寫內容,並返回包含所有已識別實體的 JSON 響應。 ![](https://docs.microsoft.com/zh-cn/azure/cognitive-services/ink-recognizer/media/ink-recognizer-pen-graph.svg) > 引用自[微軟文件](https://docs.microsoft.com/zh-cn/azure/cognitive-services/ink-recognizer/overview) 它不是ocr對影象進行識別,而是對墨跡資料進行識別。墨跡資料的原理主要是一些手寫輸入裝置,比如平板,手寫板等。 ## 建立墨跡識別資源 跟前面的內容一樣,在portal控制檯找到墨跡識別功能,點選建立,取一個例項名。墨跡識別也是一個免費服務,定價選F0方案,額度為5次/分,20000事務/月。 ![d8uQJI.png](https://s1.ax1x.com/2020/08/20/d8uQJI.png) ## 獲取祕鑰和終結點 我們呼叫墨跡識別API需要祕鑰跟終結點資訊。點選選單“金鑰和終結點”檢視資訊。 ![d8ulWt.png](https://s1.ax1x.com/2020/08/20/d8ulWt.png) ## 新建一個WPF專案 我們這次同樣實現一個WPF小程式。介面上放置一個InkCanvas用來手寫,一個文字框用來顯示識別的文字,一個按鈕用來觸發識別。 ![d31qhj.png](https://s1.ax1x.com/2020/08/20/d31qhj.png) ### MainWindow.xaml 修改MainWindow.xaml為如下程式碼: ``` ``` > 注意:InkCanvas控制元件需要使用的是Microsoft.Toolkit.Wpf.UI.Controls包下的,如果本地沒有使用nuget進行安裝 ### 採集墨跡 inkCanvas load事件裡設定輸入裝置的型別: ``` private void inkCanvas_Loaded(object sender, RoutedEventArgs e) { inkCanvas.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Pen | CoreInputDeviceTypes.Touch; } ``` 先定義幾個模型用來儲存墨跡資料: ``` public class InkStroke { public int id { get; set; } public string points { get; set; } } public class InkData { public string language { get; set; } public List