Generare didascalie per le immagini in un'altra lingua

Nota

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.

Importante

Queste funzionalità e caratteristiche supportano la connessione ad altri servizi Microsoft e a servizi di terze parti. L'utilizzo di questi servizi è soggetto alle rispettive condizioni e potrebbe comportare l'elaborazione o l'archiviazione dei dati al di fuori del limite di conformità Azure, nonché il flusso dei dati nel limite di conformità Azure.

È tua responsabilità gestire l'eventuale trasferimento dei tuoi dati al di fuori dei confini di conformità e geografici della tua organizzazione e le relative implicazioni, nonché garantire che siano predisposte le autorizzazioni, i limiti e le approvazioni appropriati.

L'utente è responsabile di esaminare e testare attentamente le applicazioni compilate nel contesto dei casi d'uso specifici e di prendere tutte le decisioni e le personalizzazioni appropriate. Ciò include l'implementazione di mitigazioni di intelligenza artificiale responsabili, ad esempio metaprompt, filtri di contenuto o altri sistemi di sicurezza, e garantire che le applicazioni soddisfino gli standard di qualità, affidabilità, sicurezza e attendibilità appropriati. Per altre informazioni, vedere la nota sulla trasparenza Azure AI Search.

Questo articolo illustra come generare sottotitoli usando l'arricchimento tramite intelligenza artificiale e un set di competenze. Le immagini contengono spesso informazioni utili rilevanti negli scenari di ricerca. È possibile vettorializzare le immagini per rappresentare il contenuto visivo nell'indice di ricerca. In alternativa, è possibile utilizzare arricchimento e competenze tramite intelligenza artificiale per creare ed estrarre testo ricercabile dalle immagini.

La funzionalità Prompt GenAI può generare una descrizione di ogni immagine nella tua origine dati e l'indicizzatore inserisce tale descrizione in un indice di ricerca. Per visualizzare le descrizioni, eseguire una query che li include nella risposta.

Prerequisiti

Per usare il contenuto delle immagini in un set di competenze, è necessario:

  • Una fonte di dati supportata. È consigliabile Archiviazione di Azure.
  • File o BLOB contenenti immagini.
  • Accesso in lettura all'origine dati supportata. Questo articolo usa l'autenticazione basata su chiave, ma gli indicizzatori possono anche connettersi usando l'identità del servizio di ricerca e l'autenticazione Microsoft Entra ID. Per il controllo degli accessi basato sui ruoli, assegnare ruoli nell'origine dati per consentire l'accesso in lettura da parte dell'identità del servizio. Se si esegue il test in un computer di sviluppo locale, assicurarsi di disporre anche dell'accesso in lettura sulla fonte di dati supportata.
  • Indicizzatore di ricerca configurato per le azioni dell'immagine.
  • Set di competenze con la competenza Prompt GenAI.
  • Indice di ricerca con campi per ricevere l'output di testo generato, oltre alle mappature dei campi di output nell'indicizzatore che definiscono le associazioni.

Facoltativamente, è possibile definire proiezioni per accettare l'output analizzato dall'immagine in un archivio conoscenze per scenari di data mining.

Configurare gli indicizzatori per l'elaborazione di immagini

Dopo aver configurato i file di origine, abilitare la normalizzazione delle immagini impostando il imageAction parametro nella configurazione dell'indicizzatore. La normalizzazione delle immagini consente di rendere le immagini più uniformi per l'elaborazione downstream. La normalizzazione delle immagini include le operazioni seguenti:

  • Le immagini di grandi dimensioni vengono ridimensionate in base a un'altezza e una larghezza massime per renderle uniformi.
  • Per le immagini con metadati che specificano l'orientamento, la rotazione delle immagini viene modificata per il caricamento verticale.

