Traiter des documents avec l'analyseur de mise en page

L'analyseur de mise en page extrait des éléments de contenu de documents tels que du texte, des tableaux et des listes, et crée des segments contextuels qui facilitent la récupération d'informations dans les applications d'IA générative et de découverte.

Fonctionnalités de l'analyseur de mise en page

  • Analyser les mises en page des documents. Vous pouvez saisir des fichiers HTML ou PDF dans le parseur de mise en page pour identifier les éléments de contenu tels que les blocs de texte, les tableaux et les listes, ainsi que les éléments structurels tels que les titres et les en-têtes. Ces éléments permettent de définir l'organisation et la hiérarchie d'un document avec des éléments de contenu et de structure riches qui peuvent créer plus de contexte pour la récupération et la découverte d'informations.

  • Découpez les documents en blocs. Le parseur de mise en page peut diviser les documents en blocs qui conservent les informations contextuelles sur la hiérarchie de mise en page du document d'origine. Les LLM générant des réponses peuvent utiliser des blocs pour améliorer la pertinence et réduire la charge de calcul.

    La prise en compte de la mise en page d'un document lors du découpage en blocs améliore la cohérence sémantique et réduit le bruit dans le contenu lorsqu'il est utilisé pour la récupération et la génération de LLM. Tout le texte d'un bloc provient de la même entité de mise en page, comme un titre, un sous-titre ou une liste.

  • Analyseur de mise en page Gemini Aperçu. L'analyseur de mise en page Gemini offre une meilleure qualité de mise en page pour la reconnaissance des tableaux, l'ordre de lecture et la reconnaissance du texte des fichiers PDF. Vous pouvez activer la fonctionnalité par défaut en sélectionnant la version 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 du processeur d'analyse de la mise en page pour votre processeur.

  • Analyser les images et les tableaux en tant qu'annotations Aperçu. L'analyseur de mise en page peut identifier les images ou les tableaux dans les documents analysés. Lorsqu'ils sont trouvés, ils sont annotés sous forme de bloc de texte descriptif avec les informations représentées dans l'image et le tableau.

Limites

Les limites suivantes s'appliquent :

  • Traitement en ligne :
    • La taille du fichier d'entrée ne doit pas dépasser 20 Mo, quel que soit le type de fichier.
    • 15 pages maximum par fichier PDF
  • Traitement par lot :
    • Taille maximale de 1 Go par fichier PDF
    • 500 pages maximum par fichier PDF

Détection de la mise en page par type de fichier

Le tableau suivant liste les éléments que l'analyseur de mise en page peut détecter par type de fichier de document.

Type de fichier Type MIME Éléments détectés Limites
HTML text/html paragraphe, tableau, liste, titre, en-tête, en-tête de page, pied de page Sachez que l'analyse repose fortement sur les balises HTML. Il est donc possible que la mise en forme basée sur CSS ne soit pas prise en compte.
PDF application/pdf paragraphe, tableau, titre, en-tête, en-tête de page, pied de page Les tableaux qui s'étendent sur plusieurs pages peuvent être divisés en deux.
DOCX application/vnd.openxmlformats-officedocument.wordprocessingml.document paragraphes, tableaux sur plusieurs pages, listes, titres et éléments d'en-tête. Les tableaux imbriqués ne sont pas acceptés.
PPTX application/vnd.openxmlformats-officedocument.presentationml.presentation éléments de paragraphe, de tableau, de liste, de titre et d'en-tête Pour que les titres soient identifiés avec précision, ils doivent être marqués comme tels dans le fichier PowerPoint. Les tableaux imbriqués et les diapositives masquées ne sont pas acceptés.
XLSX application/vnd.openxmlformats-officedocument.spreadsheetml.sheet tables dans les feuilles de calcul Excel, compatibles avec les valeurs INT, FLOAT et STRING La détection de plusieurs tableaux n'est pas prise en charge. Les feuilles, lignes ou colonnes masquées peuvent également avoir une incidence sur la détection. Les fichiers contenant jusqu'à 5 millions de cellules peuvent être traités.
XLSM application/vnd.ms-excel.sheet.macroenabled.12 une feuille de calcul avec macro activée, acceptant les valeurs INT, FLOAT et STRING. La détection de plusieurs tableaux n'est pas prise en charge. Les feuilles, lignes ou colonnes masquées peuvent également avoir une incidence sur la détection.

Versions du processeur

