Habilidade de Layout de Documento

A habilidade layout de documento usa o modelo de layout do Azure Document Intelligence nas Ferramentas de Fundição para analisar um documento, detectar sua estrutura e características e produzir uma representação sintática no formato Markdown ou texto. Essa habilidade dá suporte à extração de texto e imagem, a última das quais inclui metadados de localização que preservam a posição da imagem em um documento. A proximidade da imagem com o conteúdo relacionado é benéfica em cenários de pesquisa de rag (geração aumentada de recuperação) e multimodal .

Para transações que excedem 20 documentos por indexador por dia, essa habilidade exige que você anexe um recurso faturável do Microsoft Foundry ao seu conjunto de habilidades. A execução de habilidades internas é cobrada pelo preço padrão das Ferramentas de Fundiária existentes.

Este artigo é a documentação de referência da habilidade layout do documento. Para obter informações de uso, consulte Como dividir e vetorizar pelo layout do documento.

Tip

É comum usar essa habilidade no conteúdo que tem estrutura e imagens, como PDFs. O tutorial multimodal demonstra a verbalização de imagem com duas estratégias de agrupamento de dados diferentes.

Limitations

Essa habilidade tem as seguintes limitações:

  • A habilidade não é adequada para documentos grandes que exigem mais de cinco minutos de processamento no modelo de layout do Azure Document Intelligence. A habilidade atinge o tempo limite, mas os encargos ainda se aplicam ao recurso Foundry se ele estiver anexado ao conjunto de habilidades para fins de cobrança. Verifique se os documentos são otimizados para permanecer dentro dos limites de processamento para evitar custos desnecessários.

  • Como essa habilidade chama o modelo de layout do Azure Document Intelligence, todos os comportamentos de serviço documentados para diferentes tipos de documento para diferentes tipos de arquivo se aplicam à sua saída. Por exemplo, arquivos DO Word (DOCX) e PDF podem produzir resultados diferentes devido a diferenças na forma como as imagens são tratadas. Se o comportamento de imagem consistente em DOCX e PDF for necessário, considere converter documentos em PDF ou examinar a documentação de pesquisa multimodal para obter abordagens alternativas.

Supported regions

A habilidade layout de documento chama v4.0 (2024-11-30) da API REST do Azure Document Intelligence.

As regiões com suporte variam de acordo com a modalidade e como a habilidade se conecta ao modelo de layout do Azure Document Intelligence. Atualmente, a versão implementada do modelo de layout não dá suporte a regiões 21Vianet .

Approach Requirement
Assistente de importação de dados Crie um serviço do Pesquisa de IA do Azure  e uma conta de vários serviços de IA do Azure em uma das seguintes regiões: Leste dos EUA, Oeste da Europa 2 ou Centro-Norte dos EUA.
Programático, usando uma chave de recurso do Microsoft Foundry para cobrança Crie um serviço do Pesquisa de IA do Azure  e um recurso do Microsoft Foundry na mesma região. A região deve dar suporte ao Pesquisa de IA do Azure  e ao Azure Document Intelligence.
Programático, usando a autenticação da ID do Microsoft Entra (versão prévia) para cobrança Nenhum requisito da mesma região. Crie um serviço do Pesquisa de IA do Azure  e um recurso do Microsoft Foundry em qualquer região em que cada serviço esteja disponível.

Formatos de arquivo com suporte

Essa habilidade reconhece os seguintes formatos de arquivo:

  • .PDF
  • .JPEG
  • .JPG
  • .PNG
  • .BMP
  • .TIFF
  • .DOCX
  • .XLSX
  • .PPTX
  • .HTML

Supported languages

Para obter texto impresso, consulte os idiomas compatíveis com o modelo de layout do Azure Document Intelligence.

@odata.type

Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill

Data limits

  • Para PDF e TIFF, até 2.000 páginas podem ser processadas (com uma assinatura de camada gratuita, apenas as duas primeiras páginas são processadas).
  • Mesmo que o tamanho do arquivo para analisar documentos seja de 500 MB para a camada S0 paga do Azure Document Intelligence e 4 MB para a camada gratuita do Azure Document Intelligence (F0), a indexação está sujeita aos limites do indexador da camada de serviço de pesquisa.
  • As dimensões da imagem devem ter entre 50 pixels x 50 pixels ou 10.000 pixels x 10.000 pixels.
  • Se seus PDFs estiverem bloqueados por senha, remova o bloqueio antes de executar o indexador.

Skill parameters

Os parâmetros diferenciam maiúsculas de minúsculas. Vários parâmetros foram introduzidos em versões de visualização específicas da API REST. É recomendável usar a versão disponível em geral (2025-09-01) ou a versão prévia mais recente (2025-11-01-preview) para acesso completo a todos os parâmetros.