Si noti che l'abilitazione di imageAction (l'impostazione di questo parametro su diverso da none) comporta un addebito aggiuntivo per l'estrazione delle immagini in base ai prezzi Azure AI Search.

  1. Creare o aggiornare un indicizzatore per impostare le proprietà di configurazione:

    {
      "parameters": {
        "configuration": {
          "dataToExtract": "contentAndMetadata",
          "parsingMode": "default",
          "imageAction": "generateNormalizedImages"
        }
      }
    }
    
  2. Impostare dataToExtract su contentAndMetadata (obbligatorio).

  3. Verificare che sia parsingMode impostato su predefinito (obbligatorio).

    Questo parametro determina la granularità dei documenti di ricerca creati nell'indice. La modalità predefinita configura una corrispondenza uno-a-uno in modo che un BLOB restituisca un documento di ricerca. Se i documenti sono di grandi dimensioni o se le funzionalità richiedono blocchi di testo più piccoli, è possibile aggiungere la funzionalità Suddivisione del testo che suddivide un documento in pagine per scopi di elaborazione. Tuttavia, per gli scenari di ricerca, è necessario un BLOB per ogni documento se l'arricchimento include l'elaborazione delle immagini.

  4. Impostare imageAction per abilitare il nodo normalized_images in un albero di enrichment (obbligatorio):

    • generateNormalizedImages per generare una matrice di immagini normalizzate come parte del cracking del documento.

    • generateNormalizedImagePerPage (si applica solo a PDF) per generare una matrice di immagini normalizzate in cui viene eseguito il rendering di ogni pagina nel PDF in un'immagine di output. Per i file non-PDF, il comportamento di questo parametro è simile a come se avessi impostato generateNormalizedImages. Tuttavia, l'impostazione generateNormalizedImagePerPage può rendere l'operazione di indicizzazione meno efficiente in base alla progettazione (in particolare per documenti di grandi dimensioni) perché devono essere generate diverse immagini.

  5. Facoltativamente, regolare la larghezza o l'altezza delle immagini normalizzate generate:

normalizedImageMaxWidth viene misurato in pixel. Il valore predefinito è 2.000. Il valore massimo è 10.000.

normalizedImageMaxHeight viene misurato in pixel. Il valore predefinito è 2.000. Il valore massimo è 10.000.

Informazioni sulle immagini normalizzate

Quando imageAction è impostato su un valore diverso da nessuno, il nuovo normalized_images campo contiene una matrice di immagini. Ogni immagine è un tipo complesso con i membri seguenti:

Componente dell'immagine Descrizione
Dati Stringa codificata in BASE64 dell'immagine normalizzata nel formato JPEG.
Larghezza Larghezza dell'immagine normalizzata in pixel.
Altezza Altezza dell'immagine normalizzata in pixel.
originalWidth Larghezza originale dell'immagine prima della normalizzazione.
originalHeight Altezza originale dell'immagine prima della normalizzazione.
rotationFromOriginal Rotazione antioraria in gradi effettuata per creare un'immagine normalizzata. Valore compreso tra 0 gradi e 360 gradi. Questo passaggio legge i metadati dall'immagine generata da una fotocamera o da uno scanner. In genere un multiplo di 90 gradi.
contentOffset L'offset di carattere all'interno del campo di contenuto da cui è stata estratta l'immagine. Questo campo è applicabile solo ai file con immagini incorporate. La contentOffset per le immagini estratte da documenti PDF si trova sempre alla fine del testo nella pagina da cui è stata estratta nel documento. Ciò significa che le immagini vengono visualizzate dopo tutto il testo della pagina, indipendentemente dalla posizione originale dell'immagine nella pagina.
numero di pagina Se l'immagine è stata estratta o sottoposta a rendering da un PDF, questo campo contiene il numero di pagina nel PDF da cui è stato estratto o sottoposto a rendering, a partire da 1. Se l'immagine non proviene da un PDF, questo campo è 0.

Valore di esempio di normalized_images:

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

Definire set di competenze per l'elaborazione di immagini

Questa sezione integra gli articoli di riferimento sulle competenze fornendo il contesto per l'uso di input, output e modelli delle competenze, in relazione all'elaborazione delle immagini.

  • Creare o aggiornare un set di competenze per aggiungere competenze.

Dopo aver creato il framework di base del set di competenze e aver configurato Gli strumenti Foundry, è possibile concentrarsi su ogni singola competenza di immagine, definire input e contesto di origine e mappare gli output ai campi in un indice o in un archivio conoscenze.

Nota

Per un set di competenze di esempio che combina l'elaborazione di immagini con l'elaborazione del linguaggio naturale a valle, consulta REST Tutorial: Use REST and AI to generate searchable content from Azure BLOBs. Illustra come inserire l'output dell'immagine delle competenze nel riconoscimento delle entità e nell'estrazione di frasi chiave.

Input di esempio per l'elaborazione di immagini

Come indicato, le immagini vengono estratte durante il cracking del documento e quindi normalizzate come passaggio preliminare. Le immagini normalizzate sono gli input di qualsiasi competenza di elaborazione delle immagini e sono sempre rappresentate in un albero del documento arricchito in uno dei due modi seguenti:

  • /document/normalized_images/* è per i documenti elaborati interi.
{
  "@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
  "context": "/document/normalized_images/*",
  "uri": "https://contoso.openai.azure.com/openai/deployments/contoso-gpt-4o/chat/completions?api-version=2025-01-01-preview",
  "apiKey": "<YOUR-API-KEY here>",
  "inputs": [
    {
      "name": "image",
      "source": "/document/normalized_images/*/data"
    },
    {
      "name": "systemMessage",
      "source": "='You are a useful artificial intelligence assistant that helps people.'"
    },
    {
      "name": "userMessage",
      "source": "='Describe what you see in this image in 20 words or less in Spanish.'"
    }
  ],
  "outputs": [
    {
      "name": "response",
      "targetName": "captionedImage"
    }
  ]
}

Esempio di uso delle risposte dello schema JSON con input di testo

Questo esempio illustra come usare output strutturati per i modelli linguistici. Questa funzionalità è attualmente supportata principalmente dai modelli linguistici OpenAI, anche se questo potrebbe cambiare in futuro.

{
  "@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
  "context": "/document/content",
  "uri": "https://contoso.openai.azure.com/openai/deployments/contoso-gpt-4o/chat/completions?api-version=2025-01-01-preview",
  "apiKey": "<YOUR-API-KEY here>",
  "inputs": [
    {
      "name": "systemMessage",
      "source": "='You are a useful artificial intelligence assistant that helps people.'"
    },
    {
      "name": "userMessage",
      "source": "='How many languages are there in the world and what are they?'"
    }
  ],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "structured_output",
      "strict": true,
      "schema": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number"
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "total",
          "languages"
        ],
        "additionalProperties": false
      }
    }
  },
  "outputs": [
    {
      "name": "response",
      "targetName": "responseJsonForLanguages"
    }
  ]
}

Mappare i risultati ai campi di ricerca

Il testo di output è rappresentato come nodi in un albero di documenti arricchito interno e ogni nodo deve essere mappato ai campi in un indice di ricerca o alle proiezioni in un repository di conoscenze, per rendere il contenuto disponibile nell'app.

Usare prima Create or Update - Index per aggiungere campi che accettino i risultati delle competenze.

Nell'esempio di raccolta campi seguente:

  • content è un contenuto BLOB.
  • metadata_storage_name contiene il nome del file (imposta retrievable su vero).
  • metadata_storage_path è il percorso univoco del BLOB ed è la chiave del documento predefinita.
  • merged_content viene restituito da Unisci testo (utile quando le immagini sono incorporate).
  • captioned_image è un output della competenza e deve essere un campo stringa per acquisire tutti gli output del modello linguistico nell'indice di ricerca.
"fields": [
  {
    "name": "content",
    "type": "Edm.String",
    "filterable": false,
    "retrievable": true,
    "searchable": true,
    "sortable": false
  },
  {
    "name": "metadata_storage_name",
    "type": "Edm.String",
    "filterable": true,
    "retrievable": true,
    "searchable": true,
    "sortable": false
  },
  {
    "name": "metadata_storage_path",
    "type": "Edm.String",
    "filterable": false,
    "key": true,
    "retrievable": true,
    "searchable": false,
    "sortable": false
  },
  {
    "name": "captioned_image",
    "type": "Edm.String",
    "filterable": false,
    "retrievable": true,
    "searchable": true,
    "sortable": false
  }
]

Usare quindi Update - Indexer per eseguire il mapping dell'output del set di competenze (nodi in un albero di arricchimento) ai campi di indicizzazione.

I documenti arricchiti sono interni. Per esternalizzare i nodi all'interno di un albero di documenti arricchiti, configura una mappatura dei campi di output che specifica quale campo indice riceve il contenuto del nodo. I dati arricchiti sono accessibili dall'app tramite un campo indice. L'esempio seguente mostra un nodo di testo (output OCR) in un documento arricchito mappato a un campo di testo in un indice di ricerca.

"outputFieldMappings": [
  {
    "sourceFieldName": "/document/normalized_images/*/captionedImage",
    "targetFieldName": "captioned_image"
  }
]

Eseguire l'indicizzatore per richiamare il recupero del documento di origine, l'elaborazione di immagini tramite didascalie del modello linguistico e l'indicizzazione.

Verificare i risultati

Eseguire una query sull'indice per controllare i risultati dell'elaborazione delle immagini. Usare Esplora ricerche come client di ricerca o qualsiasi strumento che invia richieste HTTP. La query seguente seleziona i campi che contengono l'output dell'elaborazione delle immagini.

POST /indexes/[index name]/docs/search?api-version=[api-version]
{
  "search": "A cat in a picture",
  "select": "metadata_storage_name, captioned_image"
}