共用方式為


影像分析認知技能

影像 分析 技能會根據影像內容擷取一組豐富的視覺功能。 例如,您可以從影像產生標題、產生標記,或識別名人和地標。 本文是影像分析技能的參考檔。 如需使用指示,請參閱 從影像 擷取文字和資訊。

此技能使用了 Foundry Tools 中 Azure Vision 提供的機器學習模型。 影像分析僅適用於符合下列需求的影像:

  • 影像必須以 JPEG、PNG、GIF 或 BMP 格式呈現
  • 影像的檔案大小必須小於 4 MB
  • 影像的維度必須大於 50 x 50 像素

OCR 和影像分析支援的資料來源是 Azure Blob 儲存體和 Azure Data Lake Storage (ADLS) Gen2 中的 Blob,以及 Microsoft OneLake 中的影像內容。 影像可以是獨立檔案或 PDF 或其他檔案中的內嵌影像。

此技能是使用 AI 影像分析 API 3.2 版來實作。 如果您的解決方案需要呼叫該服務 API 的較新版本 (,例如 4.0 版),請考慮透過 Web API 自訂技能 實作,或使用 ImageAnalysisV4 電源技能

注意

此技能綁定於 Foundry Tools,且每日每位索引器處理超過 20 份文件的交易,需 提供可計費資源 。 內建技能的執行依現有 的 Foundry Tools 標準價格收費。

此外,影像擷取是由 Azure AI 搜尋服務計費

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

技能參數

參數區分大小寫。

參數名稱 描述
defaultLanguageCode 字串,表示要傳回的語言。 服務會傳回指定語言的辨識結果。 如果未指定此參數,預設值為 “en”。

支援的語言包括Azure Vision 中部分普遍可用的語言 。 當語言以一般可用性狀態新引入 Azure Vision 時,預期會延遲才能完全整合進這項技能。
visualFeatures 字串數位,表示要傳回的視覺功能類型。 有效的視覺功能類型包括:
  • 成人 - 偵測圖像是否為色情(描繪裸體或性行為),血腥(描繪極端暴力或血液)或暗示(也稱為猥褻內容)。
  • 品牌 - 偵測影像內的各種品牌,包括近似位置。
  • 分類 - 依據 Foundry Tools 定義的 分類法 對影像內容進行分類。
  • description - 以支援的語言描述具有完整句子的影像內容。
  • 臉部 - 偵測臉部是否存在。 如果存在,會產生座標、性別和年齡。
  • objects - 偵測影像內的各種物件,包括近似位置。
  • tags - 使用與影像內容相關的詳細單字清單來標記影像。
視覺功能的名稱會區分大小寫。 色彩imageType 視覺效果功能都已被取代,但您可以透過自定義技能存取此功能。 請參閱 Azure Vision 影像分析文件 ,該文件中各項支援 defaultLanguageCode視覺特徵。
details 字串數位,指出要傳回哪些網域特定詳細數據。 有效的視覺功能類型包括:
  • 名人 - 識別影像中偵測到的名人。
  • 地標 - 識別影像中偵測到的地標。

技能輸入

輸入名稱 描述
image 複雜類型。 目前僅可搭配 "/document/normalized_images" 欄位使用,該欄位是由 Azure Blob 索引子在 imageAction 被設定為 none 以外的其他值時產生。

技能輸出

輸出名稱 描述
adult 輸出是複雜類型的單一成人物件,由布爾值欄位 (isAdultContent、 、 ) 和雙類型分數 (isGoryContentisRacyContentadultScoregoreScoreracyScore、 ) 組成。
brands 輸出是品牌對象的陣列,其中物件是包含 name (string) 和confidence分數 (double) 的複雜類型。 它也會傳回具有四個rectangle周框方塊座標 (xywh, 以像素為單位) 的 ,表示影像內的位置。 針對矩形, xy 是左上方。 左下角為 xy+h。 右上方為 x+wy。 右下角為 x+wy+h
categories 輸出是類別對象的陣列,其中每個類別物件都是由 (字串)、 (double) name 和選擇性score組成的detail複雜類型,其中包含名人或地標詳細數據。 如需類別名稱的完整清單,請參閱類別分類法。 詳細數據是巢狀複雜類型。 名人詳細數據包含名稱、信賴分數和臉部周框方塊。 地標詳細數據是由名稱和信賴分數所組成。
description 輸出是複雜類型的單一描述物件,由 tags 清單和 caption (由 (字串) 和 Text (double) 組成的confidence陣列) 組成。
faces 由、 age組成的gender複雜類型,且faceBoundingBox具有四個周框方塊座標(以像素為單位),表示影像內部的位置。 座標為 top、、leftwidthheight
objects 輸出是視覺特徵物件的陣列。 每個物件都是複雜型別,由 object (string)、 confidence (double) rectangle 組成(具有四個周框方塊座標,表示影像內的位置),以及 parent 包含物件名稱和信賴度的 。
tags 輸出是 imageTag 物件的陣列類型。 新增提示是罕見的。 只有在標記模棱兩可時才會產生。 例如,標記為「捲曲」的影像可能會有「運動」的提示,以更能指出其內容。