Parameter name Allowed Values Description
outputMode oneToMany Controla a cardinalidade da saída produzida pela habilidade.
markdownHeaderDepth h1, h2, h3, h4, , h5h6(default) Aplica-se somente se outputFormat estiver definido como markdown. Esse parâmetro descreve o nível de aninhamento mais profundo que deve ser considerado. Por exemplo, se o markdownHeaderDepth for h3, todas as seções mais profundas, como h4, serão revertidas para h3.
outputFormat markdown(default), text New. Controla o formato da saída gerada pela habilidade.
extractionOptions ["images"], , ["images", "locationMetadata"]["locationMetadata"] New. Identifique qualquer conteúdo extra extraído do documento. Defina uma matriz de enumes que correspondem ao conteúdo a ser incluído na saída. Por exemplo, se for extractionOptions["images", "locationMetadata"], a saída inclui imagens e metadados de localização que fornecem informações de localização da página relacionadas ao local em que o conteúdo foi extraído, como um número de página ou seção. Esse parâmetro se aplica a ambos os formatos de saída.
chunkingProperties See below. New. Aplica-se somente se outputFormat estiver definido como text. Opções que encapsulam como agrupar conteúdo de texto durante a recompilação de outros metadados.
ChunkingProperties Parameter Version Allowed Values Description
unit Characters. atualmente, o único valor permitido. O comprimento da parte é medido em caracteres, em oposição a palavras ou tokens New. Controla a cardinalidade da unidade de partes.
maximumLength Qualquer inteiro entre 300-50000 New. O comprimento máximo da parte em caracteres, conforme medido por String.Length.
overlapLength Integer. O valor precisa ser menor que a metade do maximumLength New. O comprimento da sobreposição fornecida entre duas partes de texto.

Skill inputs

Input name Description
file_data O arquivo do qual o conteúdo deve ser extraído.

A entrada "file_data" deve ser um objeto definido como:

{
  "$type": "file",
  "data": "BASE64 encoded string of the file"
}

Como alternativa, ele pode ser definido como:

{
  "$type": "file",
  "url": "URL to download file",
  "sasToken": "OPTIONAL: SAS token for authentication if the URL provided is for a file in blob storage"
}

O objeto de referência de arquivo pode ser gerado de uma das seguintes maneiras:

  • Definindo o allowSkillsetToReadFileData parâmetro na definição do indexador como true. Essa configuração cria um caminho /document/file_data que é um objeto que representa os dados de arquivo originais baixados da fonte de dados do blob. Esse parâmetro só se aplica a arquivos no Armazenamento de Blobs do Azure.

  • Ter uma habilidade personalizada retornando uma definição de objeto JSON que fornece $type, dataou url .sastoken O $type parâmetro deve ser definido como file, e data deve ser a matriz de bytes codificada em base 64 do conteúdo do arquivo. O url parâmetro deve ser uma URL válida com acesso para baixar o arquivo nesse local.

Skill outputs

Output name Description
markdown_document Aplica-se somente se outputFormat estiver definido como markdown. Uma coleção de objetos "sections", que representam cada seção individual no documento Markdown.
text_sections Aplica-se somente se outputFormat estiver definido como text. Uma coleção de objetos de partes de texto, que representam o texto dentro dos limites de uma página (fatorando em mais partes configuradas), incluindo os próprios cabeçalhos de seção. O objeto de parte de texto inclui locationMetadata , se aplicável.
normalized_images Aplica-se somente se outputFormat estiver definido text e extractionOptions incluir images. Uma coleção de imagens que foram extraídas do documento, inclusive locationMetadata se aplicável.

Definição de exemplo para o modo de saída markdown

{
  "skills": [
    {
      "description": "Analyze a document",
      "@odata.type": "#Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill",
      "context": "/document",
      "outputMode": "oneToMany", 
      "markdownHeaderDepth": "h3", 
      "inputs": [
        {
          "name": "file_data",
          "source": "/document/file_data"
        }
      ],
      "outputs": [
        {
          "name": "markdown_document", 
          "targetName": "markdown_document" 
        }
      ]
    }
  ]
}

Saída de exemplo para o modo de saída markdown

{
  "markdown_document": [
    { 
      "content": "Hi this is Jim \r\nHi this is Joe", 
      "sections": { 
        "h1": "Foo", 
        "h2": "Bar", 
        "h3": "" 
      },
      "ordinal_position": 0
    }, 
    { 
      "content": "Hi this is Lance",
      "sections": { 
         "h1": "Foo", 
         "h2": "Bar", 
         "h3": "Boo" 
      },
      "ordinal_position": 1,
    } 
  ] 
}

