다른 언어로 이미지에 대한 캡션 생성

참고

Azure AI 검색 Azure 포털, REST API 및 Azure SDK 통해 사용할 수 있습니다. 또한 엔터프라이즈 콘텐츠를 Microsoft Foundry 포털의 에이전트에 대해 재사용 가능한 사용 권한 인식 기술 자료로 변환하는 관리되는 기술 계층인 Foundry IQ를 뒷받침합니다.

Important

이러한 기능과 기능은 다른 Microsoft 서비스 및 타사 서비스에 대한 연결을 지원합니다. 이러한 서비스의 사용은 해당 약관의 적용을 받으며 Azure 규정 준수 경계 외부의 데이터 처리 또는 스토리지뿐만 아니라 Azure 규정 준수 경계로 데이터가 유입될 수 있습니다.

데이터가 조직의 규정 준수 및 지리적 경계와 관련된 의미를 벗어나는지 여부와 적절한 권한, 경계 및 승인이 프로비전되는지를 관리하는 것은 사용자의 책임입니다.

특정 사용 사례의 컨텍스트에서 빌드한 애플리케이션을 신중하게 검토하고 테스트하고 모든 적절한 결정 및 사용자 지정을 수행할 책임이 있습니다. 여기에는 메타프롬프트, 콘텐츠 필터 또는 기타 안전 시스템과 같은 책임 있는 AI 완화를 구현하고 애플리케이션이 적절한 품질, 안정성, 보안 및 신뢰성 표준을 충족하도록 보장하는 것이 포함됩니다. 자세한 내용은 Azure AI 검색 투명성 정보를 참고하세요.

이 문서에서는 AI 보강 및 기술 세트를 사용하여 캡션을 생성하는 방법을 알아봅니다. 이미지에는 종종 검색 시나리오와 관련된 유용한 정보가 포함됩니다. 이미지를 벡터화하여 검색 인덱스에서 시각적 콘텐츠를 나타낼 수 있습니다. 또는 AI 보강 및 기술 세트를 사용하여 이미지에서 검색 가능한 텍스트를 만들고 추출할 수 있습니다.

GenAI 프롬프트 기술은 데이터 원본의 각 이미지에 대한 설명을 생성할 수 있으며 인덱서는 해당 설명을 검색 인덱스에 푸시합니다. 설명을 보려면 응답에 설명이 포함된 쿼리를 실행합니다.

필수 구성 요소

기술 세트에서 이미지 콘텐츠를 작업하려면 다음이 필요합니다.

  • 지원되는 데이터 원본입니다. Azure Storage 것이 좋습니다.
  • 이미지를 포함하는 파일 또는 Blob입니다.
  • 지원되는 데이터 원본에 대한 읽기 액세스 권한입니다. 이 문서에서는 키 기반 인증을 사용하지만 인덱서는 검색 서비스 ID 및 Microsoft Entra ID 인증을 사용하여 연결할 수도 있습니다. 역할 기반 액세스 제어의 경우 데이터 원본에 역할을 할당하여 서비스 ID의 읽기 액세스를 허용합니다. 로컬 개발 머신에서 테스트하는 경우 지원되는 데이터 원본에 대한 읽기 액세스 권한도 있는지 확인합니다.
  • 이미지 작업에 대해 구성된 검색 인덱서입니다.
  • GenAI 프롬프트 기술을 포함한 기술 집합입니다.
  • 생성된 텍스트 출력을 위한 필드와 인덱서 내에서 연결을 설정하는 출력 필드 매핑이 결합된 검색 인덱스입니다.

필요에 따라 데이터 마이닝 시나리오에 대한 지식 저장소 에 이미지 분석 출력을 허용하는 프로젝션을 정의할 수 있습니다.

이미지 처리를 위한 인덱서 구성

원본 파일이 설정되면 인덱서 구성에서 매개 변수를 imageAction 설정하여 이미지 정규화를 사용하도록 설정합니다. 이미지 정규화는 다운스트림 처리를 위해 이미지를 보다 균일하게 만드는 데 도움이 됩니다. 이미지 정규화에는 다음 작업이 포함됩니다.

  • 큰 이미지의 크기를 최대 높이와 너비로 조정하여 균일하게 만듭니다.
  • 방향을 지정하는 메타데이터가 있는 이미지의 경우 세로 로딩을 위해 이미지 회전이 조정됩니다.

