Bildanalys kognitiv färdighet

Note

Azure AI-sökning är tillgängligt via Azure-portalen, REST-API:er och Azure-SDK:er. Den ligger också till grund för Foundry IQ, det hanterade kunskapsskiktet som omvandlar företagsinnehåll till återanvändbara, behörighetsmedvetna kunskapsbaser för agenter i Microsoft Foundry-portalen.

Bildanalys-färdigheten extraherar en rik uppsättning visuella egenskaper baserat på bildinnehållet. Till exempel kan du generera en bildtext från en bild, skapa taggar eller identifiera kändisar och landmärken. Denna artikel är referensdokumentationen för färdigheten Bildanalys . Se Extrahera text och information från bilder för användningsinstruktioner.

Denna färdighet använder maskininlärningsmodeller som tillhandahålls av Azure Vision i Foundry Tools. Bildanalys arbetar med bilder som uppfyller följande krav:

  • Bilden måste presenteras i JPEG-, PNG-, GIF- eller BMP-format
  • Bildens filstorlek måste vara mindre än 4 MB (MB)
  • Bildens dimensioner måste vara större än 50 x 50 pixlar

Stödda datakällor för OCR och bildanalys är blobs i Azure Blob Storage och Azure Data Lake Storage (ADLS) Gen2, samt bildinnehåll i Microsoft OneLake. Bilder kan vara fristående filer eller inbäddade bilder i en PDF eller andra filer.

Denna färdighet implementeras med AI Image Analysis API version 3.2. Om din lösning kräver att du anropar en nyare version av tjänst-API:et, till exempel version 4.0, kan du överväga att implementera via den anpassade webb-API-färdigheten.

Note

Denna färdighet är bunden till Foundry Tools och kräver en debiterbar resurs för transaktioner som överstiger 20 dokument per indexerare och dag. Körning av inbyggda färdigheter debiteras till det befintliga standardpriset för Foundry Tools.

Dessutom är bildextraktion fakturerbar med Azure AI-sökning.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

Kompetensparametrar

Parametrar är skiftlägeskänsliga.

Parameternamn Description
defaultLanguageCode En sträng som indikerar vilket språk som ska återvända. Tjänsten returnerar igenkänningsresultat i ett specificerat språk. Om denna parameter inte anges är standardvärdet "en".

Stödda språk inkluderar en delmängd av allmänt tillgängliga språk av Azure Vision. När ett språk nyligen introduceras med allmän tillgänglighet i Azure Vision finns det förväntad fördröjning innan de är fullt integrerade i denna färdighet.
visualFeatures En array av strängar som indikerar vilka visuella funktionstyper som ska återvända. Giltiga typer av visuella egenskaper inkluderar:
  • Vuxen – avtäcker om bilden är pornografisk (visar nakenhet eller en sexuell akt), blodig (visar extremt våld eller blod) eller antydande (även kallat vågat innehåll).
  • Varumärken – Upptäcker olika varumärken i en bild, inklusive den ungefärliga platsen.
  • kategorier – kategoriserar bildinnehåll enligt en taxonomi definierad av Foundry Tools.
  • Beskrivning - beskriver bildinnehållet med en fullständig mening på stödda språk.
  • ansikten – känner av om ansikten är närvarande. Om det finns, genererar koordinater, kön och ålder.
  • Objekt – Upptäcker olika objekt i en bild, inklusive den ungefärliga platsen.
  • Taggar - Taggar bilden med en detaljerad lista över ord relaterade till bildens innehåll.
Namn på visuella drag är kasuskänsliga. Både färg- och bildtyp-visuella funktioner har föråldrats, men du kan komma åt denna funktionalitet via en anpassad färdighet. Se dokumentationen Azure Vision Image Analysis där visuella egenskaper stöds med varje defaultLanguageCode.
details En array av strängar som anger vilka domänspecifika detaljer som ska returneras. Giltiga typer av visuella egenskaper inkluderar:
  • Kändisar - identifierar kändisar om de upptäcks på bilden.
  • Landmärken – identifierar landmärken om de upptäcks i bilden.

