Azure認知服務之使用墨跡識別功能識別手寫漢字
阿新 • • 發佈:2020-08-20
前面我們使用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