O valor dos markdownHeaderDepth controles do número de chaves no dicionário "seções". Na definição de habilidade de exemplo, como é markdownHeaderDepth "h3", há três chaves no dicionário "seções": h1, h2, h3.

Exemplo de modo de saída de texto e extração de imagem e metadados

Este exemplo demonstra como gerar conteúdo de texto em partes de tamanho fixo e extrair imagens junto com metadados de localização do documento.

Definição de exemplo para o modo de saída de texto e a extração de imagem e metadados

{
  "skills": [
    {
      "description": "Analyze a document",
      "@odata.type": "#Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill",
      "context": "/document",
      "outputMode": "oneToMany",
      "outputFormat": "text",
      "extractionOptions": ["images", "locationMetadata"],
      "chunkingProperties": {     
          "unit": "characters",
          "maximumLength": 2000, 
          "overlapLength": 200
      },
      "inputs": [
        {
          "name": "file_data",
          "source": "/document/file_data"
        }
      ],
      "outputs": [
        { 
          "name": "text_sections", 
          "targetName": "text_sections" 
        }, 
        { 
          "name": "normalized_images", 
          "targetName": "normalized_images" 
        } 
      ]
    }
  ]
}

Saída de exemplo para o modo de saída de texto e a extração de imagem e metadados

