Compartilhar via


Análise de documento: extrair conteúdo estruturado

Visão geral

Os recursos de análise de Compreensão de Conteúdo do Azure ajudam você a transformar dados não estruturados em informações estruturadas e legíveis pelo computador. Ao identificar e extrair elementos com precisão, preservando suas relações estruturais, você pode criar fluxos de trabalho de processamento avançados para uma ampla gama de aplicativos.

O objeto contents com o tipo document dá suporte à saída para um intervalo de arquivos de entrada diferentes, incluindo documentos, imagem, texto e arquivos estruturados. Você pode usar essas saídas para extrair conteúdo significativo de seus arquivos, preservar estruturas de documentos e desbloquear todo o potencial de seus dados.

O tipo de conteúdo do documento inclui a saída para arquivos de entrada, como:

  • Documentos: PDFs, documentos do Word, apresentações do PowerPoint e planilhas do Excel
  • Figuras: Fotos, documentos verificados, gráficos e diagramas
  • Arquivos de texto: texto sem formatação, HTML, Markdown e RTF
  • Conteúdo estruturado: arquivos XML, JSON, CSV e TSV
  • Email: formatos de mensagem EML e MSG

Para obter mais informações sobre tipos de arquivo compatíveis, limites de tamanho de arquivo e outras restrições, consulte cotas e limites de serviço.

Estrutura de resposta JSON

A API de Compreensão de Conteúdo retorna resultados de análise em um formato JSON estruturado. Aqui está a estrutura geral do contêiner:

{
  "id": "10a01d32-e21e-46e3-bb5c-361375f184de",
  "status": "Succeeded",
  "result": {
    "analyzerId": "my-analyzer",
    "apiVersion": "2025-05-01-preview",
    "createdAt": "2025-06-18T22:50:34Z",
    "warnings": [],
    "contents": [
      {
        "markdown": "# Example Document\n\n...",
        "fields": { /* extracted field values */ },
        "kind": "document",
        "startPageNumber": 1,
        "endPageNumber": 2,
        "unit": "inch",
        "pages": [ /* page-level elements */ ],
        "paragraphs": [ /* paragraph elements */ ],
        "sections": [ /* section elements */ ],
        "tables": [ /* table elements */ ],
        "figures": [ /* figure elements */ ],
        "hyperlinks": [ /* hyperlink elements */ ],
        "annotations": [ /* annotation elements */ ]
      }
    ]
  }
}

Elementos do documento

Você pode extrair os seguintes elementos de documento por meio da análise de documento:

Nem todos os elementos de conteúdo e layout são aplicáveis ou têm suporte atualmente por todos os tipos de arquivo de documento.

Elementos de conteúdo em formato markdown

A Compreensão de Conteúdo gera Markdown com formatação avançada que preserva a estrutura do documento original. Por esse motivo, modelos de linguagem grandes podem compreender melhor o contexto do documento e as relações hierárquicas para tarefas de geração e análise de IA. Além de palavras, marcas de seleção, códigos de barras, fórmulas e imagens como conteúdo, o Markdown também inclui seções, tabelas e metadados de página para renderização visual e processamento de computador. Saiba mais sobre como a Compreensão de Conteúdo representa elementos de conteúdo e layout no Markdown.

Palavras

Uma palavra é um elemento de conteúdo composto por uma sequência de caracteres. O Anexo Padrão Unicode nº 29 define os limites da palavra. Nos idiomas latinos, as palavras podem ser separadas da pontuação mesmo sem espaços intermediários. Em alguns idiomas, como chinês, dicionários de palavras complementares são usados para habilitar a quebra de palavras em limites semânticos. Para obter mais informações, consulte análise de limites.

Exemplo JSON:

{
  "words": [
    {
      "content": "Example",
      "span": {
        "length": 7
      },
      "confidence": 0.992,
      "source": "D(1,1.265,1.0836,2.4972,1.0816,2.4964,1.4117,1.2645,1.4117)"
    }
  ]
}

Captura de tela que mostra palavras detectadas.

Marcas de seleção

Uma marca de seleção é um elemento de conteúdo que representa um glifo visual que indica o estado de uma seleção. As marcas de seleção podem aparecer no documento como caixas de seleção, marcas de seleção ou botões. Você pode selecionar ou limpar uma marca de seleção, com representação visual diferente para indicar o estado. As marcas de seleção são codificadas como palavras no resultado da análise do documento usando os caracteres Unicode (selecionado) e (desmarcado).

