Analisi delle immagini capacità cognitive

Note

Azure AI Search è disponibile tramite il portale di Azure, le API REST e Azure SDK. È inoltre alla base di Foundry IQ, il livello di conoscenza gestito che trasforma il contenuto aziendale in knowledge base riutilizzabili e con riconoscimento delle autorizzazioni per gli agenti nel portale di Microsoft Foundry.

La competenza Analisi Immagini estrae un ricco insieme di caratteristiche visive basate sul contenuto dell'immagine. Ad esempio, puoi generare una didascalia da un'immagine, generare tag o identificare celebrità e luoghi di riferimento. Questo articolo è la documentazione di riferimento per la competenza Analisi delle Immagini . Vedi Estrae testo e informazioni dalle immagini per le istruzioni d'uso.

Questa competenza utilizza i modelli di machine learning forniti da Azure Vision in Foundry Tools. L'analisi delle immagini funziona su immagini che soddisfano i seguenti requisiti:

  • L'immagine deve essere presentata in formato JPEG, PNG, GIF o BMP
  • Le dimensioni del file dell'immagine devono essere inferiori a 4 megabyte (MB)
  • Le dimensioni dell'immagine devono essere superiori a 50 x 50 pixel

Le fonti di dati supportate per OCR e analisi delle immagini sono i blob in Archiviazione BLOB di Azure e Azure Data Lake Storage (ADLS) Gen2, e i contenuti delle immagini in Microsoft OneLake. Le immagini possono essere file autonomi o immagini incorporate in un PDF o altri file.

Questa abilità è implementata utilizzando l'API AI Image Analysis versione 3.2. Se la soluzione richiede la chiamata di una versione più recente dell'API del servizio, ad esempio la versione 4.0, è consigliabile implementare tramite la competenza API Web personalizzata.

Note

Questa competenza è vincolata a Foundry Tools e richiede una risorsa fatturabile per transazioni che superano i 20 documenti per indicizzatore al giorno. L'esecuzione di competenze predefinite viene addebitata al prezzo standard degli strumenti Foundry esistenti.

Inoltre, l'estrazione dell'immagine è fatturabile per Azure AI Search.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

Parametri della competenza

I parametri fanno distinzione tra maiuscole e minuscole.

Nome del parametro Descrzione
defaultLanguageCode Una stringa che indica la lingua da restituire. Il servizio restituisce i risultati di riconoscimento in un linguaggio specificato. Se questo parametro non è specificato, il valore predefinito è "en".

I linguaggi supportati includono un sottoinsieme di lingue generalmente disponibili di Azure Vision. Quando un linguaggio viene introdotto con stato di disponibilità generale in Azure Vision, ci sono ritardi previsti prima che vengano completamente integrati in questa competenza.
visualFeatures Un array di stringhe che indicano i tipi di caratteristiche visive da restituire. I tipi validi di caratteristiche visive includono:
  • Adulto - rileva se l'immagine è pornografica (mostra nudità o un atto sessuale), sanguinosa (mostra violenza estrema o sangue) o allusiva (nota anche come contenuto piccante).
  • Marche - rileva vari marchi all'interno di un'immagine, inclusa la posizione approssimativa.
  • categorie - categorizza il contenuto dell'immagine secondo una tassonomia definita da Foundry Tools.
  • Descrizione - descrive il contenuto dell'immagine con una frase completa nelle lingue supportate.
  • Volti - Rileva se ci sono volti presenti. Se presente, genera coordinate, genere ed età.
  • Oggetti - rileva vari oggetti all'interno di un'immagine, inclusa la posizione approssimativa.
  • Tag - Etichetta l'immagine con una lista dettagliata di parole correlate al contenuto dell'immagine.
I nomi delle caratteristiche visive sono sensibili alla maiuscola. Sia le caratteristiche visive a colore che a immagine sono state deprecate, ma puoi accedere a questa funzionalità tramite una skill personalizzata. Consulta la documentazione Azure Vision Image Analysis su quali caratteristiche visive sono supportate con ciascun defaultLanguageCode.
details Un array di stringhe che indicano quali dettagli specifici del dominio restituire. I tipi validi di caratteristiche visive includono:
  • Celebrità - Identifica le celebrità se rilevate nell'immagine.
  • Punti di riferimento - identifica i punti di riferimento se rilevati nell'immagine.

