Processe documentos com o analisador de esquemas

O analisador de esquemas extrai elementos de conteúdo de documentos, como texto, tabelas e listas, e cria blocos sensíveis ao contexto que facilitam a obtenção de informações em aplicações de IA generativa e de descoberta.

Funcionalidades do analisador sintático de esquemas

  • Analise esquemas de documentos. Pode introduzir ficheiros HTML ou PDF no analisador de esquemas para identificar elementos de conteúdo, como blocos de texto, tabelas, listas e elementos estruturais, como títulos e cabeçalhos. Estes elementos ajudam a definir a organização e a hierarquia de um documento com conteúdo avançado e elementos estruturais que podem criar mais contexto para a obtenção e a descoberta de informações.

  • Divida os documentos em partes. O analisador de esquemas pode dividir os documentos em partes que retêm informações contextuais sobre a hierarquia do esquema do documento original. Os MDIs de geração de respostas podem usar blocos para melhorar a relevância e diminuir a carga computacional.

    Ter em conta o esquema de um documento durante a divisão em partes melhora a coerência semântica e reduz o ruído no conteúdo quando é usado para obtenção e geração de LLMs. Todo o texto num fragmento provém da mesma entidade de esquema, como um cabeçalho, um subtítulo ou uma lista.

  • Analizador de esquemas do Gemini. Pré-visualizar. O analisador de esquemas do Gemini oferece uma melhor qualidade de esquema no reconhecimento de tabelas, na ordem de leitura e no reconhecimento de texto de ficheiros PDF. Pode ativar a funcionalidade por predefinição selecionando a versão do processador de análise de esquemas pretrained-layout-parser-v1.4-2025-08-25, pretrained-layout-parser-v1.5-2025-08-25 ou pretrained-layout-parser-v1.5-pro-2025-08-25 para o seu processador.

  • Analise imagens e tabelas como anotações. Pré-visualizar. O analisador de esquemas pode identificar se existem imagens ou tabelas em documentos analisados. Quando são encontradas, são anotadas como um bloco de texto descritivo com as informações representadas na imagem e na tabela.

Limitações

Aplicam-se as seguintes limitações:

  • Processamento online:
    • Tamanho máximo do ficheiro de entrada de 20 MB para todos os tipos de ficheiros
    • Máximo de 15 páginas por ficheiro PDF
  • Processamento em lote:
    • Tamanho máximo de ficheiro único de 1 GB para ficheiros PDF
    • Máximo de 500 páginas por ficheiro PDF

Deteção de esquemas por tipo de ficheiro

A tabela seguinte apresenta os elementos que o analisador de esquemas pode detetar por tipo de ficheiro de documento.

Tipo de ficheiro Tipo MIME Elementos detetados Limitações
HTML text/html parágrafo, tabela, lista, título, cabeçalho, cabeçalho da página, rodapé da página Tenha em atenção que a análise depende muito das etiquetas HTML, pelo que a formatação baseada em CSS pode não ser capturada.
PDF application/pdf parágrafo, tabela, título, cabeçalho, cabeçalho da página, rodapé da página As tabelas que abrangem várias páginas podem ser divididas em duas tabelas.
DOCX application/vnd.openxmlformats-officedocument.wordprocessingml.document Parágrafos, tabelas em várias páginas, listas, títulos e elementos de cabeçalho As tabelas aninhadas não são suportadas.
PPTX application/vnd.openxmlformats-officedocument.presentationml.presentation elementos de parágrafo, tabela, lista, título e cabeçalho Para que os títulos sejam identificados com precisão, devem ser marcados como tal no ficheiro do PowerPoint. Não são suportadas tabelas aninhadas nem diapositivos ocultos.
XLSX application/vnd.openxmlformats-officedocument.spreadsheetml.sheet tabelas em folhas de cálculo do Excel, compatíveis com os valores INT, FLOAT e STRING A deteção de várias tabelas não é suportada. As folhas, as linhas ou as colunas ocultas também podem afetar a deteção. É possível processar ficheiros com até 5 milhões de células.
XLSM application/vnd.ms-excel.sheet.macroenabled.12 Folha de cálculo com macro ativada, que suporta os valores INT, FLOAT e STRING A deteção de várias tabelas não é suportada. As folhas, as linhas ou as colunas ocultas também podem afetar a deteção.