Les modèles suivants sont disponibles pour l'analyseur de mise en page. Pour modifier les versions de modèle, consultez Gérer les versions de l'outil de traitement.

Pour demander une augmentation de quota (DAQ) pour le quota de processeur par défaut, suivez les étapes décrites dans Gérer votre quota.

Version de modèle Description Version disponible Date de disponibilité
pretrained-layout-parser-v1.0-2024-06-03 Version en disponibilité générale pour l'analyse de la mise en page des documents. Il s'agit de la version du processeur préentraîné par défaut. Stable 3 juin 2024
pretrained-layout-parser-v1.5-2025-08-25 Version Preview optimisée par le LLM Gemini 2.5 Flash pour une meilleure analyse de la mise en page des fichiers PDF. Recommandé pour ceux qui souhaitent tester de nouvelles versions. S'il est utilisé pour des fichiers non PDF, il se comportera de la même manière que la version stable de pretrained-layout-parser-v1.0-2024-06-03. Version candidate 25 août 2025
pretrained-layout-parser-v1.5-pro-2025-08-25 Version Preview optimisée par le LLM Gemini 2.5 Pro pour une meilleure analyse de la mise en page des fichiers PDF. La latence de la version 1.5-pro est plus élevée que celle de la version 1.5. S'il est utilisé pour des fichiers non PDF, il se comportera de la même manière que la version stable 1.0. Version candidate 25 août 2025

Avant de commencer

Pour activer l'analyseur de mise en page, procédez comme suit :

  1. Créez un analyseur de mise en page en suivant les instructions de la section Créer et gérer des processeurs.

    Le nom du type de processeur est LAYOUT_PARSER_PROCESSOR.

  2. Activez l'analyseur de mise en page en suivant les instructions de la section Activer un processeur.

Envoyer une requête de traitement en ligne avec l'analyseur de mise en page

  1. Documents d'entrée à analyser et à fragmenter avec l'analyseur de mise en page.

    Suivez les instructions pour les requêtes de traitement par lot dans Envoyer une demande de traitement.

    Configurez les champs dans ProcessOptions.layoutConfig dans ProcessDocumentRequest.

    REST

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • LOCATION : emplacement de votre processeur, par exemple :
      • us : États-Unis
      • eu : Union européenne
    • PROJECT_ID : ID de votre projet Google Cloud .
    • PROCESSOR_ID : ID de votre processeur personnalisé.
    • MIME_TYPE : l'analyseur de mise en page est compatible avec application/pdf et text/html.
    • DOCUMENT : contenu à diviser en blocs. L'analyseur de mise en page accepte les documents PDF ou HTML bruts, ou les documents analysés qui ont été générés par l'analyseur de mise en page.
    • CHUNK_SIZE : facultatif. Taille des fragments, en jetons, à utiliser lors de la division des documents.
    • INCLUDE_ANCESTOR_HEADINGS : facultatif. Valeur booléenne. Indique si les en-têtes d'ancêtres doivent être inclus lors de la division des documents.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

    // 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",
          }
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    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

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $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
    La réponse inclut le document traité avec des informations sur la mise en page et le découpage sous la forme de Document.documentLayout et Document.chunkedDocument.

    Python

    Pour en savoir plus, consultez la documentation de référence de l'API Document AI Python.

    Pour vous authentifier auprès de Document AI, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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
    
    

Traiter des documents par lot avec l'analyseur de mise en page

Procédez comme suit pour analyser et segmenter plusieurs documents dans une même requête.

  1. Documents d'entrée à analyser et à fragmenter avec l'analyseur de mise en page.

    Suivez les instructions pour les requêtes de traitement par lot dans Envoyer une demande de traitement.

    Configurez les champs dans ProcessOptions.layoutConfig lorsque vous envoyez une requête batchProcess.

    Entrée

    L'exemple JSON suivant configure ProcessOptions.layoutConfig.

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

    Remplacez les éléments suivants :

    • CHUNK_SIZE : taille maximale des blocs, en nombre de jetons, à utiliser lors de la division des documents.
    • INCLUDE_ANCESTOR_HEADINGS_BOOLEAN : indique s'il faut inclure les titres des ancêtres lors de la division des documents. Les en-têtes ancêtres sont les parents des sous-titres dans le document d'origine. Ils peuvent fournir un bloc avec un contexte supplémentaire sur sa position dans le document d'origine. Un bloc peut inclure jusqu'à deux niveaux de titres.

Étapes suivantes