Bildanalyse – kognitiver Skill

Der Skill Bildanalyse extrahiert einen umfangreichen Satz von visuellen Merkmalen aus dem Bildinhalt. So können Sie beispielsweise anhand eines Bilds eine Beschriftung erstellen, Tags generieren oder Prominente und Sehenswürdigkeiten identifizieren. Dieser Artikel bildet die Referenzdokumentation zum Skill Bildanalyse. Verwendungsanweisungen finden Sie unter Extrahieren von Text und Informationen aus Bildern in der KI-Anreicherung.

Dieser Skill verwendet die Machine Learning-Modelle, die durch Azure KI Vision in Azure KI Services bereitgestellt werden. Die Bild-Analyse kann Bilder analysieren, die folgende Anforderungen erfüllen:

  • Das Bild muss im JPEG-, PNG-, GIF- oder BMP-Format vorliegen.
  • Die Dateigröße muss weniger als 4 MB betragen.
  • Das Bild muss größer als 50 x 50 Pixel sein.

Diese Fähigkeit wird mit der AI Image Analysis API Version 3.2 implementiert. Wenn Ihre Lösung einen Aufruf einer neueren Version dieser Dienst-API (z. B. Version 4.0) erfordert, sollten Sie die Implementierung über benutzerdefinierte Web-API-Kenntnisse in Betracht ziehen.

Hinweis

Dieser Skill ist an Azure KI Services gebunden und erfordert eine abrechenbare Ressource für Transaktionen, die 20 Dokumente pro Indexer und Tag überschreiten. Die Ausführung integrierter Skills wird nach dem bestehenden nutzungsbasierten Preis für Azure KI Services berechnet.

Darüber hinaus wird die Bildextraktion durch Azure KI Search abgerechnet.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

Skillparameter

Bei den Parametern wird zwischen Groß- und Kleinschreibung unterschieden.

Parametername Beschreibung
defaultLanguageCode Eine Zeichenfolge, die angibt, welche Sprache zurückgegeben werden soll. Der Dienst gibt die Ergebnisse der Erkennung in einer bestimmten Sprache zurück. Wenn dieser Parameter nicht angegeben wird, ist der Standardwert „en“.

Unterstützte Sprachen umfassen eine Teilmenge der allgemein verfügbaren Sprachen von Azure AI Vision. Wenn eine Sprache neu mit allgemeinem Verfügbarkeitsstatus in den AI Vision-Dienst eingeführt wird, wird erwartet, dass sie in diese Fähigkeit vollständig integriert sind.
visualFeatures Ein Array aus Zeichenfolgen, die angibt, welche Arten von visuellen Merkmalen zurückgegeben werden sollen. Folgende Arten von visuellen Merkmalen sind gültig:
  • adult: erkennt, ob das Bild pornografisch (Nacktheit oder sexuelle Handlungen) gewalttätig (extreme Gewalt oder Blut) oder anzüglich (freizügig) ist.
  • brands: erkennt verschiedene Marken in einem Bild, einschließlich der ungefähren Position.
  • categories: Kategorisiert Bildinhalte gemäß einer von Azure KI Services definierten Taxonomie.
  • description: beschreibt den Bildinhalt in unterstützten Sprachen mit einem vollständigen Satz.
  • faces: Erkennt, ob Gesichter vorhanden sind. Wenn Gesichter vorhanden sind, generiert dieses Merkmal Informationen zu Koordinaten, Geschlecht und Alter.
  • objects: erkennt verschiedene Objekte in einem Bild, einschließlich der ungefähren Position.
  • tags: Erstellt Tags für das Bild in einer detaillierten Liste aus Wörtern, die sich auf den Bildinhalt beziehen.
Bei den Namen der visuellen Merkmale wird die Groß- und Kleinschreibung beachtet. Die visuellen Features color und imageType sind veraltet. Auf die entsprechenden Funktionen kann jedoch über einen benutzerdefinierten Skill zugegriffen werden. Sehen Sie im Abschnitt „Bildanalyse“ der Dokumentation zur Sprachunterstützung für Azure KI Vision nach, welche visuellen Elemente mit jedem defaultLanguageCode unterstützt werden.
details Ein Array aus Zeichenfolgen, die angeben, welche domänenspezifischen Informationen zurückgegeben werden sollen. Folgende Arten von visuellen Merkmalen sind gültig:
  • celebrities: Identifiziert Prominente in einem Bild.
  • landmarks: Identifiziert Sehenswürdigkeiten in einem Bild.

Skilleingaben

Eingabename Beschreibung
image Komplexer Typ. Funktioniert derzeit nur mit dem Feld "/document/normalized_images", das vom Azure Blob-Indexer erzeugt wird, wenn imageAction er auf einen anderen Wert als nonefestgelegt ist.

Skillausgaben