A Compreensão de Conteúdo detecta marcas de verificação dentro de uma célula da tabela como marcas de seleção no estado selecionado. Ele não detecta células de tabela vazias como marcas de seleção no estado desmarcado.

Exemplo JSON:

{
  "words": [
    {
      "content": "☒",
      "span": {
        "length": 1
      },
      "confidence": 0.983,
      "source": "D(1,1.258,2.7952,1.3705,2.7949,1.371,2.9098,1.2575,2.9089)"
    }
  ]
}

Captura de tela que mostra as marcas de seleção detectadas.

Códigos de barras

Um código de barras é um elemento de conteúdo que descreve códigos de barras lineares (por exemplo, UPC ou EAN) e bidimensionais (por exemplo, QR ou MaxiCode). A Compreensão de Conteúdo representa códigos de barras usando o tipo detectado e o valor extraído. Atualmente, há suporte para os seguintes formatos de código de barras:

Tipo de código de barras Descrição
QRCode Código QR, conforme definido em ISO/IEC 18004:2015
PDF417 PDF417, conforme definido na ISO 15438
UPCA Código universal do produto GS1 de 12 dígitos
UPCE Código universal do produto GS1 de 6 dígitos
Code39 Código de barras 39, conforme definido em ISO/IEC 16388:2007
Code128 Código 128 código de barras, conforme definido em ISO/IEC 15417:2007
EAN8 Número do Artigo Internacional do GS1 de 8 dígitos (Número do Artigo Europeu)
EAN13 Número do Artigo Internacional do GS1 de 13 dígitos (Número do Artigo Europeu)
DataBar Código de barras GS1 DataBar
Code93 Código 93 código de barras, conforme definido em ANSI/AIM BC5-1995
Codabar Código de barras Codabar, conforme definido em ANSI/AIM BC3-1995
DataBarExpanded Código de barras GS1 DataBar Expandido
ITF "Código de barras 2 de 5 entrelaçado (ITF)" conforme definido na norma ANSI/AIM BC2-1995
MicroQRCode Micro código QR, conforme definido em ISO/IEC 23941:2022
Aztec Código asteca, conforme definido em ISO/IEC 24778:2008
DataMatrix Código de matriz de dados, conforme definido em ISO/IEC 16022:2006
MaxiCode MaxiCode, conforme definido em ISO/IEC 16023:2000

Exemplo JSON:

{
  "barcodes": [
    {
      "kind": "Code39",
      "value": "Hello World",
      "source": "D(1,2.5738,4.8186,3.8617,4.8153,3.8621,4.9894,2.5743,4.9928)",
      "span": {"offset": 192, "length": 10 },
      "confidence": 0.977
    }
  ]
}

Fórmulas

Uma fórmula é um elemento de conteúdo que representa expressões matemáticas no documento. Pode ser uma fórmula embutida inserida com outro texto ou uma fórmula de exibição que ocupa uma linha inteira. Fórmulas multilinha são representadas como vários elementos de fórmula de exibição agrupados em parágrafos para preservar relações matemáticas.

A fórmula pode ser de tipo inline ou display dependendo do posicionamento da fórmula no documento.

Exemplo JSON:

{
  "formulas": [
    {
      "kind": "inline",
      "value": "x = \\frac { - b \\pm \\sqrt { b ^ { 2 } - 4 a c } } { 2 a }",
      "confidence": 0.708,
      "source": "D(1,3.4282,7.0195,4.0452,7.0307,4.0425,7.1803,3.4255,7.1691)",
      "span": {
        "offset": 394,
        "length": 51
      }
    }
  ]
}

Figuras

Uma figura é um elemento de conteúdo que representa uma imagem, figura ou gráfico inserido no documento. A Compreensão de Conteúdo gera o resumo das figuras detectadas, converte imagens selecionadas em chart.js representação e extrai qualquer texto inserido das imagens e das legendas e notas de rodapé associadas. Os gráficos são representados no conteúdo da figura usando a sintaxe de chart.js e os diagramas são representados no conteúdo da figura usando uma cadeia de caracteres na sintaxe do mermaid. Esse é um recurso opcional que você pode ativar na configuração do analisador definindo enableFigureAnalysis e enableFigureDescription como true.

