Layout parser Quickstart

Use layout parser to extract elements from a document, such as text, tables, and lists.


To follow step-by-step guidance for this task directly in the Google Cloud console, click Guide me :

Guide me


Before you begin

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project : Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project : To create a project, you need the Project Creator role ( roles/resourcemanager.projectCreator ), which contains the resourcemanager.projects.create permission. Learn how to grant roles .

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project .

  4. Enable the Document AI, Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin ), which contains the serviceusage.services.enable permission. Learn how to grant roles .

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project : Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project : To create a project, you need the Project Creator role ( roles/resourcemanager.projectCreator ), which contains the resourcemanager.projects.create permission. Learn how to grant roles .

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project .

  7. Enable the Document AI, Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin ), which contains the serviceusage.services.enable permission. Learn how to grant roles .

    Enable the APIs

Create a processor

  1. In the Google Cloud console, in the Document AI section, and select Processor Gallery.

    Processor Gallery

  2. In the Processor Gallery, search for Layout parserand select Create.

    layout parser option in UI

  3. In the side window, enter a Processor name, such as quickstart-layout-processor .

  4. Select the region closest to you.

  5. Click the Createbutton.

You're taken to the Processor Detailspage of your new form parser processor.

  1. Optional: Select a default processor by clicking Manage versions , and selecting a processor from the Versionstable. Then click Mark as default and confirm by entering the processor name.

Test processor

After creating your processor, you can send annotation requests to it.

  1. Download the sample document .

  2. Click the Upload Test Document button and select the document you just downloaded.

  3. You should now be on the layout parser analysispage. You can view the blocks or chunks parsed from the document, organized by detected types.

    sample form blocks in UI

Process a document

REST

This example shows how to send a document stored in Cloud Storage to the layout parser for processing. This process enables image and table annotation by default.

REST

Before using any of the request data, make the following replacements:

  • PROJECT_ID : Your Google Cloud project ID.
  • LOCATION : your processor's location , for example:
    • us - United States
    • eu - European Union
  • PROCESSOR_ID : the ID of your custom processor.
  • MIME_TYPE : Layout parser supports application/pdf and text/html .
  • GCS_FILE_PATH : The file path for the Cloud Storage bucket with your document.
  • CHUNK_SIZE : Optional. The chunk size, in tokens, to use when splitting documents.
  • INCLUDE_ANCESTOR_HEADINGS : Optional. Boolean. Whether or not to include ancestor headings when splitting documents.

HTTP method and URL:

POST https:// LOCATION 
-documentai.googleapis.com/v1beta3/projects/ PROJECT_ID 
/locations/ LOCATION 
/processors/ PROCESSOR_ID 
/processorVersions/ pretrained-layout-parser-v1.5-2025-08-25 
:process

Request JSON body:

{
  "gcsDocument": {
    "gcsUri": " GCS_FILE_PATH 
",
    "mimeType": " MIME_TYPE 
"
  },
  "processOptions": {
    "layoutConfig": {
      "enableTableAnnotation": "true",
      "enableImageAnnotation": "true",
      "chunkingConfig": {
        "chunkSize": " CHUNK_SIZE 
",
        "includeAncestorHeadings": " INCLUDE_ANCESTOR_HEADINGS 
",
      }
    }
  }
}

To send your request, choose one of these options:

curl

Save the request body in a file named request.json , and execute the following command:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https:// LOCATION -documentai.googleapis.com/v1beta3/projects/ PROJECT_ID /locations/ LOCATION /processors/ PROCESSOR_ID /processorVersions/ pretrained-layout-parser-v1.5-2025-08-25 :process"

PowerShell

Save the request body in a file named request.json , and execute the following command:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https:// LOCATION -documentai.googleapis.com/v1beta3/projects/ PROJECT_ID /locations/ LOCATION /processors/ PROCESSOR_ID /processorVersions/ pretrained-layout-parser-v1.5-2025-08-25 :process" | Select-Object -Expand Content

You should receive a successful status code (2xx) and an empty response.

Review the output

A successful request returns a document object in JSON. The most important fields for Retrieval Augmented Generation (RAG) is document.chunked_document.chunks .