範例技能定義

{
    "description": "Extract image analysis.",
    "@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
    "context": "/document/normalized_images/*",
    "defaultLanguageCode": "en",
    "visualFeatures": [
        "adult",
        "brands",
        "categories",
        "description",
        "faces",
        "objects",
        "tags"
    ],
    "inputs": [
        {
            "name": "image",
            "source": "/document/normalized_images/*"
        }
    ],
    "outputs": [
        {
            "name": "adult"
        },
        {
            "name": "brands"
        },
        {
            "name": "categories"
        },
        {
            "name": "description"
        },
        {
            "name": "faces"
        },
        {
            "name": "objects"
        },
        {
            "name": "tags"
        }
    ]
}

範例索引

對於單一物件(例如 adultdescription),您可以在索引中將其結構為 Collection(Edm.ComplexType) ,以傳回 adultdescription 輸出所有物件。 如需將輸出對應至索引字段的詳細資訊,請參閱 複雜類型的扁平化資訊。

{
    "fields": [
        {
            "name": "metadata_storage_name",
            "type": "Edm.String",
            "key": true,
            "searchable": true,
            "filterable": false,
            "facetable": false,
            "sortable": true
        },
        {
            "name": "metadata_storage_path",
            "type": "Edm.String",
            "searchable": true,
            "filterable": false,
            "facetable": false,
            "sortable": true
        },
        {
            "name": "content",
            "type": "Edm.String",
            "sortable": false,
            "searchable": true,
            "filterable": false,
            "facetable": false
        },
        {
            "name": "adult",
            "type": "Edm.ComplexType",
            "fields": [
                {
                    "name": "isAdultContent",
                    "type": "Edm.Boolean",
                    "searchable": false,
                    "filterable": true,
                    "facetable": true
                },
                {
                    "name": "isGoryContent",
                    "type": "Edm.Boolean",
                    "searchable": false,
                    "filterable": true,
                    "facetable": true
                },
                {
                    "name": "isRacyContent",
                    "type": "Edm.Boolean",
                    "searchable": false,
                    "filterable": true,
                    "facetable": true
                },
                {
                    "name": "adultScore",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "goreScore",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "racyScore",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                }
            ]
        },
        {
            "name": "brands",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "name",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "confidence",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "rectangle",
                    "type": "Edm.ComplexType",
                    "fields": [
                        {
                            "name": "x",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "y",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "w",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "h",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                }
            ]
        },
        {
            "name": "categories",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "name",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "score",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "detail",
                    "type": "Edm.ComplexType",
                    "fields": [
                        {
                            "name": "celebrities",
                            "type": "Collection(Edm.ComplexType)",
                            "fields": [
                                {
                                    "name": "name",
                                    "type": "Edm.String",
                                    "searchable": true,
                                    "filterable": false,
                                    "facetable": false
                                },
                                {
                                    "name": "faceBoundingBox",
                                    "type": "Collection(Edm.ComplexType)",
                                    "fields": [
                                        {
                                            "name": "x",
                                            "type": "Edm.Int32",
                                            "searchable": false,
                                            "filterable": false,
                                            "facetable": false
                                        },
                                        {
                                            "name": "y",
                                            "type": "Edm.Int32",
                                            "searchable": false,
                                            "filterable": false,
                                            "facetable": false
                                        }
                                    ]
                                },
                                {
                                    "name": "confidence",
                                    "type": "Edm.Double",
                                    "searchable": false,
                                    "filterable": false,
                                    "facetable": false
                                }
                            ]
                        },
                        {
                            "name": "landmarks",
                            "type": "Collection(Edm.ComplexType)",
                            "fields": [
                                {
                                    "name": "name",
                                    "type": "Edm.String",
                                    "searchable": true,
                                    "filterable": false,
                                    "facetable": false
                                },
                                {
                                    "name": "confidence",
                                    "type": "Edm.Double",
                                    "searchable": false,
                                    "filterable": false,
                                    "facetable": false
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "description",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "tags",
                    "type": "Collection(Edm.String)",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "captions",
                    "type": "Collection(Edm.ComplexType)",
                    "fields": [
                        {
                            "name": "text",
                            "type": "Edm.String",
                            "searchable": true,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "confidence",
                            "type": "Edm.Double",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                }
            ]
        },
        {
            "name": "faces",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "age",
                    "type": "Edm.Int32",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "gender",
                    "type": "Edm.String",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "faceBoundingBox",
                    "type": "Collection(Edm.ComplexType)",
                    "fields": [
                        {
                            "name": "top",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "left",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "width",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "height",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                }
            ]
        },
        {
            "name": "objects",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "object",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "confidence",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "rectangle",
                    "type": "Edm.ComplexType",
                    "fields": [
                        {
                            "name": "x",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "y",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "w",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "h",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                },
                {
                    "name": "parent",
                    "type": "Edm.ComplexType",
                    "fields": [
                        {
                            "name": "object",
                            "type": "Edm.String",
                            "searchable": true,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "confidence",
                            "type": "Edm.Double",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        }
                    ]
                }
            ]
        },
        {
            "name": "tags",
            "type": "Collection(Edm.ComplexType)",
            "fields": [
                {
                    "name": "name",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "hint",
                    "type": "Edm.String",
                    "searchable": true,
                    "filterable": false,
                    "facetable": false
                },
                {
                    "name": "confidence",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                }
            ]
        }
    ]
}

範例輸出欄位對應

目標欄位可以是複雜的欄位或集合。 索引定義會指定任何子欄位。

"outputFieldMappings": [
    {
        "sourceFieldName": "/document/normalized_images/*/adult",
        "targetFieldName": "adult"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/brands/*",
        "targetFieldName": "brands"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/categories/*",
        "targetFieldName": "categories"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/description",
        "targetFieldName": "description"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/faces/*",
        "targetFieldName": "faces"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/objects/*",
        "targetFieldName": "objects"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/tags/*",
        "targetFieldName": "tags"
    }

輸出欄位對應的變化 (巢狀屬性)

您可以定義輸出欄位對應至較低層級的屬性,例如名人或地標。 在此情況下,請確定您的索引架構有一個字段,專門包含每個詳細數據。

"outputFieldMappings": [
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
        "targetFieldName": "celebrities"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
        "targetFieldName": "landmarks"
    }

範例輸入

{
    "values": [
        {
            "recordId": "1",
            "data": {
                "image": {
                    "data": "BASE64 ENCODED STRING OF A JPEG IMAGE",
                    "width": 500,
                    "height": 300,
                    "originalWidth": 5000,
                    "originalHeight": 3000,
                    "rotationFromOriginal": 90,
                    "contentOffset": 500,
                    "pageNumber": 2
                }
            }
        }
    ]
}

範例輸出

{
  "values": [
    {
      "recordId": "1",
      "data": {
        "categories": [
          {
            "name": "abstract_",
            "score": 0.00390625
          },
          {
            "name": "people_",
            "score": 0.83984375,
            "detail": {
              "celebrities": [
                {
                  "name": "Satya Nadella",
                  "faceBoundingBox": [
                        {
                            "x": 273,
                            "y": 309
                        },
                        {
                            "x": 395,
                            "y": 309
                        },
                        {
                            "x": 395,
                            "y": 431
                        },
                        {
                            "x": 273,
                            "y": 431
                        }
                    ],
                  "confidence": 0.999028444
                }
              ],
              "landmarks": [ ]
            }
          }
        ],
        "adult": {
          "isAdultContent": false,
          "isRacyContent": false,
          "isGoryContent": false,
          "adultScore": 0.0934349000453949,
          "racyScore": 0.068613491952419281,
          "goreScore": 0.08928389008070282
        },
        "tags": [
          {
            "name": "person",
            "confidence": 0.98979085683822632
          },
          {
            "name": "man",
            "confidence": 0.94493889808654785
          },
          {
            "name": "outdoor",
            "confidence": 0.938492476940155
          },
          {
            "name": "window",
            "confidence": 0.89513939619064331
          }
        ],
        "description": {
          "tags": [
            "person",
            "man",
            "outdoor",
            "window",
            "glasses"
          ],
          "captions": [
            {
              "text": "Satya Nadella sitting on a bench",
              "confidence": 0.48293603002174407
            }
          ]
        },
        "faces": [
          {
            "age": 44,
            "gender": "Male",
            "faceBoundingBox": [
                {
                    "x": 1601,
                    "y": 395
                },
                {
                    "x": 1653,
                    "y": 395
                },
                {
                    "x": 1653,
                    "y": 447
                },
                {
                    "x": 1601,
                    "y": 447
                }
            ]
          }
        ],
        "objects": [
          {
            "rectangle": {
              "x": 25,
              "y": 43,
              "w": 172,
              "h": 140
            },
            "object": "person",
            "confidence": 0.931
          }
        ],
        "brands":[  
           {  
              "name":"Microsoft",
              "confidence": 0.903,
              "rectangle":{  
                 "x":20,
                 "y":97,
                 "w":62,
                 "h":52
              }
           }
        ]
      }
    }
  ]
}

錯誤案例

在下列錯誤情況下,不會擷取任何專案。

錯誤碼 描述
NotSupportedLanguage 不支援提供的語言。
InvalidImageUrl 影像 URL 的格式不正確或無法存取。
InvalidImageFormat 輸入數據不是有效的影像。
InvalidImageSize 輸入影像太大。
NotSupportedVisualFeature 指定的功能類型無效。
NotSupportedImage 不支援的影像,例如兒童色情內容。
InvalidDetails 不支援的領域特定模型。

如果您收到類似 "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"的錯誤,請檢查路徑。 名人和地標都是 下 detail的屬性。

"categories":[  
      {  
         "name":"building_",
         "score":0.97265625,
         "detail":{  
            "landmarks":[  
               {  
                  "name":"Forbidden City",
                  "confidence":0.92013400793075562
               }
            ]

另請參閱