Atualmente, há suporte para os seguintes tipos de figura:

Tipo de figura Representação
Bar chart Chart.js
Line chart Chart.js
Pie chart Chart.js
Radar chart Chart.js
Scatter chart Chart.js
Bubble chart Chart.js
Quadrant chart Chart.js
Mixed chart (e.g. combined bar and line chart) Mermaid.js
Flow chart Mermaid.js
Sequence diagrams Mermaid.js
Gantt chart Mermaid.js

Exemplo JSON:

{
  "figures": [
     {
      // enableFigureDescription = True
      "description": "This figure illustrates the sales revenue over the year 2023.",

      // enableFigureAnalysis = True
      "kind": "chart",
      "content": {
        "type": "line",
        "data": {
          "labels": ["January", "February", "March", "April", "May", "June", "July"],
          "datasets": [
            {
              "label": "A",
              "data": [93, -29, -17, -8, 73, 98, 40]
            },
            {
              "label": "B",
              "data": [20, 85, -79, 93, 27, -81, -22]
            }
          ]
        },
        "options": {
          "title": { "text": "Title" }
        }
      }
    },
    {
      "kind": "mermaid",
      "content": "xychart-beta\n    title \"Sales Revenue\"\n    x-axis [jan, feb, mar, apr]..."
    },
  ]
}

Um hiperlink é um elemento de conteúdo que representa um link inserido que se conecta a outro recurso, como a página da Web no documento. O Content Understanding representa hiperlinks usando seu link embutido.

Exemplo JSON:

{
  "hyperlinks": [
        {
          "content": "Microsoft",
          "url": "https://www.microsoft.com",
          "span": {...},
          "source": "..."
        }
  ]
}

Annotations

Anotações são metadados adicionais no documento para fornecer informações adicionais, esclarecimentos ou comentários sem alterar o conteúdo principal em si. Há muitos tipos de anotações que podem cobrir intervalos específicos ou até mesmo se referir a caixas delimitadoras específicas. Veja abaixo a lista de tipos de anotação que oferecemos suporte.

Observação

Observe que as anotações atualmente só têm suporte em entradas EM PDF digitais.

Tipo de anotação
highlight
underline
strikethrough
rectangle
circle
drawing
comments
other

Exemplo JSON:

{
  "annotations": [
    {
      "id": "underline-1",
      "kind": "underline",
      "spans": [...],
      "source": "D(pageNumber,l,t,w,h)",
      "comments": [
        {
          "message": "Hi",
          "author": "johndoe",
          "createdAt": "2023-10-01T12:00:00Z",
          "tags": ["approved"]
        }
      ]
      "author": "paulhsu",
      "createdAt": "2023-10-01T12:00:00Z",
      "lastModifiedAt": "2023-10-02T12:00:00Z",
      "tags": [ ... ],
    }
  ]
}

Elementos de layout

Os elementos de layout do documento são componentes visuais e estruturais, como páginas, tabelas, parágrafos, linhas, tabelas, seções e estrutura geral, que ajudam a interpretar o conteúdo. A extração desses elementos permite que as ferramentas analisem documentos com eficiência para tarefas como recuperação de informações, compreensão semântica e estruturação de dados.

Páginas

Uma página é um agrupamento de conteúdo que normalmente corresponde a um lado de uma folha de papel. Uma página renderizada é caracterizada por largura e altura na unidade especificada. Em geral, as imagens usam pixels enquanto os PDFs usam polegadas. A angle propriedade descreve o ângulo geral do texto em graus para páginas que podem ser giradas.

Em planilhas como o Excel, cada planilha é mapeada para uma página. Em apresentações, como o PowerPoint, cada slide é mapeado para uma página. Para formatos de arquivo como DOCUMENTOS HTML ou Word, que não têm um conceito de página nativa sem renderização, todo o conteúdo principal é tratado como uma única página.

Exemplo JSON:

{
  "pages": [
    {
      "pageNumber": 1,
      "angle": 0.0739153,
      "width": 8.5,
      "height": 11,
      "spans": [
        {
          "offset": 0,
          "length": 620
        }
      ],
      "words": [ /* array of word objects */ ],
      "barcodes": [ /* details of barcodes */ ],
      "lines": [ /* array of line objects */ ],
      "formulas": [ /* array of formula objects */ ]
    }
  ]
}

