page_type | languages | products | name | urlFragment | description | ||||
---|---|---|---|---|---|---|---|---|---|
sample |
|
|
Document Intelligence Image Extract Custom Skill |
azure-document-intelligence-image-extract-skill |
This custom skill uses Azure AI Document Intelligence's pre-trained layout models to extract images and fields from forms. |
このカスタムスキルは、Azure AI Document Intelligence のレイアウトモデルを使用して PDF などのドキュメントから画像を抽出します。抽出した画像データは Azure Data Lake Storage Gen2 に保存します。
本スキルは、Azure AI Document Intelligence リソースおよび、Azure Data Lake Storage Gen2(ストレージアカウント)リソースが必要です。また、DOCUMENT_INTELLIGENCE_ENDPOINT
と DOCUMENT_INTELLIGENCE_KEY
および、AZURE_STORAGE_CONNECTION_STRING
、AZURE_STORAGE_CONTAINER_NAME
が必要です。Azure Functions にデプロイする際は、「アプリケーション設定」項目に設定する必要があります。
- Azure portal で、Azure AI Document Intelligence リソースを作成します。
- Azure AI Document Intelligence の API キーとエンドポイントをコピーします。
- ストレージアカウント リソースを作成します。
- ストレージブラウザーや Azure Storage Explorer を使用して画像ファイル出力先のコンテナを作成します。
- ストレージアカウントの接続文字列とコンテナ名をコピーします。
- このレポジトリを clone します。
- Visual Studio Code でレポジトリのフォルダを開き、Azure Functions にリモートデプロイします。
- Functions にデプロイが完了したら, Azure Portal の Azure Functions の設定→環境変数から、
DOCUMENT_INTELLIGENCE_ENDPOINT
とDOCUMENT_INTELLIGENCE_KEY
、およびAZURE_STORAGE_CONNECTION_STRING
、AZURE_STORAGE_CONTAINER_NAME
環境変数を作成してそれぞれ値を貼り付けます。
Azure Functions へデプロイする場合、以下が必要となります。
この Funcsions は、有効な Azure AI Document Intelligence API キーが設定された DOCUMENT_INTELLIGENCE_KEY
の設定と、Azure AI Document Intelligence エンドポイント DOCUMENT_INTELLIGENCE_ENDPOINT
を必要とします。また、ストレージアカウント リソースも同様に必要です。
ローカルで実行する場合は、プロジェクトのローカル環境変数 local.settings.json
で設定できます。これにより、API キーが誤ってコードに埋め込まれることがなくなります。
Azure Functions で実行する場合、これは「アプリケーションの設定」で設定できます。
カスタムスキルは画像の data
項目などを Azure AI Search から受け取ります。data
項目には Azure AI Document Intelligence に渡すためのファイル URL と SAS トークンが含まれます。分析に使用するモデルも指定できるようになっていますが、基本的には prebuilt-layout
を使用します。
{
"values": [
{
"recordId": "record1",
"data": {
"model": "prebuilt-layout",
"formUrl": "https://xxx.blob.core.windows.net/xxx/layout-pageobject.pdf",
"formSasToken": "?st=sasTokenThatWillBeGeneratedByCognitiveSearch"
}
}
]
}
{
"values": [
{
"recordId": "record1",
"paragraphs": [
{
"id": "paragraphs/0",
"content": "<!-- PageHeader=\"This is the header of the document.\" -->",
"role": "pageHeader"
}
],
"sections": [
[
"/paragraphs/1",
"/sections/1",
"/sections/2",
"/sections/5"
],
],
"content": "<!-- PageHeader=\"This is the header of the document.\" -->\n\nThis is title\n===\n\n\n# 1\\.",
"figures": [
{
"pageNumber": 1,
"caption": "Figure 1: Here is a figure with text",
"image": "figure_1_figure_1_here_is_a_figure_with_text.png",
"polygon": [
1.0301,
7.1098,
4.1763,
7.1074,
4.1781,
9.0873,
1.0324,
9.0891
],
"elements": [
"/paragraphs/16",
"/paragraphs/17",
"/paragraphs/18",
]
}
]
}
]
}
このスキルを Azure AI Search パイプラインで使用するには、スキル定義をスキルセットに追加する必要があります。この例のスキル定義の例を次に示します(特定のシナリオとスキルセット環境を反映するように入力と出力を更新する必要があります)。
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"name": "ImageExtractSkill",
"description": "Extracts images and fields from a form using a pre-trained layout model",
"uri": "[AzureFunctionEndpointUrl]/api/analyze?code=[AzureFunctionDefaultHostKey]",
"context": "/document",
"inputs": [
{
"name": "formUrl",
"source": "/document/metadata_storage_path_raw"
},
{
"name": "formSasToken",
"source": "/document/metadata_storage_sas_token"
},
{
"name": "model",
"source": "= 'prebuilt-layout'"
}
],
"outputs": [
{
"name": "paragraphs",
"targetName": "paragraphs"
},
{
"name": "sections",
"targetName": "sections"
},
{
"name": "content",
"targetName": "markdown"
},
{
"name": "figures",
"targetName": "figures"
}
]
}
インデクサーに出力フィールドのマッピングを設定します。これを行わないと、エンリッチ処理されたツリーから取得したデータを検索フィールドへマッピングすることができません。
{
"outputFieldMappings": [
{
"sourceFieldName": "/document/paragraphs",
"targetFieldName": "paragraphs"
},
{
"sourceFieldName": "/document/sections",
"targetFieldName": "sections"
},
{
"sourceFieldName": "/document/markdown",
"targetFieldName": "markdown"
},
{
"sourceFieldName": "/document/figures",
"targetFieldName": "figures"
}
]
}
このスキルセットを実行するための Azure AI Search コンポーネントを一発で作成する Postman 用コレクションを用意しています。
https://github.com/nohanaga/azure-document-intelligence-image-extract-skill-postman
この Postman コレクションには以下のリクエストおよび環境変数が含まれます。
- 01 - Create a datasource
- 02 - Create an Index
- 03 - Create a Skillset
- 04 - Create an Indexer
- 05 - Skill Execution Test