Versões do processador

Os seguintes modelos estão disponíveis para o analisador de esquemas. Para alterar as versões do modelo, consulte o artigo Faça a gestão das versões do processador.

Para fazer um pedido de aumento da quota (QIR) para a quota do processador predefinida, siga os passos em Faça a gestão da sua quota.

Versão do modelo Descrição Canal de lançamento Data de lançamento
pretrained-layout-parser-v1.0-2024-06-03 Versão de disponibilidade geral para a análise do esquema de documentos. Esta é a versão do processador pré-formado predefinida. Estável 3 de junho de 2024
pretrained-layout-parser-v1.5-2025-08-25 Versão de pré-visualização com tecnologia do MDG Gemini 2.5 Flash para uma melhor análise do esquema em ficheiros PDF. Recomendado para quem quer experimentar novas versões. Se for usado para ficheiros que não sejam PDF, tem o mesmo comportamento que o pretrained-layout-parser-v1.0-2024-06-03 estável. Candidato a lançamento 25 de agosto de 2025
pretrained-layout-parser-v1.5-pro-2025-08-25 Versão de pré-visualização com tecnologia do MDG Gemini 2.5 Pro para uma melhor análise do esquema em ficheiros PDF. A versão 1.5-pro tem uma latência superior à versão 1.5. Se for usado para ficheiros que não sejam PDF, tem o mesmo comportamento que a versão 1.0 estável. Candidato a lançamento 25 de agosto de 2025

Antes de começar

Para ativar o analisador de esquemas, siga estes passos:

  1. Crie um analisador de esquemas seguindo as instruções em Criar e gerir processadores.

    O nome do tipo de processador é LAYOUT_PARSER_PROCESSOR.

  2. Ative o analisador de esquemas seguindo as instruções em Ative um processador.

