<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="documentai_v1beta2.html">Cloud Document AI API</a> . <a href="documentai_v1beta2.projects.html">projects</a> . <a href="documentai_v1beta2.projects.locations.html">locations</a> . <a href="documentai_v1beta2.projects.locations.documents.html">documents</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#batchProcess">batchProcess(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">LRO endpoint to batch process many documents. The output is written to Cloud Storage as JSON in the [Document] format.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#process">process(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Processes a single document.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchProcess">batchProcess(parent, body=None, x__xgafv=None)</code>
  <pre>LRO endpoint to batch process many documents. The output is written to Cloud Storage as JSON in the [Document] format.

Args:
  parent: string, Target project and location to make a call. Format: `projects/{project-id}/locations/{location-id}`. If no location is specified, a region will be chosen automatically. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to batch process documents as an asynchronous operation. The output is written to Cloud Storage as JSON in the [Document] format.
    &quot;requests&quot;: [ # Required. Individual requests for each document.
      { # Request to process one document.
          &quot;parent&quot;: &quot;A String&quot;, # Target project and location to make a call. Format: `projects/{project-id}/locations/{location-id}`. If no location is specified, a region will be chosen automatically. This field is only populated when used in ProcessDocument method.
          &quot;tableExtractionParams&quot;: { # Parameters to control table extraction behavior. # Controls table extraction behavior. If not specified, the system will decide reasonable defaults.
            &quot;modelVersion&quot;: &quot;A String&quot;, # Model version of the table extraction system. Default is &quot;builtin/stable&quot;. Specify &quot;builtin/latest&quot; for the latest model.
            &quot;headerHints&quot;: [ # Optional. Reserved for future use.
              &quot;A String&quot;,
            ],
            &quot;enabled&quot;: True or False, # Whether to enable table extraction.
            &quot;tableBoundHints&quot;: [ # Optional. Table bounding box hints that can be provided to complex cases which our algorithm cannot locate the table(s) in.
              { # A hint for a table bounding box on the page for table parsing.
                &quot;boundingBox&quot;: { # A bounding polygon for the detected image annotation. # Bounding box hint for a table on this page. The coordinates must be normalized to [0,1] and the bounding box must be an axis-aligned rectangle.
                  &quot;vertices&quot;: [ # The bounding polygon vertices.
                    { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                      &quot;y&quot;: 42, # Y coordinate.
                      &quot;x&quot;: 42, # X coordinate.
                    },
                  ],
                  &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                    { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                      &quot;y&quot;: 3.14, # Y coordinate.
                      &quot;x&quot;: 3.14, # X coordinate.
                    },
                  ],
                },
                &quot;pageNumber&quot;: 42, # Optional. Page number for multi-paged inputs this hint applies to. If not provided, this hint will apply to all pages by default. This value is 1-based.
              },
            ],
          },
          &quot;automlParams&quot;: { # Parameters to control AutoML model prediction behavior. # Controls AutoML model prediction behavior. AutoMlParams cannot be used together with other Params.
            &quot;model&quot;: &quot;A String&quot;, # Resource name of the AutoML model. Format: `projects/{project-id}/locations/{location-id}/models/{model-id}`.
          },
          &quot;entityExtractionParams&quot;: { # Parameters to control entity extraction behavior. # Controls entity extraction behavior. If not specified, the system will decide reasonable defaults.
            &quot;enabled&quot;: True or False, # Whether to enable entity extraction.
            &quot;modelVersion&quot;: &quot;A String&quot;, # Model version of the entity extraction. Default is &quot;builtin/stable&quot;. Specify &quot;builtin/latest&quot; for the latest model.
          },
          &quot;outputConfig&quot;: { # The desired output location and metadata. # The desired output location. This field is only needed in BatchProcessDocumentsRequest.
            &quot;pagesPerShard&quot;: 42, # The max number of pages to include into each output Document shard JSON on Google Cloud Storage. The valid range is [1, 100]. If not specified, the default value is 20. For example, for one pdf file with 100 pages, 100 parsed pages will be produced. If `pages_per_shard` = 20, then 5 Document shard JSON files each containing 20 parsed pages will be written under the prefix OutputConfig.gcs_destination.uri and suffix pages-x-to-y.json where x and y are 1-indexed page numbers. Example GCS outputs with 157 pages and pages_per_shard = 50: pages-001-to-050.json pages-051-to-100.json pages-101-to-150.json pages-151-to-157.json
            &quot;gcsDestination&quot;: { # The Google Cloud Storage location where the output file will be written to. # The Google Cloud Storage location to write the output to.
              &quot;uri&quot;: &quot;A String&quot;,
            },
          },
          &quot;formExtractionParams&quot;: { # Parameters to control form extraction behavior. # Controls form extraction behavior. If not specified, the system will decide reasonable defaults.
            &quot;keyValuePairHints&quot;: [ # Reserved for future use.
              { # Reserved for future use.
                &quot;valueTypes&quot;: [ # Type of the value. This is case-insensitive, and could be one of: ADDRESS, LOCATION, ORGANIZATION, PERSON, PHONE_NUMBER, ID, NUMBER, EMAIL, PRICE, TERMS, DATE, NAME. Types not in this list will be ignored.
                  &quot;A String&quot;,
                ],
                &quot;key&quot;: &quot;A String&quot;, # The key text for the hint.
              },
            ],
            &quot;modelVersion&quot;: &quot;A String&quot;, # Model version of the form extraction system. Default is &quot;builtin/stable&quot;. Specify &quot;builtin/latest&quot; for the latest model. For custom form models, specify: “custom/{model_name}&quot;. Model name format is &quot;bucket_name/path/to/modeldir&quot; corresponding to &quot;gs://bucket_name/path/to/modeldir&quot; where annotated examples are stored.
            &quot;enabled&quot;: True or False, # Whether to enable form extraction.
          },
          &quot;inputConfig&quot;: { # The desired input location and metadata. # Required. Information about the input file.
            &quot;gcsSource&quot;: { # The Google Cloud Storage location where the input file will be read from. # The Google Cloud Storage location to read the input from. This must be a single file.
              &quot;uri&quot;: &quot;A String&quot;,
            },
            &quot;contents&quot;: &quot;A String&quot;, # Content in bytes, represented as a stream of bytes. Note: As with all `bytes` fields, proto buffer messages use a pure binary representation, whereas JSON representations use base64. This field only works for synchronous ProcessDocument method.
            &quot;mimeType&quot;: &quot;A String&quot;, # Required. Mimetype of the input. Current supported mimetypes are application/pdf, image/tiff, and image/gif. In addition, application/json type is supported for requests with ProcessDocumentRequest.automl_params field set. The JSON file needs to be in Document format.
          },
          &quot;documentType&quot;: &quot;A String&quot;, # Specifies a known document type for deeper structure detection. Valid values are currently &quot;general&quot; and &quot;invoice&quot;. If not provided, &quot;general&quot;\ is used as default. If any other value is given, the request is rejected.
          &quot;ocrParams&quot;: { # Parameters to control Optical Character Recognition (OCR) behavior. # Controls OCR behavior. If not specified, the system will decide reasonable defaults.
            &quot;languageHints&quot;: [ # List of languages to use for OCR. In most cases, an empty value yields the best results since it enables automatic language detection. For languages based on the Latin alphabet, setting `language_hints` is not needed. In rare cases, when the language of the text in the image is known, setting a hint will help get better results (although it will be a significant hindrance if the hint is wrong). Document processing returns an error if one or more of the specified languages is not one of the supported languages.
              &quot;A String&quot;,
            ],
          },
        },
    ],
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="process">process(parent, body=None, x__xgafv=None)</code>
  <pre>Processes a single document.

