LoginSignup
9
7

More than 3 years have passed since last update.

【60~90分】Azure Cognitive SearchでSharepoint内のファイル・画像(OCR / 画像解析検索)をAI検索する

Last updated at Posted at 2020-10-28

はじめに

シェアポイントやファイルサーバを探索して
情報を持たない画像をAI解析して検索したり、画像内の文字をOCR解析して検索したりしたいと思います。

実用性はもちろんですがエンジニアとして、とてもロマンが強いです。

今回はシェアポイント上で一部のフォルダ内を
Azure Cognitive Searchで検索してみたいと思います。

成果物のイメージとしては以下になります。
シェアポイント内の文字情報を含まないファイルに含まれる画像・画像ファイルをキーワード検索したり
画像内の文字情報をキーワード検索したりするAzure Cognitive Searchアプリケーションを作成します。
image.png

※PDFやExcelやWORD内に含まれる画像や文字情報もインデクス化して検索することが可能ですが今回は画像を検索していきます。
※シェアポイント内の検索範囲はかなり限定して行います

 
 
作成のイメージは以下の通りです
image.png

 
 

事前準備

ストレージアカウントの作成

マーケットプレースでストレージアカウントを作成します。

image.png

 

Blob Storageを選択し、デプロイが完了したら、ブロブコンテナを作成します。

image.png

Azure Cognitive Searchの作成

マーケットプレースでAzure Cognitive Searchを作成します。

自分的にはAzureサービスの中で一番ロマンを感じるサービスです。Azure Cognitive Search大好きです。
image.png

 
 

検証の為、フリープランでAzure Cognitive Searchを作成します。

※設定の一例を記載しています。  
image.png

各サービスの連携

Power Automate(シェアポイント→Azure Blob)の設定

シェアポイントからAzure Blob Storage(ストレージアカウント)に接続するフローを作成する

シェアポイントの右上の自動化→Power Automate→フローの作成で同期するためのフローを作成します
image.png
 

Power Automateのテンプレートを設定します

テンプレート→検索窓に『AzureBlob』を入力→『SharePointフォルダーからAzureBlobにフォルダーにファイルをコピーする』のテンプレートを選択
※もっと細かい同期の設定を行うテンプレートもありますが、記事にすると複雑になるので今回はシンプルなこちらを選択しています。
image.png

 

Azure Blob Storageのアカウント名・アクセスキーをPower Automateに設定していきます

連携の設定を行います

シェアポイントとストレージの接続情報を入力します
 ↓
同期元のシェアポイントの連携フォルダを選びます
※今回は検証を目的としているため連携フォルダはかなり限定的にしています。 これにより設定したフォルダ外は連携しません。
 ↓
同期先のストレージコンテナを設定します
 ↓
設定が完了したら保存します

image.png

 

連携のテストをしてみます

探索対象のフォルダにファイルを追加してみます

image.png

 

マイフローからフローの実行履歴を確認してみます

前ステップでシェアポイントに追加したファイルをAzure Blobに同期した結果が確認できました!
image.png

 

Azure Blobのコンテナにファイルが同期されているのを確認します

image.png

Azure Search(Azure Storage→Azure Search)の設定

Azure Storageの情報をAzure Searchに連携します。 

※Azure Storageのメニューから行うと設定がかなり楽です

AzureストレージのメニューからAzure Searchの追加を選択して、対象のAzure Searchを選択します

image.png

 
 

データソース名、コンテナ名を設定し、コグニティブスキルの追加ボタンを押します

image.png

 

スキルセットを設定します 画像の認知技術とOCRにチェックを入れます

image.png

 

インデクスを設定します

取得可能フィールド、検索可能フィールドにチェックを入れ、アナライザを日本語Microsoftに変更します
image.png

 

インデクサを設定します

5分毎に自動実行されるようにカスタムの5分に設定します 
この設定により5分おきにシェアポイント内のファイルの情報をAzure Cognitive Searchにインデクスすることが可能です
image.png

 
 

Azure Cognitive Searchのスキルセットを修正します

Azure Cognitive Searchのポータルメニューからスキルセットを選択します

image.png

 

スキルセットjsonのocrスキルとイメージアナリティクススキルの言語をjaに変更します

以下はOCRスキルの設定例ですが、同じようにイメージアナリティクスの言語をjaに変更します。
image.png
 

変更が完了したら最後に保存を押します。
image.png

 

インデクサを再実行します

Azure Cognitive Searchポータルからインデクサー→インデクサ名を選択します、
image.png

 
インデクサをリセット→実行します
※初回構築時に1度実行しているため、リセットせずに実行を押すと、すでにインデクス済みのファイルはインデクスされないため、一度リセットします
image.png

検索とOCR/画像解析の動作確認

Azure Cognitive Searchのメニューからインデクスを選択し、作成したインデクス名を選択します

image.png

 

試しに検索ボタンを押してみると、写真内の文字データを読み取れていることが確認できます

シェアポイントに入れた写真
image.png
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
インデクスの内容
image.png

OCR解析により画像内の文字情報がINDEX化ことがわかります。
 

文字データを持たない写真データ内を洞察してインデクスできていることが確認できます 

シェアポイントに入れた写真
image.png

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
インデクスの内容
image.png

画像解析により画像内の解析情報がINDEX化ことがわかります。

  
 

検索用の画面を作成

Azure Cognitive Searchの機能で検索画面をライトに作成する

なんとAzure Cognitive Searchには嘘のようで本当な魔法の画面作成機能があります。

 

インデクスの操作画面から、そのままデモアプリの作成ボタンを押します

image.png

 

候補を選択し、候補をmarged_content、metadata_storage_name、imageTagsを設定します

image.png
 
 

個々の結果を選択し、metadata_storage_nameを縮小版とタイトルに、説明にmarged_contentに設定して、デモアプリの作成を押します

image.png

 
 

ダウンロードを押下します

image.png

 
 

検索画面を操作して、シェアポイント内の画像ファイルを検索してみる

アプリを立ち上げて検索してみます。 ひとまず無条件で検索してみると、シェアポイント内のファイルを検索できていることがわかります。

image.png

 

文字情報を全く含まない画像を検索してみます。 『ガーデン』というキーワードで検索してみます

文字情報を全く含まない情報でも検索可能なことがわかります。
image.png

要カスタマイズ

ここまで標準の機能で作成することができました。 
以下の機能を別途構築・カスタマイズしたり他のAzureサービスとの連携で拡張したいと思います。
・CORにより読み取った情報を補正する
・今回は標準学習モデルを使用して画像解析していますが、カスタム学習モデルで特定の画像情報をインデクスする
・ファイルサーバ内の情報を検索する
・リッチな検索アプリを作成する

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7