Ausgabename Beschreibung
adult Die Ausgabe ist ein einzelnes adult-Objekt eines komplexen Typs, bestehend aus booleschen Feldern (isAdultContent, isGoryContent, isRacyContent) und Bewertungen vom Typ „Double“ (adultScore, goreScore, racyScore).
brands Die Ausgabe ist ein Array von brand-Objekten, bei denen das Objekt ein komplexer Typ aus name (Zeichenfolge) und einer confidence-Bewertung (Double) ist. Des Weiteren wird ein Rechteck (rectangle) mit vier Begrenzungsrahmenkoordinaten (x, y, w, h in Pixeln) zurückgegeben, das die Position innerhalb des Bilds angibt. Für das Rechteck sind x und y links oben. Links unten ist x, y+h. Rechts oben ist x+w, y. Rechts unten ist x+w, y+h.
categories Die Ausgabe ist ein Array von category-Objekten, bei dem jedes Kategorieobjekt ein komplexer Typ aus name (Zeichenfolge), score (Double) und optional detail mit Details zu Prominenten oder Wahrzeichen ist. Die vollständige Liste der Kategorienamen finden Sie in der Kategorietaxonomie. Ein Detail ist ein geschachtelter komplexer Typ. Ein Prominentendetail besteht aus einem Namen, einer Zuverlässigkeitsbewertung und einem Gesichtsbegrenzungsrahmen. Ein Wahrzeichendetail besteht aus einem Namen und einer Zuverlässigkeitsbewertung.
description Die Ausgabe ist ein einzelnes description-Objekt eines komplexen Typs aus Listen mit tags und caption (Array mit Text (Zeichenfolge) und confidence (Double)).
faces Komplexer Typ aus age, gender und faceBoundingBox mit vier Begrenzungsrahmenkoordinaten (in Pixel) zur Angabe der Position innerhalb des Bilds. Die Koordinaten sind top, left, width und height.
objects Die Ausgabe ist ein Array aus Objekten vom Typ „visuelles Feature“. Jedes Objekt ist ein komplexer Typ, bestehend aus object (Zeichenfolge), confidence (Double), rectangle (mit vier Begrenzungsrahmenkoordinaten, die die Position innerhalb des Bilds angeben) und einem parent-Element, das einen Objektnamen und einen Konfidenzwert enthält.
tags Die Ausgabe ist ein Array von imageTag-Objekten, bei denen ein Tagobjekt ein komplexer Typ aus name (Zeichenfolge), hint (Zeichenfolge) und confidence (Double) ist. In seltenen Fällen wird noch ein Hinweis hinzugefügt. Er wird nur generiert, wenn ein Tag mehrdeutig ist. Ein als „Curling“ markiertes Bild kann beispielsweise mit dem Hinweis „Sport“ versehen werden, um den Inhalt besser anzugeben.

Beispieldefinition einer Qualifikation

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

Beispielindex

Einzelne Objekte (beispielsweise adult und description) können im Index als Collection(Edm.ComplexType) strukturiert werden, um die Ausgabe adult und description für alle zurückzugeben. Weitere Informationen zum Zuordnen von Ausgaben zu Indexfeldern finden Sie unter Vereinfachen von Informationen komplexer Typen.

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

Exemplarische Ausgabefeldzuordnung

Das Zielfeld kann ein komplexes Feld oder eine Sammlung sein. Die Indexdefinition gibt alle ggf. vorhandenen Unterfelder an.

"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 von Ausgabefeldzuordnungen (verschachtelte Eigenschaften)

Sie können Ausgabefeldzuordnungen für Eigenschaften niedrigerer Ebenen definieren, also beispielsweise nur Prominente oder Wahrzeichen. Stellen Sie in diesem Fall sicher, dass Ihr Indexschema jeweils über ein spezifisches Feld für das jeweilige Detail verfügt.

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

Beispieleingabe

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

Beispielausgabe

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

Auftretende Fehler

In den folgenden Fällen werden keine Elemente extrahiert.

Fehlercode Beschreibung
NotSupportedLanguage Die angegebene Sprache wird nicht unterstützt.
InvalidImageUrl Die Bild-URL ist falsch formatiert, oder es kann nicht darauf zugegriffen werden.
InvalidImageFormat Bei den Eingabedaten handelt es sich nicht um ein gültiges Bild.
InvalidImageSize Das Eingabebild ist zu groß.
NotSupportedVisualFeature Der angegebene Featuretyp ist ungültig.
NotSupportedImage Nicht unterstütztes Bild, z.B. Kinderpornografie.
InvalidDetails Nicht unterstütztes domänenspezifisches Modell.

Wenn Sie eine Fehlermeldung ähnlich "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks" erhalten, überprüfen Sie den Pfad. Sowohl Prominente als auch Wahrzeichen sind Eigenschaften unter detail.

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

Siehe auch