Kunskapsindata

Indatanamn Description
image Komplex typ. Fungerar för närvarande endast med fältet "/document/normalized_images", som produceras av Azure blobindexer när imageAction sätts till ett annat värde än none.

Färdighetsresultat

Utdatanamn Description
adult Output är ett enskilt vuxet objekt av komplex typ, bestående av boolesk fält (isAdultContent, isGoryContent, isRacyContent) och dubbeltyppoäng (adultScore, goreScore, ). racyScore
brands Output är en array av varumärkesobjekt , där objektet är en komplex typ bestående av name (sträng) och en confidence poäng (dubbel). Den returnerar också a rectangle med fyra begränsningsboxkoordinater (x, y, w, h, i pixlar) som indikerar placeringen inuti bilden. För rektangeln x är och y uppe till vänster. Nere till vänster är x, y+h. Uppe till höger är x+w, y. Nere till höger är x+w, y+h.
categories Output är en array av kategoriobjekt , där varje kategoriobjekt är en komplex typ bestående av en name (sträng), score (dubbel) och valfritt detail som innehåller kändis- eller landmärkesdetaljer. Se kategoritaxonomin för hela listan över kategorinamn. En detalj är en nästlad komplex typ. En kändisdetalj består av ett namn, självförtroendepoäng och en frontstyckningsbox. En landmärkesdetalj består av ett namn och ett förtroendepoäng.
description Output är ett enda beskrivningsobjekt av en komplex typ, bestående av listor av tags och caption (en array bestående av Text (sträng) och confidence (dubbel)).
faces Komplex typ bestående av age, gender, och faceBoundingBox med fyra begränsningsboxkoordinater (i pixlar) som anger placering inuti bilden. Koordinaterna är top, left, width, . height
objects Output är en uppsättning visuella funktionsobjekt. Varje objekt är en komplex typ, bestående av object (sträng), confidence (dubbel), rectangle (med fyra begränsningsrutor som indikerar placering i bilden) och en parent som innehåller ett objektnamn och förtroende .
tags Output är en array av imageTag-objekt , där ett taggobjekt är en komplex typ bestående av name (sträng), hint (sträng) och confidence (dubbel). Tillägget av en ledtråd är sällsynt. Den genereras bara om en tagg är otydlig. Till exempel kan en bild taggad som "curling" ha en antydan till "sport" för att bättre indikera dess innehåll.

Exempel på färdighetsdefinition

{
    "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"
        }
    ]
}

Exempelindex

För enskilda objekt (såsom adult och description), kan du strukturera dem i indexet som en Collection(Edm.ComplexType) för att returnera adult och description ge utdata för alla. För mer information om att mappa utdata till indexfält, se Flattening information from complex types.

{
    "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
                }
            ]
        }
    ]
}

Exempelutdata fältkartläggning

Målfältet kan vara ett komplext fält eller en samling. Indexdefinitionen specificerar alla delfält.

"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"
    }

Variation av utdatafältmappningar (nästlade egenskaper)

Du kan definiera utdatafältmappningar till lägre nivå-egenskaper, som bara kändisar eller landmärken. I det här fallet, se till att ditt indexschema har ett fält som specifikt innehåller varje detalj.

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

Exempelindata

{
    "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
                }
            }
        }
    ]
}

Exempel på utdata

{
  "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
              }
           }
        ]
      }
    }
  ]
}

Felhanteringsfall

I följande felfall extraheras inga element.

Felkod Description
NotSupportedLanguage Det tillhandahållna språket stöds inte.
InvalidImageUrl Bildens URL är dåligt formaterad eller inte tillgänglig.
InvalidImageFormat Indata är inte en giltig bild.
InvalidImageSize Inmatningsbilden är för stor.
NotSupportedVisualFeature Angiven funktionstyp är inte gyldig.
NotSupportedImage Icke-stödd bild, till exempel barnpornografi.
InvalidDetails Ej stödd domänspecifik modell.

Om du får felet liknande , "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"kontrollera sökvägen. Både kändisar och landmärken är fastigheter under detail.

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

Se även