imageAction(이 매개 변수를 none 이외의 값으로 설정)을 사용하도록 설정하면 Azure AI 검색 가격 책정 따라 이미지 추출에 대한 추가 요금이 발생합니다.

  1. 구성 속성을 설정하기 위해 인덱서 만들기 또는 업데이트:

    {
      "parameters": {
        "configuration": {
          "dataToExtract": "contentAndMetadata",
          "parsingMode": "default",
          "imageAction": "generateNormalizedImages"
        }
      }
    }
    
  2. dataToExtract을 contentAndMetadata으로 설정합니다 (필수).

  3. parsingMode(필수)으로 설정되어 있는지 확인합니다.

    이 매개 변수는 인덱스에 생성된 검색 문서의 세분성을 결정합니다. 기본 모드는 하나의 Blob에서 하나의 검색 문서가 생성되도록 일대일 대응을 설정합니다. 문서가 크거나 기술에 더 작은 텍스트 청크가 필요한 경우 처리를 위해 문서를 페이징으로 세분화하는 텍스트 분할 기술을 추가할 수 있습니다. 그러나 검색 시나리오의 경우 보강에 이미지 처리가 포함된 경우 문서당 하나의 Blob이 필요합니다.

  4. imageAction를 보강 트리의 normalized_images 노드를 활성화하도록 설정합니다 (필수):

    • generateNormalizedImages 문서 크래킹의 일부로 정규화된 이미지 배열을 생성합니다.

    • generateNormalizedImagePerPage (PDF에만 적용됨) PDF의 각 페이지가 하나의 출력 이미지로 렌더링되는 정규화된 이미지 배열을 생성합니다. PDF가 아닌 파일의 경우 이 매개 변수의 동작은 설정한 generateNormalizedImages것과 비슷합니다. 그러나 여러 이미지를 생성해야 하므로 설정 generateNormalizedImagePerPage 으로 인해 인덱싱 작업이 디자인에 따라 성능이 낮아질 수 있습니다(특히 큰 문서의 경우).

  5. 필요에 따라 생성된 정규화된 이미지의 너비 또는 높이를 조정합니다.

normalizedImageMaxWidth 는 픽셀 단위로 측정됩니다. 기본값은 2,000입니다. 최대값은 10,000입니다.

normalizedImageMaxHeight 는 픽셀 단위로 측정됩니다. 기본값은 2,000입니다. 최대값은 10,000입니다.

정규화된 이미지 정보

imageAction 이외의 값으로 설정되면 새 normalized_images 필드에 이미지 배열이 포함됩니다. 각 이미지는 다음 멤버가 있는 복합 형식입니다.

이미지 멤버 설명
데이터 정규화된 이미지의 BASE64로 인코딩된 문자열(JPEG 형식)입니다.
너비 정규화된 이미지의 너비(픽셀)입니다.
높이 정규화된 이미지의 높이(픽셀)입니다.
원래 너비 정규화 전 이미지의 원래 너비입니다.
원래 높이 정규화 전 이미지의 원래 높이입니다.
rotationFromOriginal 정규화된 이미지를 생성하기 위해 발생한 각도의 시계 반대 방향 회전입니다. 0도에서 360도 사이의 값입니다. 이 단계에서는 카메라 또는 스캐너에서 생성된 이미지에서 메타데이터를 읽습니다. 일반적으로 90도의 배수입니다.
contentOffset 이미지가 추출된 콘텐츠 필드 내의 문자 오프셋입니다. 이 필드는 이미지가 포함된 파일에만 적용됩니다. contentOffset PDF 문서에서 추출된 이미지의 경우 항상 문서에서 추출된 페이지의 텍스트 끝에 있습니다. 즉, 이미지는 페이지에 있는 이미지의 원래 위치에 관계없이 해당 페이지의 모든 텍스트 후에 표시됩니다.
페이지 번호 이미지를 PDF에서 추출하거나 렌더링한 경우 이 필드에는 1부터 추출 또는 렌더링된 PDF의 페이지 번호가 포함됩니다. 이미지가 PDF에서 온 것이 아니면 이 필드는 0입니다.