Parágrafos

Um parágrafo é uma sequência ordenada de linhas que formam uma unidade lógica. Normalmente, as linhas compartilham alinhamento comum e espaçamento entre linhas. Os parágrafos geralmente são delimitados por recuo, espaçamento adicionado ou marcadores/numeração. Alguns parágrafos têm funções funcionais especiais no documento. As funções com suporte no momento incluem cabeçalho de página, rodapé de página, número de página, título, título da seção, nota de rodapé e bloco de fórmulas.

Exemplo JSON:

{
  "paragraphs": [
    {
      "role": "title",
      "content": "Example Document",
      "source": "D(1,1.264,1.0836,4.1584,1.0795,4.1589,1.4083,1.2644,1.4124)",
      "span": {
        "offset": 0,
        "length": 18
      }
    }
  ]
}

Linhas

Uma linha é uma sequência ordenada de elementos de conteúdo consecutivos, que geralmente são separados por espaços visuais. Elementos de conteúdo no mesmo plano horizontal (linha), mas separados por mais de um único espaço visual, geralmente são divididos em várias linhas. Às vezes, esse recurso divide conteúdo semanticamente contíguo em linhas separadas. Ele também habilita a representação de conteúdo textual dividido em várias colunas ou células. As linhas na gravação vertical são detectadas na direção vertical.

Exemplo JSON:

{
  "lines": [
    {
      "content": "Example Document",
      "source": "D(1,1.264,1.0836,4.1583,1.0795,4.1589,1.4083,1.2645,1.4117)",
      "span": {
        "offset": 0,
        "length": 16
      }
    }
  ]
}

Tabelas

Uma tabela organiza o conteúdo em um grupo de células em um layout de grade. As linhas e colunas podem ser separadas visualmente por linhas de grade, faixas de cores ou espaçamento maior. A posição de uma célula de tabela é especificada por seus índices de linha e coluna. Uma célula pode estender várias linhas e colunas.

Com base em sua posição e estilo, uma célula é classificada como conteúdo geral, cabeçalho de linha, cabeçalho de coluna, cabeçalho de stub ou descrição:

  • Uma célula de cabeçalho de linha normalmente é a primeira célula em uma linha que descreve as outras células na linha.
  • Uma célula de cabeçalho de coluna normalmente é a primeira célula em uma coluna que descreve as outras células na coluna.
  • Uma linha ou coluna pode conter várias células de cabeçalho para descrever o conteúdo hierárquico.
  • Uma célula de cabeçalho stub normalmente é a célula na primeira linha e na primeira posição da coluna. A célula está vazia ou descreve os valores nas células de cabeçalho na mesma linha/coluna.
  • Uma célula de descrição geralmente aparece na área superior ou inferior de uma tabela e descreve o conteúdo geral da tabela. Às vezes, ele pode aparecer no meio de uma tabela para dividir a tabela em seções. Normalmente, as células de descrição alcançam várias células em uma única linha.

Uma legenda de tabela especifica o conteúdo que explica a tabela. Uma tabela também pode ter um conjunto de notas de rodapé. Ao contrário de uma célula de descrição, uma barra de legenda normalmente fica fora do layout da grade. As notas de rodapé da tabela anotam o conteúdo dentro da tabela e geralmente são marcadas com símbolos de nota de rodapé. Eles são frequentemente encontrados debaixo da grade da tabela.

Uma tabela pode abranger páginas consecutivas de um documento. Nessa situação, as continuações de tabela nas páginas subsequentes geralmente mantêm a mesma contagem de colunas, largura e estilo. Geralmente, elas repetem os cabeçalhos de coluna. Normalmente, nenhum conteúdo de intervenção ocorre entre a tabela inicial e suas continuações, exceto cabeçalhos de página, rodapés e números de página.

Uma tabela pode abranger páginas consecutivas de um documento. Nessa situação, as continuações de tabela nas páginas subsequentes geralmente mantêm a mesma contagem de colunas, largura e estilo. Geralmente, elas repetem os cabeçalhos de coluna. Além de cabeçalhos de página, rodapés e números de página, geralmente não há conteúdo intervindo entre a tabela inicial e suas continuações.

Observação

O intervalo para tabelas abrangerá tanto o conteúdo central quanto suas legendas e notas de rodapé associadas.

