Azure AIのDocument Intelligence Studioを軽く触ってみた

# 概要

Azure AIのDocument Intelligence StudioというWebサービスを使うと、トレーニング済みのモデルを利用して、ブラウザで、文書（PDFなど）の解析のデモを試すことができます。

https://documentintelligence.ai.azure.com/studio

# 主な機能

Document Intelligence（文書）の主な機能は以下のとおりです。
* Read（読み取り）
    * 文書の記載内容をデータ抽出する。
* Layout（レイアウト分析）
    * 文書の、見出し、テキスト、表、図形を読み取る。

どちらもサポートする文書ファイルの拡張子はほぼ同じで、JPEG、PDF、DOCX、HTMLなどを網羅しておりますが、Layoutの方が、リッチテキスト向けの機能という印象を受けました。

どうも、Readがただのテキスト読み取りに特化しているのに対し、Layoutは、文書をHTMLのように構造立てて解析しているようです。（例：ここが見出しで、これが表だな・・、など。）

# Document Intelligence Studioとは

Copilotに聞いてみました。

> Azure AIのDocument Intelligence Studioは、文書処理を自動化するための強力なツールです。これを使うと、請求書、領収書、名刺などの文書から情報を抽出し、デジタル化することができます。主な機能には以下が含まれます:
> 
> ドキュメント分析: 文書内のテキストやレイアウト構造を自動的に検出・抽出します。
> カスタムモデル: ユーザー独自のフォーマットや文書タイプに合わせてデータ抽出を最適化できます。
> 事前構築モデル: 領収書、請求書、名刺などの一般的な文書に対応したモデルを提供します。
> 手書き文字の認識: 手書きのテキストをデジタルデータに変換します。
> ドキュメント分類: さまざまな種類の書類を自動で認識し、分類します。
> このツールを使うことで、業務効率を大幅に向上させることができます。

URLはこちらです。

https://documentintelligence.ai.azure.com/studio

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/70d1a2b2-356c-3678-ecd1-025464ffdf8a.png)


それでは、早速使ってみましょう。

# OCR/Read

このような画面が表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/35d1664c-4836-b8df-ac50-6da8e06b2702.png)

真ん中に映っているものは、PDFではなく画像のようです。

中央上の「Run analysis」ボタンを押したところ、しばらくして、右側に結果が表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/f0752d94-9bbd-103c-67c7-bca4eb866119.png)

OCRで、テキストを認識したようです。

下のような設計図形式の文書でも、ところどころに表示されている単語を認識できていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/0ac0be6f-a865-8f57-63b2-385af3723916.png)

# Layout

Layoutの方を試してみましょう。

「Run analysis」ボタン押下後の様子です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/b07f6c27-ed32-601e-a9f0-7bdb11b35f50.png)

テキストを認識するのは、先ほどの「OCR/Read」の例と同じですね。

チェックボックスのチェックの有無も認識しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/002a0583-6bde-3848-3810-018674c04c39.png)

また、テーブルをテーブルとして認識していました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/3a6ff036-c6ab-b772-2844-0a915aa3f5c4.png)

左のような手書きの紙をスキャンしたようなものでも、対応しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/5bfa0d60-9bf8-55e4-91fb-81c962c2b5d2.png)

# Custom extraction models

オリジナルの帳票に対して、データ構造を定義することが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/dc7c6448-a330-eaff-f909-2602b243f853.png)

詳細なやり方は動画で説明されていましたが、簡単なフローをここに示します。

①まずは、右上のプラスボタンでプロパティを追加します。（種類（データ型？）を選んで、名称を付けます。）

②プロパティを必要なだけ作り終わったら、文書内のデータと定義したプロパティをバインドします。

文書内のvalueである「Adatum」という単語をクリックすると、バインドするプロパティを選ぶメニューが表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/e3d66ffa-7599-f86a-24d8-c92d10e138d7.png)

いくつかバインドした後の表示内容です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/eaf93f59-0a00-9bff-18d4-15defb11ac67.png)

③必要なプロパティをバインドし終わったら、「Train」を押して、複数のトレーニング用データからモデルを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/20712780-96c1-9333-2e48-34a2b42dce65.png)

④トレーニング用データでモデルを作ったら、今度はテスト用データを与えて、テストをします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/3c01ef3a-36b0-c08f-80de-222a820027fa.png)


# その他

下のPrebuild modelsのところでは、USで一般的に使われている形式の帳票に特化した、トレーニング済みの解析モデルが利用できました。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680908/dcca597a-4d58-224f-62e1-a9df5527a7e8.png)

# 最後に

銀行、市役所など、紙を大量に扱う組織のDX化に、非常に役立ちそうな印象を受けました。