Azure认知服务之表单识别器
認知服務
Azure 認知服務的目標是幫助開發人員創建可以看、聽、說、理解甚至開始推理的應用程序。Azure 認知服務中的服務目錄可分為五大主要支柱類別:視覺、語音、語言、Web 搜索和決策。開發人員使用 Azure 認知服務能夠輕松地將認知功能添加到其應用程序中。
Azure認知服務主要包含:人臉、表單識別、墨跡識別等內容。上次已經介紹過人臉識別服務了,這次介紹下表單識別器如何使用。
表單識別器
Azure 表單識別器是一個認知服務,該服務使用機器學習技術從表單文檔中識別和提取文本、鍵值對和表數據。它會引入表單中的文本并輸出包含原始文件中的關系的結構化數據。可以快速獲取根據特定內容定制的準確結果,無需進行繁瑣的手動干預,也不需要具備豐富的數據科學專業知識。表單識別器由自定義模型、預生成的收據模型和布局 API 組成。可以使用 REST API 調用表單識別器模型,以降低復雜性,并將該模型集成到工作流或應用程序中。
引用自微軟Azure文檔
新建表單識別器資源
新建一個表單識別器的資源。表單識別器也是一項免費服務,免費定價策略為:500頁/月,識別頻率在20次/分鐘,訓練頻率1次/分鐘。區域選離你最近的,然后取個名字。
查看秘鑰跟終結點
創建完成后,點擊側邊菜單密鑰跟終結點,查看密鑰跟終結點信息,等下調用SDK的時候需要使用。
新建一個WPF程序
我們還是新建一個WPF程序來演示如果使用表單識別的SDK。新建一個WPF程序,然后放置一個按鈕,點擊按鈕選擇一個文件,對這個文件進行識別并把識別的結果顯示在文本框內。
安裝SDK
使用nuget進行安裝:
Install-Package Azure.AI.FormRecognizer -Version 1.0.0-preview.4修改MainWindow.xaml
<Window x:Class="FormRecognizer.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:FormRecognizer"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><TextBox x:Name="tbxContent" HorizontalAlignment="Left" Height="344" Margin="10,10,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="772"/><Button Content="選擇文件" HorizontalAlignment="Left" Margin="10,373,0,0" VerticalAlignment="Top" Width="75" Click="SelectFile_Click"/></Grid> </Window>修改MainWindow.xaml,在界面上放置一個按鈕來選擇文件,放置一個文本框顯示內容。界面如下:
選擇識別文件
private async void SelectFile_Click(object sender, RoutedEventArgs e){var openFileDialog = new OpenFileDialog();openFileDialog.ShowDialog();var file = openFileDialog.FileName;this.tbxContent.Text = "正在識別";var result = await StartRecognize(file);foreach (var page in result.Value){this.tbxContent.Text += $"第{page.PageNumber}頁" + "\r\n";for (int tableIndex = 0; tableIndex < page.Tables.Count; tableIndex++){this.tbxContent.Text += $"表{tableIndex + 1}" + "\r\n";var table = page.Tables[tableIndex];foreach (var cell in table.Cells){this.tbxContent.Text += $"行:{cell.RowIndex} 列:{cell.ColumnIndex} 內容:{cell.Text}" + "\r\n";}}}}選擇一個文件,然后調用StartRecognize方法進行識別,對識別的結果進行顯示。識別的PDF文件如下:
使用SDK進行識別
private async Task<Response<FormPageCollection>> StartRecognize(string file){string endpoint = "https://xxxx.cognitiveservices.azure.com/";string apiKey = "xxxx";var credential = new AzureKeyCredential(apiKey);var recognizerClient = new FormRecognizerClient(new Uri(endpoint), credential);Response<FormPageCollection> formPages = await recognizerClient.StartRecognizeContentAsync(File.OpenRead(file)).WaitForCompletionAsync();return formPages;}直接調用StartRecognizeContentAsync進行識別,等待一會就會有結果。
運行一下
讓我們運行一下看看吧:
總結
使用Azure的認知服務進行表單識別可以輕松的對JPG,PNG,PDF等非結構化的數據進行數據采集,從而轉換成結構化數據進行儲存以及分析。表單識別器支持無需訓練的識別,如果復雜表單還可以進行自定義模型的訓練,從而提高識別精度。但是目前好像還不支持中文,后續再研究吧。
關注我的公眾號一起玩轉技術
總結
以上是生活随笔為你收集整理的Azure认知服务之表单识别器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你以为.NET Core仅仅是开源跨平台
- 下一篇: 配置文件中的数据库连接串加密了,你以为我