Perícia de Layout de Documentos

A competência Layout de Documentos utiliza o modelo de layout do Azure Document Intelligence no Foundry Tools para analisar um documento, detetar a sua estrutura e características, e produzir uma representação sintática em formato Markdown ou texto. Esta competência suporta a extração de texto e imagem, esta última incluindo metadados de localização que preservam a posição da imagem dentro de um documento. A proximidade da imagem a conteúdos relacionados é benéfica em cenários de geração aumentada por recuperação (RAG) e pesquisa multimodal .

Para transações que ultrapassem 20 documentos por indexador por dia, esta competência exige que associe um recurso faturável do Microsoft Foundry ao seu conjunto de competências. A execução das competências integradas é cobrada ao preço padrão existente da Foundry Tools.

Este artigo é a documentação de referência para a competência Layout de Documentos. Para informações de utilização, veja Como dividir e vetorizar por layout de documento.

Tip

É comum usar esta competência em conteúdos com estrutura e imagens, como PDFs. O tutorial Multimodal demonstra a verbalização de imagens com duas estratégias 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 exijam mais de cinco 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. Garantir que os documentos são otimizados para se manterem dentro dos limites de processamento e evitar custos desnecessários.

  • Como esta competência chama o modelo de layout Azure Document Intelligence, todos os comportamentos de serviço documentado para diferentes tipos de documentos para diferentes tipos de ficheiros aplicam-se à sua saída. Por exemplo, 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 consistente das imagens entre DOCX e PDF, considere converter documentos para PDF ou rever a documentação de pesquisa multimodal para abordagens alternativas.

Supported regions

A skill Layout de Documentos chama a v4.0 (2024-11-30) da API REST do Azure Document Intelligence.

As regiões suportadas variam consoante a modalidade e a forma como a competência se liga ao modelo de layout Azure Document Intelligence. Atualmente, a versão implementada do modelo de layout não suporta regiões 21Vianet .

Approach Requirement
Assistente de importação de dados Crie um serviço Pesquisa de IA do Azure e uma conta multi-serviço Azure AI numa das seguintes regiões: Leste dos EUA, Europa Ocidental 2 ou Norte Central dos EUA.
Programático, usando uma chave de recurso Microsoft Foundry para faturação Crie um serviço Pesquisa de IA do Azure e um recurso Microsoft Foundry na mesma região. A região deve suportar tanto Pesquisa de IA do Azure como Azure Document Intelligence.
Programático, utilizando autenticação Microsoft Entra ID (pré-visualização) para faturação Não há necessidade de ter a mesma região. Crie um serviço Pesquisa de IA do Azure e um recurso Microsoft Foundry em qualquer região onde cada serviço esteja disponível.

Formatos de ficheiro suportados

Esta competência reconhece os seguintes formatos de ficheiro:

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

Supported languages

Para texto impresso, consulte linguagens suportadas pelo modelo de layout Azure Document Intelligence.

@odata.type

Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill

Data limits

  • Para PDF e TIFF, podem ser processadas até 2.000 páginas (com uma subscrição gratuita, 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 ser entre 50 pixels x 50 pixels ou 10.000 pixels x 10.000 pixels.
  • Se os seus PDFs estiverem bloqueados por palavra-passe, remova o bloqueio antes de executar o indexador.

Skill parameters

Os parâmetros são distinguíveis de maiúsculas minúsculas. Vários parâmetros foram introduzidos em versões pré-visualizadas 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.

Parameter name Allowed Values Description
outputMode oneToMany Controla a cardinalidade da saída produzida pela habilidade.
markdownHeaderDepth h1, h2, h3, h4, h5, h6(default) Só se aplica se outputFormat estiver definido como markdown. Este parâmetro descreve o nível de aninhamento mais profundo que deve ser considerado. Por exemplo, se o markdownHeaderDepth for h3, quaisquer secções mais profundas, como h4, são roladas para h3.
outputFormat markdown(default), text New. Controla o formato da saída gerada pela competência.
extractionOptions ["images"], ["images", "locationMetadata"], ["locationMetadata"] New. Identifique qualquer conteúdo extra extraído do documento. Defina um array 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ção de localização da página relacionada com o local onde o conteúdo foi extraído, como um número de página ou secção. Este parâmetro aplica-se a ambos os formatos de saída.
chunkingProperties See below. New. Só se aplica se outputFormat estiver definido como text. Opções que encapsulam como fragmentar conteúdo de texto enquanto recalculam outros metadados.
ChunkingProperties Parameter Version Allowed Values Description
unit Characters. Atualmente, o único valor permitido. O comprimento do bloco é medido em caracteres, ao contrário de palavras ou fichas New. Controla a cardinalidade da unidade chunk.
maximumLength Qualquer 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 do maximumLength New. O comprimento de sobreposição fornecido entre dois blocos de texto.

Skill inputs

Input name Description
file_data O ficheiro de onde 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"
}

Alternativamente, 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 do ficheiro pode ser gerado de uma das seguintes formas:

  • Definir o allowSkillsetToReadFileData parâmetro na definição do teu indexador para verdadeiro. Esta definição cria um caminho /document/file_data que representa os dados originais do ficheiro descarregados da sua fonte de dados do blob. Este parâmetro aplica-se apenas a ficheiros no armazenamento Azure Blob.

  • Ter uma habilidade personalizada que retorna uma definição de objeto JSON que fornece $type, data, ou url e sastoken. O $type parâmetro deve ser definido para file, e data deve ser o array de bytes codificado base de 64 bytes do conteúdo do ficheiro. O url parâmetro deve ser uma URL válida com acesso para descarregar o ficheiro nesse local.

Skill outputs

Output name Description
markdown_document Só se aplica se outputFormat estiver definido como markdown. Uma coleção de objetos "secções", que representam cada secção individual no documento Markdown.
text_sections Só se aplica se outputFormat estiver definido como text. Uma coleção de objetos de blocos de texto, que representam o texto dentro dos limites de uma página (tendo em conta quaisquer blocos adicionais configurados), incluindo quaisquer cabeçalhos de secção em si. O objeto bloco de texto inclui, locationMetadata se aplicável.
normalized_images Só se aplica se outputFormat for definido como text e extractionOptions incluir images. Uma coleção de imagens 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 com 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 markdownHeaderDepth controla o número de chaves no dicionário de "secções". Na definição de habilidade de exemplo, como o markdownHeaderDepth é "h3", existem três chaves no dicionário de "secções": h1, h2, h3.

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

Este exemplo demonstra como produzir conteúdo de texto em blocos de tamanho fixo e extrair imagens juntamente com metadados de localização do documento.

Definição de exemplo para 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 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}]]"
            } 
        }
    ] 
}

Note que os “sections” na saída de exemplo acima aparecem vazios. Para os preencher, terá de adicionar uma habilidade adicional configurada com outputFormat conjunto para markdowngarantir que as secções estão devidamente preenchidas.

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 ficheiro do armazenamento de conhecimento estiver configurada no conjunto de habilidades, este caminho corresponde ao caminho relativo da imagem armazenada no armazenamento de conhecimento.

See also