// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.automl.v1; import "google/cloud/automl/v1/geometry.proto"; import "google/cloud/automl/v1/io.proto"; import "google/cloud/automl/v1/text_segment.proto"; option csharp_namespace = "Google.Cloud.AutoML.V1"; option go_package = "cloud.google.com/go/automl/apiv1/automlpb;automlpb"; option java_multiple_files = true; option java_package = "com.google.cloud.automl.v1"; option php_namespace = "Google\\Cloud\\AutoMl\\V1"; option ruby_package = "Google::Cloud::AutoML::V1"; // A representation of an image. // Only images up to 30MB in size are supported. message Image { // Input only. The data representing the image. // For Predict calls [image_bytes][google.cloud.automl.v1.Image.image_bytes] must be set . oneof data { // Image content represented as a stream of bytes. // Note: As with all `bytes` fields, protobuffers use a pure binary // representation, whereas JSON representations use base64. bytes image_bytes = 1; } // Output only. HTTP URI to the thumbnail image. string thumbnail_uri = 4; } // A representation of a text snippet. message TextSnippet { // Required. The content of the text snippet as a string. Up to 250000 // characters long. string content = 1; // Optional. The format of [content][google.cloud.automl.v1.TextSnippet.content]. Currently the only two allowed // values are "text/html" and "text/plain". If left blank, the format is // automatically determined from the type of the uploaded [content][google.cloud.automl.v1.TextSnippet.content]. string mime_type = 2; // Output only. HTTP URI where you can download the content. string content_uri = 4; } // Message that describes dimension of a document. message DocumentDimensions { // Unit of the document dimension. enum DocumentDimensionUnit { // Should not be used. DOCUMENT_DIMENSION_UNIT_UNSPECIFIED = 0; // Document dimension is measured in inches. INCH = 1; // Document dimension is measured in centimeters. CENTIMETER = 2; // Document dimension is measured in points. 72 points = 1 inch. POINT = 3; } // Unit of the dimension. DocumentDimensionUnit unit = 1; // Width value of the document, works together with the unit. float width = 2; // Height value of the document, works together with the unit. float height = 3; } // A structured text document e.g. a PDF. message Document { // Describes the layout information of a [text_segment][google.cloud.automl.v1.Document.Layout.text_segment] in the document. message Layout { // The type of TextSegment in the context of the original document. enum TextSegmentType { // Should not be used. TEXT_SEGMENT_TYPE_UNSPECIFIED = 0; // The text segment is a token. e.g. word. TOKEN = 1; // The text segment is a paragraph. PARAGRAPH = 2; // The text segment is a form field. FORM_FIELD = 3; // The text segment is the name part of a form field. It will be treated // as child of another FORM_FIELD TextSegment if its span is subspan of // another TextSegment with type FORM_FIELD. FORM_FIELD_NAME = 4; // The text segment is the text content part of a form field. It will be // treated as child of another FORM_FIELD TextSegment if its span is // subspan of another TextSegment with type FORM_FIELD. FORM_FIELD_CONTENTS = 5; // The text segment is a whole table, including headers, and all rows. TABLE = 6; // The text segment is a table's headers. It will be treated as child of // another TABLE TextSegment if its span is subspan of another TextSegment // with type TABLE. TABLE_HEADER = 7; // The text segment is a row in table. It will be treated as child of // another TABLE TextSegment if its span is subspan of another TextSegment // with type TABLE. TABLE_ROW = 8; // The text segment is a cell in table. It will be treated as child of // another TABLE_ROW TextSegment if its span is subspan of another // TextSegment with type TABLE_ROW. TABLE_CELL = 9; } // Text Segment that represents a segment in // [document_text][google.cloud.automl.v1p1beta.Document.document_text]. TextSegment text_segment = 1; // Page number of the [text_segment][google.cloud.automl.v1.Document.Layout.text_segment] in the original document, starts // from 1. int32 page_number = 2; // The position of the [text_segment][google.cloud.automl.v1.Document.Layout.text_segment] in the page. // Contains exactly 4 // [normalized_vertices][google.cloud.automl.v1p1beta.BoundingPoly.normalized_vertices] // and they are connected by edges in the order provided, which will // represent a rectangle parallel to the frame. The // [NormalizedVertex-s][google.cloud.automl.v1p1beta.NormalizedVertex] are // relative to the page. // Coordinates are based on top-left as point (0,0). BoundingPoly bounding_poly = 3; // The type of the [text_segment][google.cloud.automl.v1.Document.Layout.text_segment] in document. TextSegmentType text_segment_type = 4; } // An input config specifying the content of the document. DocumentInputConfig input_config = 1; // The plain text version of this document. TextSnippet document_text = 2; // Describes the layout of the document. // Sorted by [page_number][]. repeated Layout layout = 3; // The dimensions of the page in the document. DocumentDimensions document_dimensions = 4; // Number of pages in the document. int32 page_count = 5; } // Example data used for training or prediction. message ExamplePayload { // Required. The example data. oneof payload { // Example image. Image image = 1; // Example text. TextSnippet text_snippet = 2; // Example document. Document document = 4; } }