Exemplo JSON:

{
  "tables": [
    {
      "rowCount": 6,
      "columnCount": 2,
      "cells": [
        {
          "kind": "columnHeader",
          "rowIndex": 0,
          "columnIndex": 0,
          "rowSpan": 1,
          "columnSpan": 1,
          "content": "Category",
          "source": "D(2,1.1674,5.0483,4.1733,5.0546,4.1733,5.2358,1.1674,5.2358)",
          "span": {
            "offset": 798,
            "length": 8
          },
          "elements": [
            "/paragraphs/7"
          ]
        }
      ],
      "source": "D(2,1.1566,5.0425,7.1855,5.0428,7.1862,6.1853,1.1574,6.1858)",
      "span": {
        "offset": 781,
        "length": 280
      },
      "caption": {
        "content": "Table 1: This is a table",
        "source": "D(2,1.1566,5.0425,7.1855,5.0428,7.1862,6.1853,1.1574,6.1858)",
        "span": {
          "offset": 335,
          "length": 30
        }
      }
    }
  ]
}

Captura de tela que mostra uma tabela que usa o recurso de layout.

Seções

Uma seção é um agrupamento lógico de elementos de conteúdo relacionados que formam uma estrutura hierárquica dentro do documento. Geralmente, ele começa com um título de seção como o primeiro parágrafo. Uma seção pode conter subseções para criar uma estrutura de documento aninhada que preserva relações semânticas.

Exemplo JSON:

{
  "sections": [
    {
      "span": {
        "offset": 113,
        "length": 77
      },
      "elements": [
        "/paragraphs/3",
        "/paragraphs/4"
      ]
    }
  ]
}

Propriedades do elemento

Os documentos consistem em vários componentes categorizados em elementos estruturais, textuais e relacionados à forma. Esses elementos definem a organização e a apresentação do documento. Você pode identificar e extrair sistematicamente os elementos para análise ou aplicativo adicionais.

Intervalos

A propriedade span especifica a posição lógica do elemento no documento por meio do deslocamento de caractere e comprimento na propriedade de cadeia de caracteres markdown de nível superior. Por padrão, deslocamentos e comprimentos de caractere são retornados em pontos de código Unicode, que são usados pelo Python 3. Para acomodar diferentes ambientes de desenvolvimento que usam unidades de caracteres diferentes, você pode especificar o parâmetro de consulta stringEncoding para retornar deslocamentos e comprimentos de intervalo em unidades de código UTF16 (Java, JavaScript ou .NET) ou bytes UTF8 (Go, Rust, Ruby ou PHP).

Fonte

A propriedade source descreve a posição visual do elemento no arquivo usando uma cadeia de caracteres codificada. Para documentos, a cadeia de caracteres de origem está em um dos seguintes formatos:

  • Polígono delimitando: D({pageNumber},{x1},{y1},{x2},{y2},{x3},{y3},{x4},{y4})
  • Caixa delimitadora alinhada ao eixo: D({pageNumber},{left},{top},{width},{height})

Os números de página são indexados a partir de um. O polígono delimitador descreve uma sequência de pontos, no sentido horário da esquerda em relação à orientação natural do elemento. Para quadriláteros, os pontos representam os cantos superior esquerdo, superior direito, inferior direito e inferior esquerdo. Cada ponto representa a coordenada x,y na unidade de comprimento especificada pela propriedade unit. Em geral, a unidade de medida para imagens é pixels. PDFs usam polegadas.

Captura de tela que mostra regiões delimitadas detectadas.

Observação

Atualmente, a Compreensão de Conteúdo retorna apenas um quadrilátero de quatro pontos como um polígono delimitado. Versões futuras podem retornar um número diferente de pontos para descrever formas mais complexas, como linhas curvas ou imagens não retangulares. Atualmente, a origem é retornada apenas para elementos de arquivos renderizados (PDF/imagem).

Exemplo de JSON completo

O exemplo a seguir mostra a estrutura de resposta JSON completa da análise de um documento. Este JSON representa a saída completa da Compreensão de Conteúdo quando você processa um documento PDF com vários tipos de elemento:

Captura de tela que mostra o documento PDF de demonstração mostrando o conteúdo de exemplo, incluindo caixas de seleção, códigos de barras, fórmulas, imagens e tabelas.