{
  "text_sections": [
      {
        "id": "1_7e6ef1f0-d2c0-479c-b11c-5d3c0fc88f56",
        "content": "the effects of analyzers using Analyze Text (REST). For more information about analyzers, see Analyzers for text processing.During indexing, an indexer only checks field names and types. There's no validation step that ensures incoming content is correct for the corresponding search field in the index.Create an indexerWhen you're ready to create an indexer on a remote search service, you need a search client. A search client can be the Azure portal, a REST client, or code that instantiates an indexer client. We recommend the Azure portal or REST APIs for early development and proof-of-concept testing.Azure portal1. Sign in to the Azure portal 2, then find your search service.2. On the search service Overview page, choose from two options:· Import data wizard: The wizard is unique in that it creates all of the required elements. Other approaches require a predefined data source and index.All services > Azure Al services | Al Search >demo-search-svc Search serviceSearchAdd indexImport dataImport and vectorize dataOverviewActivity logEssentialsAccess control (IAM)Get startedPropertiesUsageMonitoring· Add indexer: A visual editor for specifying an indexer definition.",
        "locationMetadata": {
          "pageNumber": 1,
          "ordinalPosition": 0,
          "boundingPolygons": "[[{\"x\":1.5548,\"y\":0.4036},{\"x\":6.9691,\"y\":0.4033},{\"x\":6.9691,\"y\":0.8577},{\"x\":1.5548,\"y\":0.8581}],[{\"x\":1.181,\"y\":1.0627},{\"x\":7.1393,\"y\":1.0626},{\"x\":7.1393,\"y\":1.7363},{\"x\":1.181,\"y\":1.7365}],[{\"x\":1.1923,\"y\":2.1466},{\"x\":3.4585,\"y\":2.1496},{\"x\":3.4582,\"y\":2.4251},{\"x\":1.1919,\"y\":2.4221}],[{\"x\":1.1813,\"y\":2.6518},{\"x\":7.2464,\"y\":2.6375},{\"x\":7.2486,\"y\":3.5913},{\"x\":1.1835,\"y\":3.6056}],[{\"x\":1.3349,\"y\":3.9489},{\"x\":2.1237,\"y\":3.9508},{\"x\":2.1233,\"y\":4.1128},{\"x\":1.3346,\"y\":4.111}],[{\"x\":1.5705,\"y\":4.5322},{\"x\":5.801,\"y\":4.5326},{\"x\":5.801,\"y\":4.7311},{\"x\":1.5704,\"y\":4.7307}]]"
        },
        "sections": []
      },
      {
        "id": "2_25134f52-04c3-415a-ab3d-80729bd58e67",
        "content": "All services > Azure Al services | Al Search >demo-search-svc | Indexers Search serviceSearch0«Add indexerRefreshDelete:selected: TagsFilter by name ...:selected: Diagnose and solve problemsSearch managementStatusNameIndexesIndexers*Data sourcesRun the indexerBy default, an indexer runs immediately when you create it on the search service. You can override this behavior by setting disabled to true in the indexer definition. Indexer execution is the moment of truth where you find out if there are problems with connections, field mappings, or skillset construction.There are several ways to run an indexer:· Run on indexer creation or update (default).. Run on demand when there are no changes to the definition, or precede with reset for full indexing. For more information, see Run or reset indexers.· Schedule indexer processing to invoke execution at regular intervals.Scheduled execution is usually implemented when you have a need for incremental indexing so that you can pick up the latest changes. As such, scheduling has a dependency on change detection.Indexers are one of the few subsystems that make overt outbound calls to other Azure resources. In terms of Azure roles, indexers don't have separate identities; a connection from the search engine to another Azure resource is made using the system or user- assigned managed identity of a search service. If the indexer connects to an Azure resource on a virtual network, you should create a shared private link for that connection. For more information about secure connections, see Security in Azure Al Search.Check results",
        "locationMetadata": {
          "pageNumber": 2,
          "ordinalPosition": 1,
          "boundingPolygons": "[[{\"x\":2.2041,\"y\":0.4109},{\"x\":4.3967,\"y\":0.4131},{\"x\":4.3966,\"y\":0.5505},{\"x\":2.204,\"y\":0.5482}],[{\"x\":2.5042,\"y\":0.6422},{\"x\":4.8539,\"y\":0.6506},{\"x\":4.8527,\"y\":0.993},{\"x\":2.5029,\"y\":0.9845}],[{\"x\":2.3705,\"y\":1.1496},{\"x\":2.6859,\"y\":1.15},{\"x\":2.6858,\"y\":1.2612},{\"x\":2.3704,\"y\":1.2608}],[{\"x\":3.7418,\"y\":1.1709},{\"x\":3.8082,\"y\":1.171},{\"x\":3.8081,\"y\":1.2508},{\"x\":3.7417,\"y\":1.2507}],[{\"x\":3.9692,\"y\":1.1445},{\"x\":4.0541,\"y\":1.1445},{\"x\":4.0542,\"y\":1.2621},{\"x\":3.9692,\"y\":1.2622}],[{\"x\":4.5326,\"y\":1.2263},{\"x\":5.1065,\"y\":1.229},{\"x\":5.106,\"y\":1.346},{\"x\":4.5321,\"y\":1.3433}],[{\"x\":5.5508,\"y\":1.2267},{\"x\":5.8992,\"y\":1.2268},{\"x\":5.8991,\"y\":1.3408},{\"x\":5.5508,\"y\":1.3408}]]"
        },
        "sections": []
       }
    ],
    "normalized_images": [ 
        { 
            "id": "1_550e8400-e29b-41d4-a716-446655440000", 
            "data": "SGVsbG8sIFdvcmxkIQ==", 
            "imagePath": "aHR0cHM6Ly9henNyb2xsaW5nLmJsb2IuY29yZS53aW5kb3dzLm5ldC9tdWx0aW1vZGFsaXR5L0NyZWF0ZUluZGV4ZXJwNnA3LnBkZg2/normalized_images_0.jpg",  
            "locationMetadata": {
              "pageNumber": 1,
              "ordinalPosition": 0,
              "boundingPolygons": "[[{\"x\":2.0834,\"y\":6.2245},{\"x\":7.1818,\"y\":6.2244},{\"x\":7.1816,\"y\":7.9375},{\"x\":2.0831,\"y\":7.9377}]]"
            }
        },
        { 
            "id": "2_123e4567-e89b-12d3-a456-426614174000", 
            "data": "U29tZSBtb3JlIGV4YW1wbGUgdGV4dA==", 
            "imagePath": "aHR0cHM6Ly9henNyb2xsaW5nLmJsb2IuY29yZS53aW5kb3dzLm5ldC9tdWx0aW1vZGFsaXR5L0NyZWF0ZUluZGV4ZXJwNnA3LnBkZg2/normalized_images_1.jpg",  
            "locationMetadata": {
              "pageNumber": 2,
              "ordinalPosition": 1,
              "boundingPolygons": "[[{\"x\":2.0784,\"y\":0.3734},{\"x\":7.1837,\"y\":0.3729},{\"x\":7.183,\"y\":2.8611},{\"x\":2.0775,\"y\":2.8615}]]"
            } 
        }
    ] 
}

Observe que na “sections” saída de exemplo acima aparece em branco. Para preenchê-las, você precisará adicionar uma habilidade adicional configurada com outputFormat o conjunto para markdowngarantir que as seções sejam preenchidas corretamente.

A habilidade usa o Azure Document Intelligence para calcular locationMetadata. Consulte o modelo de layout do Azure Document Intelligence para obter detalhes sobre como as páginas e as coordenadas de polígono delimitador são definidas.

Representa imagePath o caminho relativo de uma imagem armazenada. Se a projeção de arquivo do repositório de conhecimento estiver configurada no conjunto de habilidades, esse caminho corresponderá ao caminho relativo da imagem armazenada no repositório de conhecimento.

See also