Args:
  parent: string, Target project and location to make a call. Format: `projects/{project-id}/locations/{location-id}`. If no location is specified, a region will be chosen automatically. This field is only populated when used in ProcessDocument method. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to process one document.
    &quot;parent&quot;: &quot;A String&quot;, # Target project and location to make a call. Format: `projects/{project-id}/locations/{location-id}`. If no location is specified, a region will be chosen automatically. This field is only populated when used in ProcessDocument method.
    &quot;tableExtractionParams&quot;: { # Parameters to control table extraction behavior. # Controls table extraction behavior. If not specified, the system will decide reasonable defaults.
      &quot;modelVersion&quot;: &quot;A String&quot;, # Model version of the table extraction system. Default is &quot;builtin/stable&quot;. Specify &quot;builtin/latest&quot; for the latest model.
      &quot;headerHints&quot;: [ # Optional. Reserved for future use.
        &quot;A String&quot;,
      ],
      &quot;enabled&quot;: True or False, # Whether to enable table extraction.
      &quot;tableBoundHints&quot;: [ # Optional. Table bounding box hints that can be provided to complex cases which our algorithm cannot locate the table(s) in.
        { # A hint for a table bounding box on the page for table parsing.
          &quot;boundingBox&quot;: { # A bounding polygon for the detected image annotation. # Bounding box hint for a table on this page. The coordinates must be normalized to [0,1] and the bounding box must be an axis-aligned rectangle.
            &quot;vertices&quot;: [ # The bounding polygon vertices.
              { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                &quot;y&quot;: 42, # Y coordinate.
                &quot;x&quot;: 42, # X coordinate.
              },
            ],
            &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
              { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                &quot;y&quot;: 3.14, # Y coordinate.
                &quot;x&quot;: 3.14, # X coordinate.
              },
            ],
          },
          &quot;pageNumber&quot;: 42, # Optional. Page number for multi-paged inputs this hint applies to. If not provided, this hint will apply to all pages by default. This value is 1-based.
        },
      ],
    },
    &quot;automlParams&quot;: { # Parameters to control AutoML model prediction behavior. # Controls AutoML model prediction behavior. AutoMlParams cannot be used together with other Params.
      &quot;model&quot;: &quot;A String&quot;, # Resource name of the AutoML model. Format: `projects/{project-id}/locations/{location-id}/models/{model-id}`.
    },
    &quot;entityExtractionParams&quot;: { # Parameters to control entity extraction behavior. # Controls entity extraction behavior. If not specified, the system will decide reasonable defaults.
      &quot;enabled&quot;: True or False, # Whether to enable entity extraction.
      &quot;modelVersion&quot;: &quot;A String&quot;, # Model version of the entity extraction. Default is &quot;builtin/stable&quot;. Specify &quot;builtin/latest&quot; for the latest model.
    },
    &quot;outputConfig&quot;: { # The desired output location and metadata. # The desired output location. This field is only needed in BatchProcessDocumentsRequest.
      &quot;pagesPerShard&quot;: 42, # The max number of pages to include into each output Document shard JSON on Google Cloud Storage. The valid range is [1, 100]. If not specified, the default value is 20. For example, for one pdf file with 100 pages, 100 parsed pages will be produced. If `pages_per_shard` = 20, then 5 Document shard JSON files each containing 20 parsed pages will be written under the prefix OutputConfig.gcs_destination.uri and suffix pages-x-to-y.json where x and y are 1-indexed page numbers. Example GCS outputs with 157 pages and pages_per_shard = 50: pages-001-to-050.json pages-051-to-100.json pages-101-to-150.json pages-151-to-157.json
      &quot;gcsDestination&quot;: { # The Google Cloud Storage location where the output file will be written to. # The Google Cloud Storage location to write the output to.
        &quot;uri&quot;: &quot;A String&quot;,
      },
    },
    &quot;formExtractionParams&quot;: { # Parameters to control form extraction behavior. # Controls form extraction behavior. If not specified, the system will decide reasonable defaults.
      &quot;keyValuePairHints&quot;: [ # Reserved for future use.
        { # Reserved for future use.
          &quot;valueTypes&quot;: [ # Type of the value. This is case-insensitive, and could be one of: ADDRESS, LOCATION, ORGANIZATION, PERSON, PHONE_NUMBER, ID, NUMBER, EMAIL, PRICE, TERMS, DATE, NAME. Types not in this list will be ignored.
            &quot;A String&quot;,
          ],
          &quot;key&quot;: &quot;A String&quot;, # The key text for the hint.
        },
      ],
      &quot;modelVersion&quot;: &quot;A String&quot;, # Model version of the form extraction system. Default is &quot;builtin/stable&quot;. Specify &quot;builtin/latest&quot; for the latest model. For custom form models, specify: “custom/{model_name}&quot;. Model name format is &quot;bucket_name/path/to/modeldir&quot; corresponding to &quot;gs://bucket_name/path/to/modeldir&quot; where annotated examples are stored.
      &quot;enabled&quot;: True or False, # Whether to enable form extraction.
    },
    &quot;inputConfig&quot;: { # The desired input location and metadata. # Required. Information about the input file.
      &quot;gcsSource&quot;: { # The Google Cloud Storage location where the input file will be read from. # The Google Cloud Storage location to read the input from. This must be a single file.
        &quot;uri&quot;: &quot;A String&quot;,
      },
      &quot;contents&quot;: &quot;A String&quot;, # Content in bytes, represented as a stream of bytes. Note: As with all `bytes` fields, proto buffer messages use a pure binary representation, whereas JSON representations use base64. This field only works for synchronous ProcessDocument method.
      &quot;mimeType&quot;: &quot;A String&quot;, # Required. Mimetype of the input. Current supported mimetypes are application/pdf, image/tiff, and image/gif. In addition, application/json type is supported for requests with ProcessDocumentRequest.automl_params field set. The JSON file needs to be in Document format.
    },
    &quot;documentType&quot;: &quot;A String&quot;, # Specifies a known document type for deeper structure detection. Valid values are currently &quot;general&quot; and &quot;invoice&quot;. If not provided, &quot;general&quot;\ is used as default. If any other value is given, the request is rejected.
    &quot;ocrParams&quot;: { # Parameters to control Optical Character Recognition (OCR) behavior. # Controls OCR behavior. If not specified, the system will decide reasonable defaults.
      &quot;languageHints&quot;: [ # List of languages to use for OCR. In most cases, an empty value yields the best results since it enables automatic language detection. For languages based on the Latin alphabet, setting `language_hints` is not needed. In rare cases, when the language of the text in the image is known, setting a hint will help get better results (although it will be a significant hindrance if the hint is wrong). Document processing returns an error if one or more of the specified languages is not one of the supported languages.
        &quot;A String&quot;,
      ],
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Document represents the canonical document resource in Document Understanding AI. It is an interchange format that provides insights into documents and allows for collaboration between users and Document Understanding AI to iterate and optimize for quality.
    &quot;labels&quot;: [ # Labels for this document.
      { # Label attaches schema information and/or other metadata to segments within a Document. Multiple Labels on a single field can denote either different labels, different instances of the same label created at different times, or some combination of both.
        &quot;confidence&quot;: 3.14, # Confidence score between 0 and 1 for label assignment.
        &quot;automlModel&quot;: &quot;A String&quot;, # Label is generated AutoML model. This field stores the full resource name of the AutoML model. Format: `projects/{project-id}/locations/{location-id}/models/{model-id}`
        &quot;name&quot;: &quot;A String&quot;, # Name of the label. When the label is generated from AutoML Text Classification model, this field represents the name of the category.
      },
    ],
    &quot;entityRelations&quot;: [ # Relationship among Document.entities.
      { # Relationship between Entities.
        &quot;subjectId&quot;: &quot;A String&quot;, # Subject entity id.
        &quot;objectId&quot;: &quot;A String&quot;, # Object entity id.
        &quot;relation&quot;: &quot;A String&quot;, # Relationship description.
      },
    ],
    &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Any error that occurred while processing this document.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    },
    &quot;pages&quot;: [ # Visual page layout for the Document.
      { # A page in a Document.
        &quot;dimension&quot;: { # Dimension for the page. # Physical dimension of the page.
          &quot;height&quot;: 3.14, # Page height.
          &quot;width&quot;: 3.14, # Page width.
          &quot;unit&quot;: &quot;A String&quot;, # Dimension unit.
        },
        &quot;tables&quot;: [ # A list of visually detected tables on the page.
          { # A table representation similar to HTML table structure.
            &quot;bodyRows&quot;: [ # Body rows of the table.
              { # A row of table cells.
                &quot;cells&quot;: [ # Cells that make up this row.
                  { # A cell representation inside the table.
                    &quot;layout&quot;: { # Visual element describing a layout unit on a page. # Layout for TableCell.
                      &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
                      &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
                      &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                        &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                        &quot;textSegments&quot;: [ # The text segments from the Document.text.
                          { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                            &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                            &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                          },
                        ],
                      },
                      &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                        &quot;vertices&quot;: [ # The bounding polygon vertices.
                          { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                            &quot;y&quot;: 42, # Y coordinate.
                            &quot;x&quot;: 42, # X coordinate.
                          },
                        ],
                        &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                          { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                            &quot;y&quot;: 3.14, # Y coordinate.
                            &quot;x&quot;: 3.14, # X coordinate.
                          },
                        ],
                      },
                    },
                    &quot;colSpan&quot;: 42, # How many columns this cell spans.
                    &quot;rowSpan&quot;: 42, # How many rows this cell spans.
                    &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
                      { # Detected language for a structural component.
                        &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                        &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
                      },
                    ],
                  },
                ],
              },
            ],
            &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
              { # Detected language for a structural component.
                &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
              },
            ],
            &quot;layout&quot;: { # Visual element describing a layout unit on a page. # Layout for Table.
              &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
              &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
              &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                &quot;textSegments&quot;: [ # The text segments from the Document.text.
                  { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                    &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                    &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                  },
                ],
              },
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
              },
            },
            &quot;headerRows&quot;: [ # Header rows of the table.
              { # A row of table cells.
                &quot;cells&quot;: [ # Cells that make up this row.
                  { # A cell representation inside the table.
                    &quot;layout&quot;: { # Visual element describing a layout unit on a page. # Layout for TableCell.
                      &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
                      &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
                      &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                        &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                        &quot;textSegments&quot;: [ # The text segments from the Document.text.
                          { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                            &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                            &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                          },
                        ],
                      },
                      &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                        &quot;vertices&quot;: [ # The bounding polygon vertices.
                          { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                            &quot;y&quot;: 42, # Y coordinate.
                            &quot;x&quot;: 42, # X coordinate.
                          },
                        ],
                        &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                          { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                            &quot;y&quot;: 3.14, # Y coordinate.
                            &quot;x&quot;: 3.14, # X coordinate.
                          },
                        ],
                      },
                    },
                    &quot;colSpan&quot;: 42, # How many columns this cell spans.
                    &quot;rowSpan&quot;: 42, # How many rows this cell spans.
                    &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
                      { # Detected language for a structural component.
                        &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                        &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
                      },
                    ],
                  },
                ],
              },
            ],
          },
        ],
        &quot;visualElements&quot;: [ # A list of detected non-text visual elements e.g. checkbox, signature etc. on the page.
          { # Detected non-text visual elements e.g. checkbox, signature etc. on the page.
            &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
              { # Detected language for a structural component.
                &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
              },
            ],
            &quot;layout&quot;: { # Visual element describing a layout unit on a page. # Layout for VisualElement.
              &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
              &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
              &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                &quot;textSegments&quot;: [ # The text segments from the Document.text.
                  { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                    &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                    &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                  },
                ],
              },
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
              },
            },
            &quot;type&quot;: &quot;A String&quot;, # Type of the VisualElement.
          },
        ],
        &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
          { # Detected language for a structural component.
            &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
            &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
          },
        ],
        &quot;transforms&quot;: [ # Transformation matrices that were applied to the original document image to produce Page.image.
          { # Representation for transformation matrix, intended to be compatible and used with OpenCV format for image manipulation.
            &quot;type&quot;: 42, # This encodes information about what data type the matrix uses. For example, 0 (CV_8U) is an unsigned 8-bit image. For the full list of OpenCV primitive data types, please refer to https://docs.opencv.org/4.3.0/d1/d1b/group__core__hal__interface.html
            &quot;rows&quot;: 42, # Number of rows in the matrix.
            &quot;data&quot;: &quot;A String&quot;, # The matrix data.
            &quot;cols&quot;: 42, # Number of columns in the matrix.
          },
        ],
        &quot;paragraphs&quot;: [ # A list of visually detected text paragraphs on the page. A collection of lines that a human would perceive as a paragraph.
          { # A collection of lines that a human would perceive as a paragraph.
            &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
              { # Detected language for a structural component.
                &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
              },
            ],
            &quot;layout&quot;: { # Visual element describing a layout unit on a page. # Layout for Paragraph.
              &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
              &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
              &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                &quot;textSegments&quot;: [ # The text segments from the Document.text.
                  { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                    &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                    &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                  },
                ],
              },
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
              },
            },
            &quot;provenance&quot;: { # Structure to identify provenance relationships between annotations in different revisions. # The history of this annotation.
              &quot;type&quot;: &quot;A String&quot;, # The type of provenance operation.
              &quot;revision&quot;: 42, # The index of the revision that produced this element.
              &quot;parents&quot;: [ # References to the original elements that are replaced.
                { # Structure for referencing parent provenances. When an element replaces one of more other elements parent references identify the elements that are replaced.
                  &quot;revision&quot;: 42, # The index of the [Document.revisions] identifying the parent revision.
                  &quot;id&quot;: 42, # The id of the parent provenance.
                },
              ],
              &quot;id&quot;: 42, # The Id of this operation. Needs to be unique within the scope of the revision.
            },
          },
        ],
        &quot;layout&quot;: { # Visual element describing a layout unit on a page. # Layout for the page.
          &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
          &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
          &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
            &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
            &quot;textSegments&quot;: [ # The text segments from the Document.text.
              { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
              },
            ],
          },
          &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
            &quot;vertices&quot;: [ # The bounding polygon vertices.
              { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                &quot;y&quot;: 42, # Y coordinate.
                &quot;x&quot;: 42, # X coordinate.
              },
            ],
            &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
              { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                &quot;y&quot;: 3.14, # Y coordinate.
                &quot;x&quot;: 3.14, # X coordinate.
              },
            ],
          },
        },
        &quot;image&quot;: { # Rendered image contents for this page. # Rendered image for this page. This image is preprocessed to remove any skew, rotation, and distortions such that the annotation bounding boxes can be upright and axis-aligned.
          &quot;content&quot;: &quot;A String&quot;, # Raw byte content of the image.
          &quot;width&quot;: 42, # Width of the image in pixels.
          &quot;mimeType&quot;: &quot;A String&quot;, # Encoding mime type for the image.
          &quot;height&quot;: 42, # Height of the image in pixels.
        },
        &quot;blocks&quot;: [ # A list of visually detected text blocks on the page. A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.
          { # A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.
            &quot;provenance&quot;: { # Structure to identify provenance relationships between annotations in different revisions. # The history of this annotation.
              &quot;type&quot;: &quot;A String&quot;, # The type of provenance operation.
              &quot;revision&quot;: 42, # The index of the revision that produced this element.
              &quot;parents&quot;: [ # References to the original elements that are replaced.
                { # Structure for referencing parent provenances. When an element replaces one of more other elements parent references identify the elements that are replaced.
                  &quot;revision&quot;: 42, # The index of the [Document.revisions] identifying the parent revision.
                  &quot;id&quot;: 42, # The id of the parent provenance.
                },
              ],
              &quot;id&quot;: 42, # The Id of this operation. Needs to be unique within the scope of the revision.
            },
            &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
              { # Detected language for a structural component.
                &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
              },
            ],
            &quot;layout&quot;: { # Visual element describing a layout unit on a page. # Layout for Block.
              &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
              &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
              &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                &quot;textSegments&quot;: [ # The text segments from the Document.text.
                  { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                    &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                    &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                  },
                ],
              },
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
              },
            },
          },
        ],
        &quot;formFields&quot;: [ # A list of visually detected form fields on the page.
          { # A form field detected on the page.
            &quot;valueType&quot;: &quot;A String&quot;, # If the value is non-textual, this field represents the type. Current valid values are: - blank (this indicates the field_value is normal text) - &quot;unfilled_checkbox&quot; - &quot;filled_checkbox&quot;
            &quot;valueDetectedLanguages&quot;: [ # A list of detected languages for value together with confidence.
              { # Detected language for a structural component.
                &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
              },
            ],
            &quot;fieldValue&quot;: { # Visual element describing a layout unit on a page. # Layout for the FormField value.
              &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
              &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
              &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                &quot;textSegments&quot;: [ # The text segments from the Document.text.
                  { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                    &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                    &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                  },
                ],
              },
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
              },
            },
            &quot;fieldName&quot;: { # Visual element describing a layout unit on a page. # Layout for the FormField name. e.g. `Address`, `Email`, `Grand total`, `Phone number`, etc.
              &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
              &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
              &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                &quot;textSegments&quot;: [ # The text segments from the Document.text.
                  { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                    &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                    &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                  },
                ],
              },
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
              },
            },
            &quot;nameDetectedLanguages&quot;: [ # A list of detected languages for name together with confidence.
              { # Detected language for a structural component.
                &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
              },
            ],
          },
        ],
        &quot;pageNumber&quot;: 42, # 1-based index for current Page in a parent Document. Useful when a page is taken out of a Document for individual processing.
        &quot;tokens&quot;: [ # A list of visually detected tokens on the page.
          { # A detected token.
            &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
              { # Detected language for a structural component.
                &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
              },
            ],
            &quot;layout&quot;: { # Visual element describing a layout unit on a page. # Layout for Token.
              &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
              &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
              &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                &quot;textSegments&quot;: [ # The text segments from the Document.text.
                  { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                    &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                    &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                  },
                ],
              },
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
              },
            },
            &quot;detectedBreak&quot;: { # Detected break at the end of a Token. # Detected break at the end of a Token.
              &quot;type&quot;: &quot;A String&quot;, # Detected break type.
            },
            &quot;provenance&quot;: { # Structure to identify provenance relationships between annotations in different revisions. # The history of this annotation.
              &quot;type&quot;: &quot;A String&quot;, # The type of provenance operation.
              &quot;revision&quot;: 42, # The index of the revision that produced this element.
              &quot;parents&quot;: [ # References to the original elements that are replaced.
                { # Structure for referencing parent provenances. When an element replaces one of more other elements parent references identify the elements that are replaced.
                  &quot;revision&quot;: 42, # The index of the [Document.revisions] identifying the parent revision.
                  &quot;id&quot;: 42, # The id of the parent provenance.
                },
              ],
              &quot;id&quot;: 42, # The Id of this operation. Needs to be unique within the scope of the revision.
            },
          },
        ],
        &quot;lines&quot;: [ # A list of visually detected text lines on the page. A collection of tokens that a human would perceive as a line.
          { # A collection of tokens that a human would perceive as a line. Does not cross column boundaries, can be horizontal, vertical, etc.
            &quot;provenance&quot;: { # Structure to identify provenance relationships between annotations in different revisions. # The history of this annotation.
              &quot;type&quot;: &quot;A String&quot;, # The type of provenance operation.
              &quot;revision&quot;: 42, # The index of the revision that produced this element.
              &quot;parents&quot;: [ # References to the original elements that are replaced.
                { # Structure for referencing parent provenances. When an element replaces one of more other elements parent references identify the elements that are replaced.
                  &quot;revision&quot;: 42, # The index of the [Document.revisions] identifying the parent revision.
                  &quot;id&quot;: 42, # The id of the parent provenance.
                },
              ],
              &quot;id&quot;: 42, # The Id of this operation. Needs to be unique within the scope of the revision.
            },
            &quot;detectedLanguages&quot;: [ # A list of detected languages together with confidence.
              { # Detected language for a structural component.
                &quot;confidence&quot;: 3.14, # Confidence of detected language. Range [0, 1].
                &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
              },
            ],
            &quot;layout&quot;: { # Visual element describing a layout unit on a page. # Layout for Line.
              &quot;orientation&quot;: &quot;A String&quot;, # Detected orientation for the Layout.
              &quot;confidence&quot;: 3.14, # Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].
              &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
                &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
                &quot;textSegments&quot;: [ # The text segments from the Document.text.
                  { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
                    &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
                    &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
                  },
                ],
              },
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # The bounding polygon for the Layout.
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
              },
            },
          },
        ],
      },
    ],
    &quot;translations&quot;: [ # A list of translations on Document.text. For document shards, translations in this list may cross shard boundaries.
      { # A translation of the text segment.
        &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
        &quot;translatedText&quot;: &quot;A String&quot;, # Text translated into the target language.
        &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Provenance of the translation. Text anchor indexing into the Document.text. There can only be a single `TextAnchor.text_segments` element. If the start and end index of the text segment are the same, the text change is inserted before that index.
          &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
          &quot;textSegments&quot;: [ # The text segments from the Document.text.
            { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
              &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
              &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
            },
          ],
        },
        &quot;provenance&quot;: [ # The history of this annotation.
          { # Structure to identify provenance relationships between annotations in different revisions.
            &quot;type&quot;: &quot;A String&quot;, # The type of provenance operation.
            &quot;revision&quot;: 42, # The index of the revision that produced this element.
            &quot;parents&quot;: [ # References to the original elements that are replaced.
              { # Structure for referencing parent provenances. When an element replaces one of more other elements parent references identify the elements that are replaced.
                &quot;revision&quot;: 42, # The index of the [Document.revisions] identifying the parent revision.
                &quot;id&quot;: 42, # The id of the parent provenance.
              },
            ],
            &quot;id&quot;: 42, # The Id of this operation. Needs to be unique within the scope of the revision.
          },
        ],
      },
    ],
    &quot;textChanges&quot;: [ # A list of text corrections made to [Document.text]. This is usually used for annotating corrections to OCR mistakes. Text changes for a given revision may not overlap with each other.
      { # This message is used for text changes aka. OCR corrections.
        &quot;changedText&quot;: &quot;A String&quot;, # The text that replaces the text identified in the `text_anchor`.
        &quot;provenance&quot;: [ # The history of this annotation.
          { # Structure to identify provenance relationships between annotations in different revisions.
            &quot;type&quot;: &quot;A String&quot;, # The type of provenance operation.
            &quot;revision&quot;: 42, # The index of the revision that produced this element.
            &quot;parents&quot;: [ # References to the original elements that are replaced.
              { # Structure for referencing parent provenances. When an element replaces one of more other elements parent references identify the elements that are replaced.
                &quot;revision&quot;: 42, # The index of the [Document.revisions] identifying the parent revision.
                &quot;id&quot;: 42, # The id of the parent provenance.
              },
            ],
            &quot;id&quot;: 42, # The Id of this operation. Needs to be unique within the scope of the revision.
          },
        ],
        &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Provenance of the correction. Text anchor indexing into the Document.text. There can only be a single `TextAnchor.text_segments` element. If the start and end index of the text segment are the same, the text change is inserted before that index.
          &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
          &quot;textSegments&quot;: [ # The text segments from the Document.text.
            { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
              &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
              &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
            },
          ],
        },
      },
    ],
    &quot;revisions&quot;: [ # Revision history of this document.
      { # Contains past or forward revisions of this document.
        &quot;agent&quot;: &quot;A String&quot;, # If the change was made by a person specify the name or id of that person.
        &quot;id&quot;: &quot;A String&quot;, # Id of the revision. Unique within the context of the document.
        &quot;createTime&quot;: &quot;A String&quot;, # The time that the revision was created.
        &quot;humanReview&quot;: { # Human Review information of the document. # Human Review information of this revision.
          &quot;state&quot;: &quot;A String&quot;, # Human review state. e.g. `requested`, `succeeded`, `rejected`.
          &quot;stateMessage&quot;: &quot;A String&quot;, # A message providing more details about the current state of processing. For example, the rejection reason when the state is `rejected`.
        },
        &quot;processor&quot;: &quot;A String&quot;, # If the annotation was made by processor identify the processor by its resource name.
        &quot;parent&quot;: [ # The revisions that this revision is based on. This can include one or more parent (when documents are merged.) This field represents the index into the `revisions` field.
          42,
        ],
      },
    ],
    &quot;shardInfo&quot;: { # For a large document, sharding may be performed to produce several document shards. Each document shard contains this field to detail which shard it is. # Information about the sharding if this document is sharded part of a larger document. If the document is not sharded, this message is not specified.
      &quot;shardCount&quot;: &quot;A String&quot;, # Total number of shards.
      &quot;textOffset&quot;: &quot;A String&quot;, # The index of the first character in Document.text in the overall document global text.
      &quot;shardIndex&quot;: &quot;A String&quot;, # The 0-based index of this shard.
    },
    &quot;entities&quot;: [ # A list of entities detected on Document.text. For document shards, entities in this list may cross shard boundaries.
      { # A phrase in the text that is a known entity type, such as a person, an organization, or location.
        &quot;type&quot;: &quot;A String&quot;, # Entity type from a schema e.g. `Address`.
        &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Provenance of the entity. Text anchor indexing into the Document.text.
          &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
          &quot;textSegments&quot;: [ # The text segments from the Document.text.
            { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
              &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
              &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
            },
          ],
        },
        &quot;redacted&quot;: True or False, # Optional. Whether the entity will be redacted for de-identification purposes.
        &quot;id&quot;: &quot;A String&quot;, # Optional. Canonical id. This will be a unique value in the entity list for this document.
        &quot;pageAnchor&quot;: { # Referencing the visual context of the entity in the Document.pages. Page anchors can be cross-page, consist of multiple bounding polygons and optionally reference specific layout element types. # Optional. Represents the provenance of this entity wrt. the location on the page where it was found.
          &quot;pageRefs&quot;: [ # One or more references to visual page elements
            { # Represents a weak reference to a page element within a document.
              &quot;boundingPoly&quot;: { # A bounding polygon for the detected image annotation. # Optional. Identifies the bounding polygon of a layout element on the page.
                &quot;vertices&quot;: [ # The bounding polygon vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
                    &quot;y&quot;: 42, # Y coordinate.
                    &quot;x&quot;: 42, # X coordinate.
                  },
                ],
                &quot;normalizedVertices&quot;: [ # The bounding polygon normalized vertices.
                  { # A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.
                    &quot;y&quot;: 3.14, # Y coordinate.
                    &quot;x&quot;: 3.14, # X coordinate.
                  },
                ],
              },
              &quot;layoutId&quot;: &quot;A String&quot;, # Optional. Deprecated. Use PageRef.bounding_poly instead.
              &quot;layoutType&quot;: &quot;A String&quot;, # Optional. The type of the layout element that is being referenced if any.
              &quot;page&quot;: &quot;A String&quot;, # Required. Index into the Document.pages element
            },
          ],
        },
        &quot;mentionText&quot;: &quot;A String&quot;, # Text value in the document e.g. `1600 Amphitheatre Pkwy`.
        &quot;normalizedValue&quot;: { # Parsed and normalized entity value. # Optional. Normalized entity value. Absent if the extracted value could not be converted or the type (e.g. address) is not supported for certain parsers. This field is also only populated for certain supported document types.
          &quot;dateValue&quot;: { # Represents a whole or partial calendar date, e.g. a birthday. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the Proleptic Gregorian Calendar. This can represent: * A full date, with non-zero year, month and day values * A month and day value, with a zero year, e.g. an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, e.g. a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # Date value. Includes year, month, day. See also: https: //github.com/googleapis/googleapis/blob/master/google/type/date.proto
            &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without a year.
            &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a year by itself or a year and month where the day is not significant.
            &quot;month&quot;: 42, # Month of year. Must be from 1 to 12, or 0 if specifying a year without a month and day.
          },
          &quot;datetimeValue&quot;: { # Represents civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is considered not to have a specific year. month and day must have valid, non-zero values. This type is more flexible than some applications may want. Make sure to document and validate your application&#x27;s limitations. # DateTime value. Includes date, time, and timezone. See also: https: //github.com/googleapis/googleapis/blob/ // master/google/type/datetime.proto
            &quot;hours&quot;: 42, # Required. Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
            &quot;timeZone&quot;: { # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). # Time zone.
              &quot;id&quot;: &quot;A String&quot;, # IANA Time Zone Database time zone, e.g. &quot;America/New_York&quot;.
              &quot;version&quot;: &quot;A String&quot;, # Optional. IANA Time Zone Database version number, e.g. &quot;2019a&quot;.
            },
            &quot;year&quot;: 42, # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
            &quot;minutes&quot;: 42, # Required. Minutes of hour of day. Must be from 0 to 59.
            &quot;seconds&quot;: 42, # Required. Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
            &quot;day&quot;: 42, # Required. Day of month. Must be from 1 to 31 and valid for the year and month.
            &quot;month&quot;: 42, # Required. Month of year. Must be from 1 to 12.
            &quot;utcOffset&quot;: &quot;A String&quot;, # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.
            &quot;nanos&quot;: 42, # Required. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
          },
          &quot;moneyValue&quot;: { # Represents an amount of money with its currency type. # Money value. See also: https: //github.com/googleapis/googleapis/blob/ // master/google/type/money.proto
            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in ISO 4217.
            &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
            &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          },
          &quot;addressValue&quot;: { # Represents a postal address, e.g. for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created via user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an i18n-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478 # Postal address. See also: https: //github.com/googleapis/googleapis/blob/ // master/google/type/postal_address.proto
            &quot;administrativeArea&quot;: &quot;A String&quot;, # Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. &quot;Barcelona&quot; and not &quot;Catalonia&quot;). Many countries don&#x27;t use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.
            &quot;regionCode&quot;: &quot;A String&quot;, # Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See http://cldr.unicode.org/ and http://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: &quot;CH&quot; for Switzerland.
            &quot;sublocality&quot;: &quot;A String&quot;, # Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.
            &quot;postalCode&quot;: &quot;A String&quot;, # Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).
            &quot;locality&quot;: &quot;A String&quot;, # Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.
            &quot;revision&quot;: 42, # The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.
            &quot;languageCode&quot;: &quot;A String&quot;, # Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address&#x27; country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: &quot;zh-Hant&quot;, &quot;ja&quot;, &quot;ja-Latn&quot;, &quot;en&quot;.
            &quot;recipients&quot;: [ # Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain &quot;care of&quot; information.
              &quot;A String&quot;,
            ],
            &quot;sortingCode&quot;: &quot;A String&quot;, # Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like &quot;CEDEX&quot;, optionally followed by a number (e.g. &quot;CEDEX 7&quot;), or just a number alone, representing the &quot;sector code&quot; (Jamaica), &quot;delivery area indicator&quot; (Malawi) or &quot;post office indicator&quot; (e.g. Côte d&#x27;Ivoire).
            &quot;addressLines&quot;: [ # Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. &quot;Austin, TX&quot;), it is important that the line order is clear. The order of address lines should be &quot;envelope order&quot; for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. &quot;ja&quot; for large-to-small ordering and &quot;ja-Latn&quot; or &quot;en&quot; for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).
              &quot;A String&quot;,
            ],
            &quot;organization&quot;: &quot;A String&quot;, # Optional. The name of the organization at the address.
          },
          &quot;text&quot;: &quot;A String&quot;, # Required. Normalized entity value stored as a string. This field is populated for supported document type (e.g. Invoice). For some entity types, one of respective &#x27;structured_value&#x27; fields may also be populated. - Money/Currency type (`money_value`) is in the ISO 4217 text format. - Date type (`date_value`) is in the ISO 8601 text format. - Datetime type (`datetime_value`) is in the ISO 8601 text format.
        },
        &quot;provenance&quot;: { # Structure to identify provenance relationships between annotations in different revisions. # Optional. The history of this annotation.
          &quot;type&quot;: &quot;A String&quot;, # The type of provenance operation.
          &quot;revision&quot;: 42, # The index of the revision that produced this element.
          &quot;parents&quot;: [ # References to the original elements that are replaced.
            { # Structure for referencing parent provenances. When an element replaces one of more other elements parent references identify the elements that are replaced.
              &quot;revision&quot;: 42, # The index of the [Document.revisions] identifying the parent revision.
              &quot;id&quot;: 42, # The id of the parent provenance.
            },
          ],
          &quot;id&quot;: 42, # The Id of this operation. Needs to be unique within the scope of the revision.
        },
        &quot;confidence&quot;: 3.14, # Optional. Confidence of detected Schema entity. Range [0, 1].
        &quot;mentionId&quot;: &quot;A String&quot;, # Deprecated. Use `id` field instead.
        &quot;properties&quot;: [ # Optional. Entities can be nested to form a hierarchical data structure representing the content in the document.
          # Object with schema name: GoogleCloudDocumentaiV1beta2DocumentEntity
        ],
      },
    ],
    &quot;textStyles&quot;: [ # Styles for the Document.text.
      { # Annotation for common text style attributes. This adheres to CSS conventions as much as possible.
        &quot;textAnchor&quot;: { # Text reference indexing into the Document.text. # Text anchor indexing into the Document.text.
          &quot;content&quot;: &quot;A String&quot;, # Contains the content of the text span so that users do not have to look it up in the text_segments.
          &quot;textSegments&quot;: [ # The text segments from the Document.text.
            { # A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset
              &quot;startIndex&quot;: &quot;A String&quot;, # TextSegment start UTF-8 char index in the Document.text.
              &quot;endIndex&quot;: &quot;A String&quot;, # TextSegment half open end UTF-8 char index in the Document.text.
            },
          ],
        },
        &quot;textDecoration&quot;: &quot;A String&quot;, # Text decoration. Follows CSS standard. https://www.w3schools.com/cssref/pr_text_text-decoration.asp
        &quot;fontSize&quot;: { # Font size with unit. # Font size.
          &quot;size&quot;: 3.14, # Font size for the text.
          &quot;unit&quot;: &quot;A String&quot;, # Unit for the font size. Follows CSS naming (in, px, pt, etc.).
        },
        &quot;backgroundColor&quot;: { # Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness; for example, the fields of this representation can be trivially provided to the constructor of &quot;java.awt.Color&quot; in Java; it can also be trivially provided to UIColor&#x27;s &quot;+colorWithRed:green:blue:alpha&quot; method in iOS; and, with just a little work, it can be easily formatted into a CSS &quot;rgba()&quot; string in JavaScript, as well. Note: this proto does not carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color space. Note: when color equality needs to be decided, implementations, unless documented otherwise, will treat two colors to be equal if all their red, green, blue and alpha values each differ by at most 1e-5. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor_(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor_ = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # Text background color.
          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
          &quot;alpha&quot;: 3.14, # The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: pixel color = alpha * (this color) + (1.0 - alpha) * (background color) This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is to be rendered as a solid color (as if the alpha value had been explicitly given with a value of 1.0).
        },
        &quot;color&quot;: { # Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness; for example, the fields of this representation can be trivially provided to the constructor of &quot;java.awt.Color&quot; in Java; it can also be trivially provided to UIColor&#x27;s &quot;+colorWithRed:green:blue:alpha&quot; method in iOS; and, with just a little work, it can be easily formatted into a CSS &quot;rgba()&quot; string in JavaScript, as well. Note: this proto does not carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color space. Note: when color equality needs to be decided, implementations, unless documented otherwise, will treat two colors to be equal if all their red, green, blue and alpha values each differ by at most 1e-5. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor_(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor_ = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # Text color.
          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
          &quot;alpha&quot;: 3.14, # The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: pixel color = alpha * (this color) + (1.0 - alpha) * (background color) This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is to be rendered as a solid color (as if the alpha value had been explicitly given with a value of 1.0).
        },
        &quot;fontWeight&quot;: &quot;A String&quot;, # Font weight. Possible values are normal, bold, bolder, and lighter. https://www.w3schools.com/cssref/pr_font_weight.asp
        &quot;textStyle&quot;: &quot;A String&quot;, # Text style. Possible values are normal, italic, and oblique. https://www.w3schools.com/cssref/pr_font_font-style.asp
      },
    ],
    &quot;text&quot;: &quot;A String&quot;, # UTF-8 encoded text in reading order from the document.
    &quot;content&quot;: &quot;A String&quot;, # Inline document content, represented as a stream of bytes. Note: As with all `bytes` fields, protobuffers use a pure binary representation, whereas JSON representations use base64.
    &quot;uri&quot;: &quot;A String&quot;, # Currently supports Google Cloud Storage URI of the form `gs://bucket_name/object_name`. Object versioning is not supported. See [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris) for more info.
    &quot;mimeType&quot;: &quot;A String&quot;, # An IANA published MIME type (also referred to as media type). For more information, see https://www.iana.org/assignments/media-types/media-types.xhtml.
  }</pre>
</div>

</body></html>