Input delle competenze

Nome del campo di input Descrzione
image Tipo complesso. Attualmente funziona solo con il campo "/document/normalized_images", prodotto dal blob indexer Azure quando imageAction è impostato a un valore diverso da none.

Output delle competenze

Nome dell'output Descrzione
adult Output è un singolo oggetto adulto di tipo complesso, costituito da campi booleani (isAdultContent, isGoryContent, isRacyContent) e punteggi di tipo doppio (adultScore, goreScore, racyScore).
brands L'output è un array di oggetti di marca , dove l'oggetto è un tipo complesso composto da name (stringa) e uno confidence score (doppio). Restituisce inoltre a rectangle con quattro coordinate di riquadro delimitatore (x, y, w, h, in pixel) che indicano la posizione all'interno dell'immagine. Per il rettangolo, x e y sono in alto a sinistra. In basso a sinistra è x, y+h. In alto a destra è x+w, y. In basso a destra è x+w, y+h.
categories Output è un array di oggetti categoria , dove ogni oggetto categoria è un tipo complesso composto da una name (stringa), score (doppio), ed opzionale detail che contiene dettagli di celebrità o punti di riferimento. Vedi la tassonomia delle categorie per l'elenco completo dei nomi delle categorie. Un dettaglio è un tipo complesso annidato. Un dettaglio di celebrità consiste in un nome, un punteggio di fiducia e una casella di ripetizione del volto. Un dettaglio di riferimento consiste in un nome e un punteggio di fiducia.
description Output è un singolo oggetto descrizione di tipo complesso, costituito da liste di tags e caption (un array composto da Text (stringa) e confidence (doppio)).
faces Tipo complesso composto da age, gender, e faceBoundingBox con quattro coordinate di scatola delimitante (in pixel) che indicano la posizione all'interno dell'immagine. Le coordinate sono top, left, width, height.
objects L'output è un array di oggetti di caratteristiche visive. Ogni oggetto è di tipo complesso, composto da object (stringa), confidence (doppio), rectangle (con quattro coordinate di riquadro che indicano la posizione all'interno dell'immagine) e un parent che contiene un nome e una fiducia dell'oggetto .
tags Output è un array di oggetti imageTag , dove un oggetto tag è un tipo complesso composto da name (stringa), hint (stringa) e confidence (doppio). L'aggiunta di un indizio è rara. Viene generato solo se un tag è ambiguo. Ad esempio, un'immagine etichettata come "curling" potrebbe avere un accenno di "sport" per indicare meglio il contenuto.

Definizione di abilità campione

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

Indice di esempio

Per oggetti singoli (come adult e ), puoi strutturarli nell'indice come un description to return Collection(Edm.ComplexType) e adult output per descriptiontutti. Per maggiori informazioni sulla mappatura degli output ai campi indicizzati, vedi Appiattimento delle informazioni da tipi complessi.

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

Mappatura del campo di output di esempio

Il campo target può essere un campo complesso o una collezione. La definizione dell'indice specifica qualsiasi sottocampo.

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

Variazione delle mappature del campo di uscita (proprietà annidate)

Puoi definire mappature di campo di output a proprietà di livello inferiore, come solo celebrità o punti di riferimento. In questo caso, assicurati che lo schema dell'indice abbia un campo che contenga ogni dettaglio nello specifico.

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

Input di esempio

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

Output di esempio

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

Casi di errore

Nei seguenti casi di errore, nessun elemento viene estratto.

Codice di errore Descrzione
NotSupportedLanguage Il linguaggio fornito non è supportato.
InvalidImageUrl L'URL dell'immagine è formattato male o non accessibile.
InvalidImageFormat I dati di input non sono un'immagine valida.
InvalidImageSize L'immagine di input è troppo grande.
NotSupportedVisualFeature Il tipo di caratteristica specificato non è valido.
NotSupportedImage Immagini non supportate, ad esempio, pornografia infantile.
InvalidDetails Modello specifico di dominio non supportato.

Se ricevi un errore simile a "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", controlla il percorso. Sia le celebrità che i punti di riferimento sono proprietà sotto detail.

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

Vedere anche