The following is the output form parsing the third page of "Winnie the Pooh" by A.A. Milne.

  { 
  
 "document" 
 : 
  
 { 
  
 docume 
 nt 
 _layou 
 t 
  
 { 
  
 blocks 
  
 { 
  
 block_id 
 : 
  
 "1" 
  
 te 
 x 
 t 
 _block 
  
 { 
  
 te 
 x 
 t 
 : 
  
 "WE ARE INTRODUCED 3" 
  
 t 
 ype_ 
 : 
  
 "header" 
  
 } 
  
 page_spa 
 n 
  
 { 
  
 page_s 
 tart 
 : 
  
 1 
  
 page_e 
 n 
 d 
 : 
  
 1 
  
 } 
  
 } 
  
 blocks 
  
 { 
  
 block_id 
 : 
  
 "2" 
  
 page_spa 
 n 
  
 { 
  
 page_s 
 tart 
 : 
  
 1 
  
 page_e 
 n 
 d 
 : 
  
 1 
  
 } 
  
 image_block 
  
 { 
  
 mime_ 
 t 
 ype 
 : 
  
 "image/png" 
  
 a 
 nn 
 o 
 tat 
 io 
 ns 
  
 { 
  
 descrip 
 t 
 io 
 n 
 : 
  
 "This is an ink drawing depicting Winnie-the-Pooh sitting outside his house.\n\nHere are the facts and conclusions that can be derived from the image:\n\n*   **Character:** The central figure is a bear, identifiable as Winnie-the-Pooh, sitting on a log.\n*   **Location:** He is positioned outside what appears to be a small, rustic shelter or house.\n*   **Signage:** Above the doorway of the shelter, there is a sign that reads \"MR SANDERZ\". Below this sign, there is another partial sign visible, where the letters \"RNIG\" and \"ALSO\" can be seen.\n*   **Doorbell:** To the left of the doorway, a bell is hanging, indicating a doorbell mechanism.\n*   **Setting:** The dwelling is surrounded by what looks like brush, trees, and general wilderness, suggested by the lines representing foliage and twigs.\n*   **Log:** Pooh is seated on a cut log or tree trunk. To the left of this log, there are other smaller logs or branches piled up.\n*   **Style:** The image is a black and white line drawing, characteristic of classic book illustrations." 
  
 } 
  
 blob_asse 
 t 
 _id 
 : 
  
 "blob_1" 
  
 } 
  
 } 
  
 blocks 
  
 { 
  
 block_id 
 : 
  
 "3" 
  
 te 
 x 
 t 
 _block 
  
 { 
  
 te 
 x 
 t 
 : 
  
 "" 
 Wi 
 nn 
 ie 
 - 
 t 
 he 
 - 
 Pooh 
  
 was 
 n 
 ' 
 t 
  
 qui 
 te 
  
 sure 
 , 
 " said Christopher Robin. " 
 Now 
  
 I 
  
 am 
 , 
 " said a growly voice. " 
 The 
 n 
  
 I 
  
 will 
  
 go 
  
 o 
 n 
 , 
 "said I.) One day when he was out walking, he came to an open place in the middle of the forest, and in the middle of this place was a large oak-tree, and, from the top of the tree, there came a loud buzzing-noise. Winnie-the-Pooh sat down at the foot of the tree,put his head between his paws and began to think." 
  
 t 
 ype_ 
 : 
  
 "paragraph" 
  
 } 
  
 page_spa 
 n 
  
 { 
  
 page_s 
 tart 
 : 
  
 1 
  
 page_e 
 n 
 d 
 : 
  
 1 
  
 } 
  
 } 
  
 blocks 
  
 { 
  
 block_id 
 : 
  
 "4" 
  
 te 
 x 
 t 
 _block 
  
 { 
  
 te 
 x 
 t 
 : 
  
 "Digitized by Google" 
  
 t 
 ype_ 
 : 
  
 "footer" 
  
 } 
  
 page_spa 
 n 
  
 { 
  
 page_s 
 tart 
 : 
  
 1 
  
 page_e 
 n 
 d 
 : 
  
 1 
  
 } 
  
 } 
  
 } 
  
 chu 
 n 
 ked_docume 
 nt 
  
 { 
  
 chu 
 n 
 ks 
  
 { 
  
 chu 
 n 
 k_id 
 : 
  
 "c1" 
  
 source_block_ids 
 : 
  
 "2" 
  
 source_block_ids 
 : 
  
 "3" 
  
 co 
 ntent 
 : 
  
 "__START_OF_ANNOTATION__This is an ink drawing depicting Winnie-the-Pooh sitting outside his house.\n\nHere are the facts and conclusions that can be derived from the image:\n\n*   **Character:** The central figure is a bear, identifiable as Winnie-the-Pooh, sitting on a log.\n*   **Location:** He is positioned outside what appears to be a small, rustic shelter or house.\n*   **Signage:** Above the doorway of the shelter, there is a sign that reads \"MR SANDERZ\". Below this sign, there is another partial sign visible, where the letters \"RNIG\" and \"ALSO\" can be seen.\n*   **Doorbell:** To the left of the doorway, a bell is hanging, indicating a doorbell mechanism.\n*   **Setting:** The dwelling is surrounded by what looks like brush, trees, and general wilderness, suggested by the lines representing foliage and twigs.\n*   **Log:** Pooh is seated on a cut log or tree trunk. To the left of this log, there are other smaller logs or branches piled up.\n*   **Style:** The image is a black and white line drawing, characteristic of classic book illustrations.__END_OF_ANNOTATION__" 
 Wi 
 nn 
 ie 
 - 
 t 
 he 
 - 
 Pooh 
  
 was 
 n 
 ' 
 t 
  
 qui 
 te 
  
 sure 
 , 
 " said Christopher Robin. " 
 Now 
  
 I 
  
 am 
 , 
 " said a growly voice. " 
 The 
 n 
  
 I 
  
 will 
  
 go 
  
 o 
 n 
 , 
 " said I.) One day when he was out walking, he came to an open place in the middle of the forest, and in the middle of this place was a large oak-tree, and, from the top of the tree, there came a loud buzzing-noise. Winnie-the-Pooh sat down at the foot of the tree,put his head between his paws and began to think." 
  
 page_spa 
 n 
  
 { 
  
 page_s 
 tart 
 : 
  
 1 
  
 page_e 
 n 
 d 
 : 
  
 1 
  
 } 
  
 page_headers 
  
 { 
  
 te 
 x 
 t 
 : 
  
 "WE ARE INTRODUCED 3" 
  
 page_spa 
 n 
  
 { 
  
 page_s 
 tart 
 : 
  
 1 
  
 page_e 
 n 
 d 
 : 
  
 1 
  
 } 
  
 } 
  
 page_ 
 f 
 oo 
 ters 
  
 { 
  
 te 
 x 
 t 
 : 
  
 "Digitized by Google" 
  
 page_spa 
 n 
  
 { 
  
 page_s 
 tart 
 : 
  
 1 
  
 page_e 
 n 
 d 
 : 
  
 1 
  
 } 
  
 } 
  
 chu 
 n 
 k_ 
 f 
 ields 
  
 { 
  
 image_chu 
 n 
 k_ 
 f 
 ield 
  
 { 
  
 blob_asse 
 t 
 _id 
 : 
  
 "blob_1" 
  
 a 
 nn 
 o 
 tat 
 io 
 ns 
  
 { 
  
 descrip 
 t 
 io 
 n 
 : 
  
 "This is an ink drawing depicting Winnie-the-Pooh sitting outside his house.\n\nHere are the facts and conclusions that can be derived from the image:\n\n*   **Character:** The central figure is a bear, identifiable as Winnie-the-Pooh, sitting on a log.\n*   **Location:** He is positioned outside what appears to be a small, rustic shelter or house.\n*   **Signage:** Above the doorway of the shelter, there is a sign that reads \"MR SANDERZ\". Below this sign, there is another partial sign visible, where the letters \"RNIG\" and \"ALSO\" can be seen.\n*   **Doorbell:** To the left of the doorway, a bell is hanging, indicating a doorbell mechanism.\n*   **Setting:** The dwelling is surrounded by what looks like brush, trees, and general wilderness, suggested by the lines representing foliage and twigs.\n*   **Log:** Pooh is seated on a cut log or tree trunk. To the left of this log, there are other smaller logs or branches piled up.\n*   **Style:** The image is a black and white line drawing, characteristic of classic book illustrations." 
  
 } 
  
 } 
  
 } 
  
 } 
  
 } 
  
 blob_asse 
 ts 
  
 { 
  
 asse 
 t 
 _id 
 : 
  
 "blob_1" 
  
 co 
 ntent 
 : 
  
 "image_bytes" 
  
 mime_ 
 t 
 ype 
 : 
  
 "image/png" 
  
 } 
 } 
 

Python

This guide shows how to use the Python client library to process a document. Using this code enables image and table annotation by default.

  1. Install the client library.

     ! pip install --upgrade --quiet google-cloud-documentai 
    
  2. Run the processor.

      def 
      
     process_layout_parser 
     ( 
      
     project_id 
     : 
      
     str 
     , 
      
     location 
     : 
      
     str 
     , 
      
     processor_id 
     : 
      
     str 
     , 
      
     gcs_uri 
     : 
      
     str 
     , 
      
     mime_type 
     : 
      
     str 
     ): 
      
     """ 
     Processes a document with the layout parser and prints chunk text. 
     """ 
      
     client 
      
     = 
      
     documentai 
     . 
     DocumentProcessorServiceClient 
     () 
      
     # The full resource name of the processor 
      
     processor_version_id 
      
     = 
      
     'pretrained-layout-parser-v1.5-2025-08-25' 
      
     name 
      
     = 
      
     client 
     . 
     processor_path 
     ( 
     project_id 
     , 
      
     location 
     , 
      
     processor_id 
     , 
      
     processor_version_id 
     ) 
      
     # Configure the Cloud Storage document 
      
     gcs_document 
      
     = 
      
     documentai 
     . 
     GcsDocument 
     ( 
     gcs_uri 
     = 
     gcs_uri 
     , 
      
     mime_type 
     = 
     mime_type 
     ) 
      
     # Configure processing options for RAG 
      
     # This enables annotation and context-aware chunking. 
      
     process_options 
      
     = 
      
     documentai 
     . 
     ProcessOptions 
     ( 
      
     # Process only specific pages 
      
     layout_config 
     = 
     documentai 
     . 
     ProcessOptions 
     . 
     LayoutConfig 
     ( 
      
     enable_table_annotation 
     = 
     True 
     , 
      
     enable_image_annotation 
     = 
     True 
     , 
      
     chunking_config 
     = 
     documentai 
     . 
     ProcessOptions 
     . 
     LayoutConfig 
     . 
     ChunkingConfig 
     ( 
      
     chunk_size 
     = 
     1024 
     , 
      
     include_ancestor_headings 
     = 
     True 
     , 
      
     ), 
      
     ), 
      
     ) 
      
     # Build the request 
      
     request 
      
     = 
      
     documentai 
     . 
     ProcessRequest 
     ( 
      
     name 
     = 
     name 
     , 
      
     gcs_document 
     = 
     gcs_document 
     , 
      
     process_options 
     = 
     process_options 
     , 
      
     ) 
      
     # Process the document 
      
     result 
      
     = 
      
     client 
     . 
     process_document 
     ( 
     request 
     = 
     request 
     ) 
      
     document 
      
     = 
      
     result 
     . 
     document 
      
     print 
     ( 
     f 
     "Document processing complete. 
     \n 
     " 
     ) 
      
     print 
     ( 
     "--- RAG-Ready Chunks (with context) ---" 
     ) 
      
     for 
      
     i 
     , 
      
     chunk 
      
     in 
      
     enumerate 
     ( 
     document 
     . 
     chunked_document 
     . 
     chunks 
     ): 
      
     print 
     ( 
     f 
     " 
     \n 
     --- Chunk {i} ---" 
     ) 
      
     # Print the chunk's content 
      
     print 
     ( 
     f 
     "Text: {chunk.content}" 
     ) 
      
     return 
      
     result 
     
    

Batch process documents with layout parser

Use the following procedure to parse and chunk multiple documents in a single request.

  1. Input documents to layout parser to parse and chunk.

  2. Follow the instructions for batch processing requests in Send a processing request .

  3. Configure fields in ProcessOptions.layoutConfig when making a batchProcess request.

    Input

    The following example JSON configures ProcessOptions.layoutConfig .

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

    Replace the following:

    • CHUNK_SIZE : The maximum chunk size, in number of tokens, to use when splitting documents.
    • INCLUDE_ANCESTOR_HEADINGS_BOOLEAN : Whether to include ancestor headings when splitting documents. Ancestor headings are the parents of subheadings in the original document. They can provide a chunk with additional context about its position in the original document. Up to two levels of headings can be included with a chunk.

Clean up

To avoid incurring charges to your Google Cloud account for the resources used on this page, follow these steps.

To avoid unnecessary Google Cloud charges, use the Google Cloud console to delete your processor and project if you don't need them.

If you created a new project to learn about Document AI and you no longer need the project, [delete the project][delete-project].

If you used an existing Google Cloud project, delete the resources you created to avoid incurring charges to your account:

  1. In the Google Cloud console navigation menu, select Document AIand select My Processors.

  2. Select More actions in the same row as the processor you want to delete.

  3. Select Delete processor, enter the processor name, then select Deleteagain to confirm.

What's next

For details, see Guides .

Create a Mobile Website
View Site in Mobile | Classic
Share by: