Generování titulků pro obrázky v jiném jazyce

Poznámka

Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.

Important

Tyto funkce podporují připojení k jiným služby Microsoft a službám třetích stran. Použití těchto služeb podléhá vlastním podmínkám jednotlivých služeb a může vést ke zpracování nebo ukládání dat mimo hranici souladu Azure, stejně jako k toku dat do hranice souladu Azure.

Je vaší zodpovědností spravovat, jestli budou vaše data přetékat mimo dodržování předpisů a geografické hranice vaší organizace a případné související důsledky a že se zřídí příslušná oprávnění, hranice a schválení.

Zodpovídáte za pečlivou kontrolu a testování aplikací, které vytváříte v kontextu konkrétních případů použití, a za veškerá vhodná rozhodnutí a přizpůsobení. To zahrnuje implementaci vlastního zodpovědného zmírnění rizik umělé inteligence, jako jsou metaprompty, filtry obsahu nebo jiné bezpečnostní systémy, a zajištění toho, aby vaše aplikace splňovaly příslušné standardy kvality, spolehlivosti, zabezpečení a důvěryhodnosti. Další informace najdete v informacích o transparentnosti Azure AI Vyhledávač.

V tomto článku se dozvíte, jak generovat titulky pomocí rozšiřování AI a sady dovedností. Obrázky často obsahují užitečné informace, které jsou relevantní ve scénářích hledání. Obrázky můžete vektorizovat tak, aby představovaly vizuální obsah v indexu vyhledávání. Nebo můžete pomocí obohacení AI a dovednostních sad vytvářet a extrahovat prohledávatelný text z obrázků.

Dovednost GenAI Prompt může vygenerovat popis každého obrázku ve zdroji dat a indexer tento popis odešle do indexu vyhledávání. Pokud chcete zobrazit popisy, spusťte dotaz, který je obsahuje v odpovědi.

Požadavky

Pokud chcete pracovat s obsahem obrázků v sadě dovedností, potřebujete:

  • Podporovaný zdroj dat. Doporučujeme Azure Storage.
  • Soubory nebo datové objekty obsahující obrázky
  • Přístup pro čtení k podporovanému zdroji dat Tento článek používá ověřování založené na klíčích, ale indexery se můžou připojit také pomocí identity vyhledávací služby a ověřování Microsoft Entra ID. Pro řízení přístupu na základě role přiřaďte role ve zdroji dat, aby identita služby povolila přístup pro čtení. Pokud testujete na místním vývojovém počítači, ujistěte se, že máte k podporovanému zdroji dat přístup pro čtení.
  • Indexer vyhledávání nakonfigurovaný pro akce obrázků.
  • Sada dovedností s dovedností GenAI Prompt.
  • Index vyhledávání s poli pro příjem vygenerovaného textového výstupu a mapování výstupních polí v indexeru, které vytvářejí přidružení.

Volitelně můžete definovat projekce pro příjem výstupu analyzovaného obrázkem do úložiště znalostí pro scénáře dolování dat.

Konfigurace indexerů pro zpracování obrázků

Po nastavení zdrojových souborů povolte normalizaci obrázků nastavením imageAction parametru v konfiguraci indexeru. Normalizace obrázků pomáhá zajistit, aby byly obrázky jednotnější pro následné zpracování. Normalizace obrázků zahrnuje následující operace:

  • Velikost velkých obrázků se mění na maximální výšku a šířku, aby byly jednotná.
  • U obrázků s metadaty, které určují orientaci, se otočení obrázku upraví pro vertikální načítání.

Upozorňujeme, že povolení imageAction (nastavení tohoto parametru na jinou než none) bude účtovat další poplatek za extrakci obrázků podle cen Azure AI Vyhledávač.

  1. Vytvořte nebo aktualizujte indexer a nastavte vlastnosti konfigurace:

    {
      "parameters": {
        "configuration": {
          "dataToExtract": "contentAndMetadata",
          "parsingMode": "default",
          "imageAction": "generateNormalizedImages"
        }
      }
    }
    
  2. Nastaveno dataToExtract na contentAndMetadata (povinné).

  3. Ověřte, že parsingMode je nastavená na výchozí (povinné).

    Tento parametr určuje členitost vyhledávacích dokumentů vytvořených v indexu. Výchozí režim nastaví korespondenci 1:1 tak, aby jeden objekt blob byl výsledkem jednoho hledaného dokumentu. Pokud jsou dokumenty velké nebo pokud dovednosti vyžadují menší bloky textu, můžete přidat dovednost Rozdělení textu, která rozdělí dokument do stránkování pro účely zpracování. V případě scénářů hledání se ale vyžaduje jeden objekt blob na dokument, pokud rozšiřování zahrnuje zpracování obrázků.

  4. Nastavte imageAction pro umožnění uzlu normalized_images ve stromu rozšiřování (povinné):

    • generateNormalizedImages generovat pole normalizovaných obrázků jako součást prolomení dokumentu.

    • generateNormalizedImagePerPage (platí jenom pro PDF) pro vygenerování pole normalizovaných obrázků, kde se každá stránka v PDF vykresluje na jeden výstupní obrázek. U souborů, které nejsou soubory PDF, chování tohoto parametru je podobné, jako kdybyste nastavili generateNormalizedImages. Nastavení generateNormalizedImagePerPage však může způsobit, že operace indexování jsou méně výkonné (zejména u velkých dokumentů), protože by bylo nutné vygenerovat mnoho obrázků.

  5. Volitelně můžete upravit šířku nebo výšku vygenerovaných normalizovaných obrázků:

normalizedImageMaxWidth se měří v pixelech. Výchozí hodnota je 2 000. Maximální hodnota je 10 000.

normalizedImageMaxHeight se měří v pixelech. Výchozí hodnota je 2 000. Maximální hodnota je 10 000.

Informace o normalizovaných obrázcích

Pokud imageAction je nastavena jiná hodnota než žádná, obsahuje nové normalized_images pole pole obrázků. Každý obrázek je komplexní typ, který má následující členy:

Člen snímku Popis
data Base64 kódovaný řetězec normalizovaného obrázku ve formátu JPEG.
Šířka Šířka normalizovaného obrázku v pixelech
Výška Výška normalizovaného obrázku v pixelech
OriginalWidth Původní šířka obrázku před normalizací.
původníVýška Původní výška obrázku před normalizací.
rotaceOdOriginálu Otočení proti směru hodinových ručiček ve stupních, které bylo provedeno k vytvoření normalizovaného obrázku. Hodnota mezi 0 a 360 stupni. Tento krok čte metadata z obrázku vygenerovaného fotoaparátem nebo skenerem. Obvykle násobek 90 stupňů.
posun obsahu Posun znaku v poli obsahu, ze kterého byl obraz extrahován. Toto pole platí jenom pro soubory s vloženými obrázky. Obrázky contentOffset extrahované z dokumentů PDF jsou vždy na konci textu na stránce, kde byly extrahovány v dokumentu. To znamená, že obrázky se zobrazí po všech textech na této stránce bez ohledu na původní umístění obrázku na stránce.
číslo stránky Pokud se obrázek extrahoval nebo vykresloval z PDF, obsahuje toto pole číslo stránky v PDF, ze které bylo extrahováno nebo vykresleno od 1. Pokud obrázek není z PDF, je toto pole 0.

Ukázková hodnota normalized_images:

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

Definujte sady schopností pro zpracování obrázků

Tato část doplňuje referenční články dovedností tím, že poskytuje kontext pro práci se vstupy dovedností, výstupy a vzory, které souvisejí se zpracováním obrázků.

  • Vytvořte nebo aktualizujte sadu dovedností, abyste mohli přidat dovednosti.

Jakmile vytvoříte základní architekturu sady dovedností a nakonfigurujete Nástroje Foundry, můžete se zaměřit na jednotlivé dovednosti obrázků, definovat vstupy a zdrojový kontext a mapovat výstupy na pole v indexu nebo úložišti znalostí.

Poznámka

Příklad sady dovedností, která kombinuje zpracování obrázků s podřízeným zpracováním přirozeného jazyka, najdete v tématu REST Tutorial: Použití rozhraní REST a AI ke generování prohledávatelného obsahu z objektů blob Azure. Ukazuje, jak začlenit výstup z analýzy obrázků dovedností do rozpoznávání entit a extrakce klíčových frází.

Příklady vstupů pro zpracování obrázků

Jak je uvedeno, obrázky se extrahují během prolomení dokumentu a pak se normalizují jako předběžný krok. Normalizované obrázky jsou vstupy do libovolné dovednosti zpracování obrázků a vždy jsou reprezentovány v rozšířeném stromu dokumentů jedním ze dvou způsobů:

  • /document/normalized_images/* je určen pro dokumenty, které jsou zpracovány jako celek.
{
  "@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"
    }
  ]
}

Příklad použití odpovědí schématu JSON s textovými vstupy

Tento příklad ukazuje, jak používat strukturované výstupy pro jazykové modely. Tato funkce je v současné době podporována většinou jazykovými modely OpenAI, i když se to může v budoucnu změnit.

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

Mapovat výstupy na vyhledávací pole

Výstupní text je reprezentován jako uzly v interním rozšířeném stromu dokumentů a každý uzel musí být namapován na pole v indexu vyhledávání nebo na projekce ve znalostním úložišti, aby byl obsah dostupný ve vaší aplikaci.

Nejprve pomocí příkazu Vytvořit nebo aktualizovat – Index přidejte pole pro příjem výstupů dovedností.

V následujícím příkladu sbírky polí:

  • content je obsah objektu blob.
  • metadata_storage_name obsahuje název souboru (nastaven retrievable na hodnotu true).
  • metadata_storage_path je jedinečná cesta objektu blob a je výchozí klíč dokumentu.
  • merged_content je výstup z funkce Sloučení textu (užitečné při vložení obrázků).
  • captioned_image je výstup dovednosti a musí se jednat o řetězcové pole pro zachycení veškerého výstupu jazykového modelu v indexu vyhledávání.
"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
  }
]

Pak pomocí Update – Indexer namapuje výstup sady dovedností (uzly ve stromu rozšiřování) na indexovací pole.

Rozšířené dokumenty jsou interní. Pokud chcete externalizovat uzly v rozšířeném stromu dokumentů, nastavte mapování výstupního pole, které určuje, které pole indexu přijímá obsah uzlu. K obohaceným datům přistupuje vaše aplikace prostřednictvím pole indexu. Následující příklad ukazuje textový uzel (výstup OCR) v rozšířeném dokumentu, který je namapovaný na textové pole v indexu vyhledávání.

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

Spuštěním indexeru vyvoláte načtení zdrojového dokumentu, zpracování obrázků prostřednictvím titulků jazykového modelu a indexování.

Ověření výsledků

Spuštěním dotazu na index zkontrolujte výsledky zpracování obrázků. Použijte Search Explorer jako klienta vyhledávání nebo jakýkoli nástroj, který odesílá požadavky HTTP. Následující dotaz vybere pole, která obsahují výstup zpracování obrázků.

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