Envie um pedido de processamento online com o analisador de esquemas

  1. Introduza documentos no analisador sintático de esquemas para os analisar sintaticamente e dividi-los em partes.

    Siga as instruções para pedidos de processamento em lote em Enviar um pedido de processamento.

    Configure campos em ProcessOptions.layoutConfig em ProcessDocumentRequest.

    REST

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • LOCATION: a localização do seu processador, por exemplo:
      • us – Estados Unidos
      • eu - União Europeia
    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • PROCESSOR_ID: o ID do seu processador personalizado.
    • MIME_TYPE: o analisador de esquemas suporta application/pdf e text/html.
    • DOCUMENT: O conteúdo a dividir em partes. O analisador de esquemas aceita documentos PDF ou HTML não processados, ou documentos analisados que foram gerados pelo analisador de esquemas.
    • CHUNK_SIZE: opcional. O tamanho do fragmento, em tokens, a usar ao dividir documentos.
    • INCLUDE_ANCESTOR_HEADINGS: opcional. Booleano. Se deve ou não incluir títulos antecessores ao dividir documentos.

    Método HTTP e URL:

    POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process

    Corpo JSON do pedido:

    // Sample for inputting raw documents such as PDF or HTML
    {
      "rawDocument": {
        "mimeType": "MIME_TYPE",
        "content": "DOCUMENT"
      },
      "processOptions": {
        "layoutConfig": {
          "chunkingConfig": {
            "chunkSize": "CHUNK_SIZE",
            "includeAncestorHeadings": "INCLUDE_ANCESTOR_HEADINGS",
          }
        }
      }
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

    curl -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process"

    PowerShell

    Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

    $headers = @{  }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process" | Select-Object -Expand Content
    A resposta inclui o documento processado com informações de esquema e divisão em partes como Document.documentLayout e Document.chunkedDocument.

    Python

    Para mais informações, consulte a documentação de referência da API Python Document AI.

    Para se autenticar no Document AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

    
    from typing import Optional, Sequence
    
    from google.api_core.client_options import ClientOptions
    from google.cloud import documentai
    
    # TODO(developer): Uncomment these variables before running the sample.
    # project_id = "YOUR_PROJECT_ID"
    # location = "YOUR_PROCESSOR_LOCATION" # Format is "us" or "eu"
    # processor_id = "YOUR_PROCESSOR_ID" # Create processor before running sample
    # processor_version = "rc" # Refer to https://cloud.google.com/document-ai/docs/manage-processor-versions for more information
    # file_path = "/path/to/local/pdf"
    # mime_type = "application/pdf" # Refer to https://cloud.google.com/document-ai/docs/file-types for supported file types
    
    
    def process_document_layout_sample(
        project_id: str,
        location: str,
        processor_id: str,
        processor_version: str,
        file_path: str,
        mime_type: str,
    ) -> documentai.Document:
        process_options = documentai.ProcessOptions(
            layout_config=documentai.ProcessOptions.LayoutConfig(
                chunking_config=documentai.ProcessOptions.LayoutConfig.ChunkingConfig(
                    chunk_size=1000,
                    include_ancestor_headings=True,
                )
            )
        )
    
        document = process_document(
            project_id,
            location,
            processor_id,
            processor_version,
            file_path,
            mime_type,
            process_options=process_options,
        )
    
        print("Document Layout Blocks")
        for block in document.document_layout.blocks:
            print(block)
    
        print("Document Chunks")
        for chunk in document.chunked_document.chunks:
            print(chunk)
    
    
    
    def process_document(
        project_id: str,
        location: str,
        processor_id: str,
        processor_version: str,
        file_path: str,
        mime_type: str,
        process_options: Optional[documentai.ProcessOptions] = None,
    ) -> documentai.Document:
        # You must set the `api_endpoint` if you use a location other than "us".
        client = documentai.DocumentProcessorServiceClient(
            client_options=ClientOptions(
                api_endpoint=f"{location}-documentai.googleapis.com"
            )
        )
    
        # The full resource name of the processor version, e.g.:
        # `projects/{project_id}/locations/{location}/processors/{processor_id}/processorVersions/{processor_version_id}`
        # You must create a processor before running this sample.
        name = client.processor_version_path(
            project_id, location, processor_id, processor_version
        )
    
        # Read the file into memory
        with open(file_path, "rb") as image:
            image_content = image.read()
    
        # Configure the process request
        request = documentai.ProcessRequest(
            name=name,
            raw_document=documentai.RawDocument(content=image_content, mime_type=mime_type),
            # Only supported for Document OCR processor
            process_options=process_options,
        )
    
        result = client.process_document(request=request)
    
        # For a full list of `Document` object attributes, reference this page:
        # https://cloud.google.com/document-ai/docs/reference/rest/v1/Document
        return result.document
    
    

Processe documentos em lote com o analisador de esquemas

Use o procedimento seguinte para analisar e dividir vários documentos num único pedido.

  1. Introduza documentos no analisador sintático de esquemas para os analisar sintaticamente e dividi-los em partes.

    Siga as instruções para pedidos de processamento em lote em Enviar um pedido de processamento.

    Configure campos em ProcessOptions.layoutConfig quando fizer um pedido batchProcess.

    Entrada

    O exemplo de JSON seguinte configura ProcessOptions.layoutConfig.

    "processOptions": {
      "layoutConfig": {
        "chunkingConfig": {
          "chunkSize": "CHUNK_SIZE",
          "includeAncestorHeadings": "INCLUDE_ANCESTOR_HEADINGS_BOOLEAN"
        }
      }
    }
    

    Substitua o seguinte:

    • CHUNK_SIZE: o tamanho máximo do fragmento, em número de tokens, a usar ao dividir documentos.
    • INCLUDE_ANCESTOR_HEADINGS_BOOLEAN: se deve incluir os títulos antecessores ao dividir documentos. Os títulos antecessores são os pais dos subtítulos no documento original. Podem fornecer um fragmento com contexto adicional sobre a respetiva posição no documento original. Podem ser incluídos até dois níveis de títulos com um fragmento.

O que se segue?