はじめに
最近Azure Form Recognizerを利用する機会があり、アプリケーションから利用するためにC#のSDKが必要でした。今回の記事ではその利用方法について書きます。
Form Recognizerとは、ドキュメントから必要なテキストやデータを抽出することができるAzureのサービスです。詳しくは以下の公式ドキュメントをご覧ください。
環境
Microsoft Visual Studio Professional 2022 (64-bit) Version 17.2.5
Azure.AI.FormRecognizer 4.0.0-beta.4
コンソールアプリ(.NET 6)
前提
・Form Recognizerのカスタムモデルはすでに構築済みであること
→作り方は以下のドキュメントをご覧ください
・APIキーとエンドポイントの取得しておくこと
→取得方法は以下のページの「前提条件」セクションの一番最後にあります
docs.microsoft.com
プロジェクトの作成手順
はじめにVisual Studioでコンソールアプリを作成し、プロジェクトにNugetパッケージを導入します。
今回はAzure.AI.FormRecognizer 4.0.0-beta.4
を利用するので以下の画像のようにプレリリースのバージョンが出てくるようにチェックを入れます。
コンソールアプリのProgram.cs
に以下のように書きます。
using Azure; using Azure.AI.FormRecognizer.DocumentAnalysis; string endpoint = "[Form Recognizerのエンドポイント]"; string apiKey = "[Form RecognizerのAPIキー]"; string modelId = "[モデル名]"; string filePath = @"[読み取りを行うファイルのパス]"; //ファイルの読み込み using var fileStream = File.OpenRead(filePath); using var stream = new MemoryStream(); await fileStream.CopyToAsync(stream); stream.Position = 0; //これをやらないと読み取り時に例外が発生してしまう var credential = new AzureKeyCredential(apiKey); var client = new DocumentAnalysisClient(new Uri(endpoint), credential); AnalyzeDocumentOperation operation = await client.StartAnalyzeDocumentAsync(modelId, stream); await operation.WaitForCompletionAsync(); AnalyzeResult result = operation.Value; //以下、読み取り結果の表示 foreach (AnalyzedDocument document in result.Documents) { foreach (KeyValuePair<string, DocumentField> fieldKvp in document.Fields) { string fieldName = fieldKvp.Key; DocumentField field = fieldKvp.Value; Console.WriteLine($"Field '{fieldName}': "); Console.WriteLine($" Content: '{field.Content}'"); Console.WriteLine($" Confidence: '{field.Confidence}'"); } }
今回は以下のドキュメントの読み取りを行います。
読み取りたい情報は「請求書番号」「発注書番号」「総額」の3か所で、モデルもこの3か所を読み取るようにフィールドを設定しています。
(画像の赤い四角は読み取り個所をわかりやすくするためであり、実際のドキュメントにはありません)
これを実行すると以下のような結果が得られます。
Field '発注書番号': Content: '12350876' Confidence: '0.995' Field '総額': Content: '4985' Confidence: '0.995' Field '請求書番号': Content: '463' Confidence: '0.994'
参考ページ
Azure Cognitive Services Form Recognizer client library for .NET | Azure SDK for .NET