샘플 값의 예:normalized_images

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

이미지 처리를 위한 기술 세트 정의

이 섹션에서는 이미지 처리와 관련된 기술 입력, 출력 및 패턴을 사용하기 위한 컨텍스트를 제공하여 기술 참조 문서를 보완합니다.

  • 기술을 추가하기 위해 기술 세트를 만들거나 업데이트합니다.

기술 세트의 기본 프레임워크가 만들어지고 Foundry 도구가 구성되면 각 개별 이미지 기술에 초점을 맞추고, 입력 및 원본 컨텍스트를 정의하고, 출력을 인덱스 또는 지식 저장소의 필드에 매핑할 수 있습니다.

참고

이미지 처리를 다운스트림 자연어 처리와 결합하는 기술 세트의 예는 REST 자습서: REST 및 AI를 사용하여 Azure Blob 검색 가능한 콘텐츠를 생성합니다. 기술 이미징 출력을 엔터티 인식 및 핵심 구 추출에 공급하는 방법을 보여 줍니다.

이미지 처리를 위한 예제 입력

언급했듯이, 이미지는 문서 크래킹 중에 추출된 다음 예비 단계로 정규화됩니다. 정규화된 이미지는 모든 이미지 처리 기술에 대한 입력이며 항상 다음 두 가지 방법 중 하나로 보강된 문서 트리에 표시됩니다.

  • /document/normalized_images/* 는 전체로 처리되는 문서용입니다.
{
  "@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"
    }
  ]
}

텍스트 입력과 함께 JSON 스키마 응답을 사용하는 예제

이 예제에서는 언어 모델에 대해 구조화된 출력을 사용하는 방법을 보여 줍니다. 이 기능은 현재 주로 OpenAI 언어 모델에서 지원되지만 나중에 변경될 수 있습니다.

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

출력을 검색 필드에 매핑합니다

출력 텍스트는 내부 보강된 문서 트리의 노드로 표시되며, 각 노드는 앱에서 콘텐츠를 사용할 수 있도록 검색 인덱스의 필드 또는 지식 저장소의 프로젝션에 매핑되어야 합니다.

먼저 만들기 또는 업데이트 - 인덱 스를 사용하여 기술 출력을 수락할 필드를 추가합니다.

다음 필드 컬렉션 예제에서:

  • content 는 Blob 콘텐츠입니다.
  • metadata_storage_name에는 파일의 이름이 포함되어 있습니다(retrievable로 설정).
  • metadata_storage_path 는 Blob의 고유 경로이며 기본 문서 키입니다.
  • merged_content 는 텍스트 병합의 출력입니다(이미지가 포함된 경우 유용).
  • captioned_image 는 기술 출력이며 검색 인덱스 내의 모든 언어 모델 출력을 캡처하는 문자열 필드여야 합니다.
"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
  }
]

다음으로 Update - Indexer 를 사용하여 기술 세트 출력(보강 트리의 노드)을 인덱스 필드에 매핑합니다.

보강된 문서는 내부 문서입니다. 보강된 문서 트리에서 노드를 외부화하려면 노드 콘텐츠를 수신하는 인덱스 필드를 지정하는 출력 필드 매핑을 설정합니다. 인덱스 필드를 통해 앱에서 보강된 데이터에 액세스합니다. 다음 예제에서는 검색 인덱스의 텍스트 필드에 매핑된 보강된 문서의 텍스트 노드(OCR 출력)를 보여 줍니다.

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

인덱서를 실행하여 원본 문서 검색, 언어 모델 캡션을 통한 이미지 처리 및 인덱싱을 호출합니다.

결과 확인

인덱스를 상대로 쿼리를 실행하여 이미지 처리 결과를 확인합니다. 검색 탐색기를 검색 클라이언트 또는 HTTP 요청을 보내는 도구로 사용합니다. 다음 쿼리는 이미지 처리의 출력을 포함하는 필드를 선택합니다.

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