{
  "id": "10a01d32-e21e-46e3-bb5c-361375f184de",
  "status": "Succeeded",
  "result": {
    "analyzerId": "auto-labeling-model-1750287025291-104",
    "apiVersion": "2025-05-01-preview",
    "createdAt": "2025-06-18T22:50:34Z",
    "warnings": [],
    "contents": [
      {
        "markdown": "# Example Document\n\n\n## 1. Selection Marks (Checkboxes)\n\nEmployee Preferences Form\n☐\nRemote\n☒\nHybrid\n☐\nOn-site\n\n\n## 2. Barcodes\n\nGo check out Azure Content Understanding at the below link\n\n\n## 3. Formulas\n\nBayesian Inference (Posterior Probability):\n\n$$P \\left( \\theta \\mid D \\right) = \\frac { P \\left( D \\mid \\theta \\right) \\cdot P \\left( \\theta \\right) } { P \\left( D \\right) }$$\n\nWhere:\n\n$$P \\left( \\theta \\mid D \\right)$$\nis the posterior\n\n$P \\left( D \\mid \\theta \\right)$ is the likelihood\n$P \\left( \\theta \\right)$ is the prior\n\n$$P \\left( D \\right) i s \\quad t h e \\quad e v i d e n c e$$\n\n<!-- PageBreak -->\n\n\n## 4. Images\n\nSample Product Image\n\n\n<figure>\n\nContent\nUnderstanding\n\n</figure>\n\n\nImage Description: \"A ceramic coffee mug with company logo.\"\n\n\n## 5. Tables\n\n\n<table>\n<tr>\n<th>Category</th>\n<th>Amount ($)</th>\n</tr>\n<tr>\n<td>Rent</td>\n<td>1,200</td>\n</tr>\n<tr>\n<td>Utilities</td>\n<td>150</td>\n</tr>\n<tr>\n<td>Groceries</td>\n<td>300</td>\n</tr>\n<tr>\n<td>Transportation</td>\n<td>100</td>\n</tr>\n<tr>\n<td>Total</td>\n<td>1,750</td>\n</tr>\n</table>\n\n\n## 6. Paragraphs\n\nOur company is committed to fostering a productive and inclusive work environment. All\nemployees are expected to comply with the outlined policies and demonstrate mutual\nrespect in day-to-day operations. Regular reviews will ensure that these policies remain\nrelevant and effective.\n",
        "fields": {
          "EmployeePreferences": {
            "type": "string",
            "valueString": "Hybrid",
            "spans": [
              {
                "offset": 94,
                "length": 6
              }
            ],
            "confidence": 0.987,
            "source": "D(1,1.4104,2.7836,1.8760,2.7823,1.8760,2.9377,1.4110,2.9396)"
          },
          "ImageDescription": {
            "type": "string",
            "valueString": "\"A ceramic coffee mug with company logo.\"",
            "spans": [
              {
                "offset": 722,
                "length": 41
              }
            ],
            "confidence": 0.958,
            "source": "D(2,2.5222,4.2511,5.3236,4.2497,5.3237,4.4422,2.5223,4.4436)"
          }
        },
        "kind": "document",
        "startPageNumber": 1,
        "endPageNumber": 2,
        "unit": "inch",
        "pages": [
          {
            "pageNumber": 1,
            "angle": 0.0739153,
            "width": 8.5,
            "height": 11,
            "spans": [
              {
                "offset": 0,
                "length": 620
              }
            ],
            "words": [
              {
                "content": "Example",
                "span": {
                  "length": 7
                },
                "confidence": 0.992,
                "source": "D(1,1.265,1.0836,2.4972,1.0816,2.4964,1.4117,1.2645,1.4117)"
              },
              {
                "content": "Document",
                "span": {
                  "length": 8
                },
                "confidence": 0.996,
                "source": "D(1,2.6252,1.084,4.1615,1.0886,4.1615,1.3993,2.6241,1.4117)"
              },
              {
                "content": "☒",
                "span": {
                  "length": 1
                },
                "confidence": 0.983,
                "source": "D(1,1.258,2.7952,1.3705,2.7949,1.371,2.9098,1.2575,2.9089)"
              },
              {
                "content": "Hybrid",
                "span": {
                  "length": 6
                },
                "confidence": 0.996,
                "source": "D(1,1.4104,2.7836,1.876,2.7823,1.876,2.9377,1.411,2.9396)"
              }
            ],
            "lines": [
              {
                "content": "Example Document",
                "source": "D(1,1.264,1.0836,4.1583,1.0795,4.1589,1.4083,1.2645,1.4117)",
                "span": {
                  "offset": 0,
                  "length": 16
                }
              }
            ],
            "formulas": [
              {
                "confidence": 0.583
              },
              {
                "confidence": 0.708
              }
            ]
          },
          {
            "pageNumber": 2,
            "angle": 0.1008425,
            "width": 8.5,
            "height": 11,
            "spans": [
              {
                "offset": 620,
                "length": 744
              }
            ],
            "words": [
              {
                "content": "Images",
                "source": "D(2,1.4516,1.0434,2.0254,1.0463,2.0254,1.229,1.4506,1.224)"
              },
              {
                "content": "ceramic",
                "source": "D(2,2.5230,4.2539,2.6591,4.2543,2.6584,4.4392,2.5223,4.4407)"
              }
            ],
            "lines": [
              {
                "content": "4. Images",
                "source": "D(2,1.24,1.0409,2.0238,1.0463,2.0226,1.2284,1.2387,1.223)"
              }
            ]
          }
        ],
        "paragraphs": [
          {
            "role": "title",
            "content": "Example Document",
            "source": "D(1,1.264,1.0836,4.1584,1.0795,4.1589,1.4083,1.2644,1.4124)",
            "span": {
              "offset": 0,
              "length": 18
            }
          },
          {
            "role": "sectionHeading",
            "content": "1. Selection Marks (Checkboxes)",
            "source": "D(1,1.2461,1.8719,3.8532,1.8731,3.8531,2.065,1.246,2.0638)",
            "span": {
              "offset": 21,
              "length": 34
            }
          },
          {
            "content": "Employee Preferences Form ☐ Remote ☒ Hybrid ☐ On-site",
            "source": "D(1,1.246,2.0993,3.1019,2.1007,3.101,3.2724,1.2451,3.2709)",
            "span": {
              "offset": 57,
              "length": 53
            }
          }
        ],
        "sections": [
          {
            "span": {
              "offset": 0,
              "length": 1364
            },
            "elements": [
              "/paragraphs/0",
              "/sections/1",
              "/sections/2",
              "/sections/3",
              "/sections/4",
              "/sections/5",
              "/sections/6"
            ]
          },
          {
            "span": {
              "offset": 21,
              "length": 89
            },
            "elements": [
              "/paragraphs/1",
              "/paragraphs/2"
            ]
          }
        ],
        "tables": [
          {
            "rowCount": 6,
            "columnCount": 2,
            "cells": [
              {
                "kind": "columnHeader",
                "rowIndex": 0,
                "columnIndex": 0,
                "rowSpan": 1,
                "columnSpan": 1,
                "content": "Category",
                "source": "D(2,1.1674,5.0483,4.1733,5.0546,4.1733,5.2358,1.1674,5.2358)",
                "span": {
                  "offset": 798,
                  "length": 8
                }
              },
              {
                "kind": "columnHeader",
                "rowIndex": 0,
                "columnIndex": 1,
                "rowSpan": 1,
                "columnSpan": 1,
                "content": "Amount ($)",
                "source": "D(2,4.1733,5.0546,7.1668,5.0546,7.1668,5.2358,4.1733,5.2358)",
                "span": {
                  "offset": 816,
                  "length": 10
                }
              }
            ],
            "source": "D(2,1.1566,5.0425,7.1855,5.0428,7.1862,6.1853,1.1574,6.1858)",
            "span": {
              "offset": 781,
              "length": 280
            }
          }
        ],
        "figures": [
          {
            "source": "D(2,1.3465,1.8481,3.4788,1.8484,3.4779,3.8286,1.3456,3.8282)",
            "span": {
              "offset": 658,
              "length": 42
            },
            "elements": [
              "/paragraphs/14"
            ],
            "id": "2.1"
          }
        ]
      }
    ]
  }
}

Este exemplo completo demonstra como a Compreensão de Conteúdo extrai e estrutura todos os diferentes tipos de elementos de um documento. Ele fornece o conteúdo bruto e as informações posicionais e estruturais detalhadas que permitem fluxos de trabalho avançados de processamento de documentos.