Partilhar via


Habilidade de layout de documentos

A habilidade Layout do Documento analisa um documento para detetar estrutura e características e produz uma representação sintática do documento no formato Markdown ou Texto. Você pode usá-lo para extrair texto e imagens, onde a extração de imagem inclui metadados de localização que preservam a posição da imagem dentro do documento. A proximidade da imagem com o conteúdo relacionado é benéfica em cargas de trabalho de Geração Aumentada de Recuperação (RAG) e cenários de pesquisa multimodal .

Este artigo é a documentação de referência para a habilidade Layout de documento. Para obter informações sobre uso, consulte Como fragmentar e vetorizar por layout de documento.

Esta competência utiliza o modelo de layout do Azure Document Intelligence no Foundry Tools.

Esta competência está vinculada a um recurso faturável do Microsoft Foundry para transações que excedam 20 documentos por indexador por dia. A execução das competências integradas é cobrada ao preço padrão existente da Foundry Tools.

Tip

É comum usar essa habilidade em conteúdos como PDFs que possuem estrutura e imagens. Os tutoriais a seguir demonstram a verbalização de imagens com duas técnicas diferentes de fragmentação de dados:

Limitations

Esta competência tem as seguintes limitações:

  • A competência não é adequada para documentos grandes que requerem mais de 5 minutos de processamento no modelo de layout Azure Document Intelligence. A competência expira, mas as cobranças continuam a aplicar-se ao recurso da Foundry se estiver associado ao conjunto de competências para efeitos de faturação. Certifique-se de que os documentos são otimizados para permanecer dentro dos limites de processamento para evitar custos desnecessários.

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

Regiões suportadas

A competência Layout de Documentos chama a API Azure Document Intelligence 2024-11-30 versão V4.0.

As regiões suportadas variam consoante a modalidade e a forma como a competência se liga ao modelo de layout Azure Document Intelligence.

Approach Requirement
Assistente para importação de dados (novo) Crie um recurso Foundry numa destas regiões para obter a experiência do portal: Leste dos EUA, Europa Ocidental, Norte Central dos EUA.
Programático, usando a autenticação do Microsoft Entra ID (visualização) para faturamento Crie o Azure AI Search em uma das regiões onde o serviço é suportado, de acordo com a disponibilidade do produto por região.
Crie o recurso Foundry em qualquer região listada na tabela de disponibilidade de produtos por região .
Programático, usando uma chave de recurso Foundry para faturação Crie o seu serviço Azure AI Search e o recurso Foundry na mesma região. Isso significa que a região escolhida deve ter suporte para os serviços Azure AI Search e Azure Document Intelligence.

A versão implementada do modelo Document Layout não suporta regiões 21Vianet neste momento.

Formatos de ficheiro suportados

Essa habilidade reconhece os seguintes formatos de arquivo.

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

Idiomas suportados

Consulte as linguagens suportadas pelo modelo de layout Azure Document Intelligence para texto impresso.

@odata.type

Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill

Limites de dados

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

Parâmetros de habilidade

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. Recomendamos a utilização da versão geralmente disponível (2025-09-01) ou da pré-visualização mais recente (2025-11-preview) para acesso total a todos os parâmetros.

Nome do parâmetro Valores Permitidos Description
outputMode oneToMany Controla a cardinalidade da saída produzida pela habilidade.
markdownHeaderDepth h1, h2, h3, h4, h5, h6(default) Aplica-se apenas se outputFormat estiver definido como markdown. Este parâmetro descreve o nível de aninhamento mais profundo que deve ser considerado. Por exemplo, se markdownHeaderDepth for h3, todas as seções mais profundas, como h4, serão roladas em 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 enums que correspondam 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 onde o conteúdo foi extraído, como um número de página ou seção. Este parâmetro aplica-se a ambos os formatos de saída.
chunkingProperties Veja abaixo. New. Aplica-se apenas se outputFormat estiver definido como text. Opções que encapsulam como fragmentar conteúdo de texto enquanto recalcula outros metadados.
Parâmetro ChunkingProperties Version Valores Permitidos Description
unit Characters. atualmente o único valor permitido. O comprimento do bloco é medido em caracteres, em oposição a palavras ou tokens New. Controla a cardinalidade da unidade de bloco.
maximumLength Qualquer número inteiro entre 300-50000 New. O comprimento máximo do bloco em caracteres medido por String.Length.
overlapLength Integer. O valor tem de ser inferior a metade da maximumLength New. O comprimento da sobreposição fornecida entre dois blocos de texto.

Contributos para as competências

Nome de entrada 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"
}

Em alternativa, 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:

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

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

Resultados em termos de competências

Nome da saída Description
markdown_document Aplica-se apenas 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 apenas se outputFormat estiver definido como text. Uma coleção de objetos de bloco de texto, que representam o texto dentro dos limites de uma página (fatorando qualquer outra parte configurada), incluindo os próprios cabeçalhos de seção. O objeto de bloco de texto inclui locationMetadata , se aplicável.
normalized_images Aplica-se apenas se outputFormat estiver definido como text e extractionOptions incluir images. Uma coleção de imagens que foram extraídas do documento, incluindo 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 amostra para o modo de saída de 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 do controla markdownHeaderDepth o número de chaves no dicionário "sections". Na definição de habilidade de exemplo, como o 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 produzir 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 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 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 a “sections” saída no exemplo acima aparece em branco. Para preenchê-los, você precisará adicionar uma habilidade adicional configurada com outputFormat definido para markdowngarantir que as seções sejam preenchidas corretamente.

A competência utiliza Azure Document Intelligence para calcular localizaçãoMetadados. Consulte o modelo de layout Azure Document Intelligence para detalhes sobre como as páginas e as coordenadas de polígonos delimitadoras são definidas.

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

Consulte também