Document represents the canonical document resource in Document AI. It is an interchange format that provides insights into documents and allows for collaboration between users and Document AI to iterate and optimize for quality.
JSON representation |
---|
{ "mimeType": string, "text": string, "textStyles": [ { object ( |
Fields | |
---|---|
mimeType |
An IANA published media type (MIME type). |
text |
Optional. UTF-8 encoded text in reading order from the document. |
textStyles[] |
Styles for the |
pages[] |
Visual page layout for the |
entities[] |
A list of entities detected on |
entityRelations[] |
Placeholder. Relationship among |
textChanges[] |
Placeholder. A list of text corrections made to |
shardInfo |
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. |
error |
Any error that occurred while processing this document. |
revisions[] |
Placeholder. Revision history of this document. |
documentLayout |
Parsed layout of the document. |
chunkedDocument |
Document chunked based on chunking config. |
Union field source . Original source document from the user. source can be only one of the following: |
|
uri |
Optional. Currently supports Google Cloud Storage URI of the form |
content |
Optional. Inline document content, represented as a stream of bytes. Note: As with all A base64-encoded string. |
Style
Annotation for common text style attributes. This adheres to CSS conventions as much as possible.
JSON representation |
---|
{ "textAnchor": { object ( |
Fields | |
---|---|
textAnchor |
Text anchor indexing into the |
color |
Text color. |
backgroundColor |
Text background color. |
fontWeight |
Font weight. Possible values are |
textStyle |
Text style. Possible values are |
textDecoration |
Text decoration. Follows CSS standard. |
fontSize |
Font size. |
fontFamily |
Font family such as |
TextAnchor
Text reference indexing into the Document.text
.
JSON representation |
---|
{
"textSegments": [
{
object ( |
Fields | |
---|---|
textSegments[] |
The text segments from the |
content |
Contains the content of the text span so that users do not have to look it up in the textSegments. It is always populated for formFields. |
TextSegment
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
JSON representation |
---|
{ "startIndex": string, "endIndex": string } |
Fields | |
---|---|
startIndex |
|
endIndex |
|
FontSize
Font size with unit.
JSON representation |
---|
{ "size": number, "unit": string } |
Fields | |
---|---|
size |
Font size for the text. |
unit |
Unit for the font size. Follows CSS naming (such as |
Page
A page in a Document
.
JSON representation |
---|
{ "pageNumber": integer, "image": { object ( |
Fields | |
---|---|
pageNumber |
1-based index for current |
image |
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. |
transforms[] |
Transformation matrices that were applied to the original document image to produce |
dimension |
Physical dimension of the page. |
layout |
|
detectedLanguages[] |
A list of detected languages together with confidence. |
blocks[] |
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. |
paragraphs[] |
A list of visually detected text paragraphs on the page. A collection of lines that a human would perceive as a paragraph. |
lines[] |
A list of visually detected text lines on the page. A collection of tokens that a human would perceive as a line. |
tokens[] |
A list of visually detected tokens on the page. |
visualElements[] |
A list of detected non-text visual elements e.g. checkbox, signature etc. on the page. |
tables[] |
A list of visually detected tables on the page. |
formFields[] |
A list of visually detected form fields on the page. |
symbols[] |
A list of visually detected symbols on the page. |
detectedBarcodes[] |
A list of detected barcodes. |
imageQualityScores |
Image quality scores. |
provenance |
The history of this page. |
Image
Rendered image contents for this page.
JSON representation |
---|
{ "content": string, "mimeType": string, "width": integer, "height": integer } |
Fields | |
---|---|
content |
Raw byte content of the image. A base64-encoded string. |
mimeType |
Encoding media type (MIME type) for the image. |
width |
Width of the image in pixels. |
height |
Height of the image in pixels. |
Matrix
Representation for transformation matrix, intended to be compatible and used with OpenCV format for image manipulation.
JSON representation |
---|
{ "rows": integer, "cols": integer, "type": integer, "data": string } |
Fields | |
---|---|
rows |
Number of rows in the matrix. |
cols |
Number of columns in the matrix. |
type |
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 |
data |
The matrix data. A base64-encoded string. |
Dimension
Dimension for the page.
JSON representation |
---|
{ "width": number, "height": number, "unit": string } |
Fields | |
---|---|
width |
Page width. |
height |
Page height. |
unit |
Dimension unit. |
Layout
Visual element describing a layout unit on a page.
JSON representation |
---|
{ "textAnchor": { object ( |
Fields | |
---|---|
textAnchor |
Text anchor indexing into the |
confidence |
Confidence of the current |
boundingPoly |
The bounding polygon for the |
orientation |
Detected orientation for the |
BoundingPoly
A bounding polygon for the detected image annotation.
JSON representation |
---|
{ "vertices": [ { object ( |
Fields | |
---|---|
vertices[] |
The bounding polygon vertices. |
normalizedVertices[] |
The bounding polygon normalized vertices. |
Vertex
A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.
JSON representation |
---|
{ "x": integer, "y": integer } |
Fields | |
---|---|
x |
X coordinate. |
y |
Y coordinate (starts from the top of the image). |
NormalizedVertex
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.
JSON representation |
---|
{ "x": number, "y": number } |
Fields | |
---|---|
x |
X coordinate. |
y |
Y coordinate (starts from the top of the image). |
Orientation
Detected human reading orientation.
Enums | |
---|---|
ORIENTATION_UNSPECIFIED |
Unspecified orientation. |
PAGE_UP |
Orientation is aligned with page up. |
PAGE_RIGHT |
Orientation is aligned with page right. Turn the head 90 degrees clockwise from upright to read. |
PAGE_DOWN |
Orientation is aligned with page down. Turn the head 180 degrees from upright to read. |
PAGE_LEFT |
Orientation is aligned with page left. Turn the head 90 degrees counterclockwise from upright to read. |
DetectedLanguage
Detected language for a structural component.
JSON representation |
---|
{ "languageCode": string, "confidence": number } |
Fields | |
---|---|
languageCode |
The BCP-47 language code, such as |
confidence |
Confidence of detected language. Range |
Block
A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.
JSON representation |
---|
{ "layout": { object ( |
Fields | |
---|---|
layout |
|
detectedLanguages[] |
A list of detected languages together with confidence. |
provenance |
The history of this annotation. |
Provenance
Structure to identify provenance relationships between annotations in different revisions.
JSON representation |
---|
{ "revision": integer, "id": integer, "parents": [ { object ( |
Fields | |
---|---|
revision |
The index of the revision that produced this element. |
id |
The Id of this operation. Needs to be unique within the scope of the revision. |
parents[] |
References to the original elements that are replaced. |
type |
The type of provenance operation. |
Parent
The parent element the current element is based on. Used for referencing/aligning, removal and replacement operations.
JSON representation |
---|
{ "revision": integer, "index": integer, "id": integer } |
Fields | |
---|---|
revision |
The index of the index into current revision's parentIds list. |
index |
The index of the parent item in the corresponding item list (eg. list of entities, properties within entities, etc.) in the parent revision. |
id |
The id of the parent provenance. |
OperationType
If a processor or agent does an explicit operation on existing elements.
Enums | |
---|---|
OPERATION_TYPE_UNSPECIFIED |
Operation type unspecified. If no operation is specified a provenance entry is simply used to match against a parent . |
ADD |
Add an element. |
REMOVE |
Remove an element identified by parent . |
UPDATE |
Updates any fields within the given provenance scope of the message. It overwrites the fields rather than replacing them. Use this when you want to update a field value of an entity without also updating all the child properties. |
REPLACE |
Currently unused. Replace an element identified by parent . |
EVAL_REQUESTED |
Deprecated. Request human review for the element identified by |
EVAL_APPROVED |
Deprecated. Element is reviewed and approved at human review, confidence will be set to 1.0. |
EVAL_SKIPPED |
Deprecated. Element is skipped in the validation process. |
Paragraph
A collection of lines that a human would perceive as a paragraph.
JSON representation |
---|
{ "layout": { object ( |
Fields | |
---|---|
layout |
|
detectedLanguages[] |
A list of detected languages together with confidence. |
provenance |
The history of this annotation. |
Line
A collection of tokens that a human would perceive as a line. Does not cross column boundaries, can be horizontal, vertical, etc.
JSON representation |
---|
{ "layout": { object ( |
Fields | |
---|---|
layout |
|
detectedLanguages[] |
A list of detected languages together with confidence. |
provenance |
The history of this annotation. |
Token
A detected token.
JSON representation |
---|
{ "layout": { object ( |
Fields | |
---|---|
layout |
|
detectedBreak |
Detected break at the end of a |
detectedLanguages[] |
A list of detected languages together with confidence. |
provenance |
The history of this annotation. |
styleInfo |
Text style attributes. |
DetectedBreak
Detected break at the end of a Token
.
JSON representation |
---|
{
"type": enum ( |
Fields | |
---|---|
type |
Detected break type. |
Type
Enum to denote the type of break found.
Enums | |
---|---|
TYPE_UNSPECIFIED |
Unspecified break type. |
SPACE |
A single whitespace. |
WIDE_SPACE |
A wider whitespace. |
HYPHEN |
A hyphen that indicates that a token has been split across lines. |
StyleInfo
Font and other text style attributes.
JSON representation |
---|
{ "fontSize": integer, "pixelFontSize": number, "letterSpacing": number, "fontType": string, "bold": boolean, "italic": boolean, "underlined": boolean, "strikeout": boolean, "subscript": boolean, "superscript": boolean, "smallcaps": boolean, "fontWeight": integer, "handwritten": boolean, "textColor": { object ( |
Fields | |
---|---|
fontSize |
Font size in points ( |
pixelFontSize |
Font size in pixels, equal to unrounded |
letterSpacing |
Letter spacing in points. |
fontType |
Name or style of the font. |
bold |
Whether the text is bold (equivalent to |
italic |
Whether the text is italic. |
underlined |
Whether the text is underlined. |
strikeout |
Whether the text is strikethrough. This feature is not supported yet. |
subscript |
Whether the text is a subscript. This feature is not supported yet. |
superscript |
Whether the text is a superscript. This feature is not supported yet. |
smallcaps |
Whether the text is in small caps. This feature is not supported yet. |
fontWeight |
TrueType weight on a scale |
handwritten |
Whether the text is handwritten. |
textColor |
Color of the text. |
backgroundColor |
Color of the background. |
VisualElement
Detected non-text visual elements e.g. checkbox, signature etc. on the page.
JSON representation |
---|
{ "layout": { object ( |
Fields | |
---|---|
layout |
|
type |
Type of the |
detectedLanguages[] |
A list of detected languages together with confidence. |
Table
A table representation similar to HTML table structure.
JSON representation |
---|
{ "layout": { object ( |
Fields | |
---|---|
layout |
|
headerRows[] |
Header rows of the table. |
bodyRows[] |
Body rows of the table. |
detectedLanguages[] |
A list of detected languages together with confidence. |
provenance |
The history of this table. |
TableRow
A row of table cells.
JSON representation |
---|
{
"cells": [
{
object ( |
Fields | |
---|---|
cells[] |
Cells that make up this row. |
TableCell
A cell representation inside the table.
JSON representation |
---|
{ "layout": { object ( |
Fields | |
---|---|
layout |
|
rowSpan |
How many rows this cell spans. |
colSpan |
How many columns this cell spans. |
detectedLanguages[] |
A list of detected languages together with confidence. |
FormField
A form field detected on the page.
JSON representation |
---|
{ "fieldName": { object ( |
Fields | |
---|---|
fieldName |
|
fieldValue |
|
nameDetectedLanguages[] |
A list of detected languages for name together with confidence. |
valueDetectedLanguages[] |
A list of detected languages for value together with confidence. |
valueType |
If the value is non-textual, this field represents the type. Current valid values are:
|
correctedKeyText |
Created for Labeling UI to export key text. If corrections were made to the text identified by the |
correctedValueText |
Created for Labeling UI to export value text. If corrections were made to the text identified by the |
provenance |
The history of this annotation. |
Symbol
A detected symbol.
JSON representation |
---|
{ "layout": { object ( |
Fields | |
---|---|
layout |
|
detectedLanguages[] |
A list of detected languages together with confidence. |
DetectedBarcode
A detected barcode.
JSON representation |
---|
{ "layout": { object ( |
Fields | |
---|---|
layout |
|
barcode |
Detailed barcode information of the |
Barcode
Encodes the detailed information of a barcode.
JSON representation |
---|
{ "format": string, "valueFormat": string, "rawValue": string } |
Fields | |
---|---|
format |
Format of a barcode. The supported formats are:
|
valueFormat |
Value format describes the format of the value that a barcode encodes. The supported formats are:
|
rawValue |
Raw value encoded in the barcode. For example: |
ImageQualityScores
Image quality scores for the page image.
JSON representation |
---|
{
"qualityScore": number,
"detectedDefects": [
{
object ( |
Fields | |
---|---|
qualityScore |
The overall quality score. Range |
detectedDefects[] |
A list of detected defects. |
DetectedDefect
Image Quality Defects
JSON representation |
---|
{ "type": string, "confidence": number } |
Fields | |
---|---|
type |
Name of the defect type. Supported values are:
|
confidence |
Confidence of detected defect. Range |
Entity
An entity that could be a phrase in the text or a property that belongs to the document. It is a known entity type, such as a person, an organization, or location.
JSON representation |
---|
{ "textAnchor": { object ( |
Fields | |
---|---|
textAnchor |
Optional. Provenance of the entity. Text anchor indexing into the |
type |
Required. Entity type from a schema e.g. |
mentionText |
Optional. Text value of the entity e.g. |
mentionId |
Optional. Deprecated. Use |
confidence |
Optional. Confidence of detected Schema entity. Range |
pageAnchor |
Optional. Represents the provenance of this entity wrt. the location on the page where it was found. |
id |
Optional. Canonical id. This will be a unique value in the entity list for this document. |
normalizedValue |
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. |
properties[] |
Optional. Entities can be nested to form a hierarchical data structure representing the content in the document. |
provenance |
Optional. The history of this annotation. |
redacted |
Optional. Whether the entity will be redacted for de-identification purposes. |
PageAnchor
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.
JSON representation |
---|
{
"pageRefs": [
{
object ( |
Fields | |
---|---|
pageRefs[] |
One or more references to visual page elements |
PageRef
Represents a weak reference to a page element within a document.
JSON representation |
---|
{ "page": string, "layoutType": enum ( |
Fields | |
---|---|
page |
Required. Index into the |
layoutType |
Optional. The type of the layout element that is being referenced if any. |
layoutId |
Optional. Deprecated. Use |
boundingPoly |
Optional. Identifies the bounding polygon of a layout element on the page. If |
confidence |
Optional. Confidence of detected page element, if applicable. Range |
LayoutType
The type of layout that is being referenced.
Enums | |
---|---|
LAYOUT_TYPE_UNSPECIFIED |
Layout Unspecified. |
BLOCK |
References a Page.blocks element. |
PARAGRAPH |
References a Page.paragraphs element. |
LINE |
References a Page.lines element. |
TOKEN |
References a Page.tokens element. |
VISUAL_ELEMENT |
References a Page.visual_elements element. |
TABLE |
Refrrences a Page.tables element. |
FORM_FIELD |
References a Page.form_fields element. |
NormalizedValue
Parsed and normalized entity value.
JSON representation |
---|
{ "text": string, // Union field |
Fields | |
---|---|
text |
Optional. An optional field to store a normalized string. For some entity types, one of respective Below are sample formats mapped to structured values.
|
Union field structured_value . An optional structured entity value. Must match entity type defined in schema if known. If this field is present, the text field could also be populated. structured_value can be only one of the following: |
|
moneyValue |
Money value. See also: https://github.com/googleapis/googleapis/blob/master/google/type/money.proto |
dateValue |
Date value. Includes year, month, day. See also: https://github.com/googleapis/googleapis/blob/master/google/type/date.proto |
datetimeValue |
DateTime value. Includes date, time, and timezone. See also: https://github.com/googleapis/googleapis/blob/master/google/type/datetime.proto |
addressValue |
Postal address. See also: https://github.com/googleapis/googleapis/blob/master/google/type/postal_address.proto |
booleanValue |
Boolean value. Can be used for entities with binary values, or for checkboxes. |
integerValue |
Integer value. |
floatValue |
Float value. |
EntityRelation
Relationship between Entities
.
JSON representation |
---|
{ "subjectId": string, "objectId": string, "relation": string } |
Fields | |
---|---|
subjectId |
Subject entity id. |
objectId |
Object entity id. |
relation |
Relationship description. |
TextChange
This message is used for text changes aka. OCR corrections.
JSON representation |
---|
{ "textAnchor": { object ( |
Fields | |
---|---|
textAnchor |
Provenance of the correction. Text anchor indexing into the |
changedText |
The text that replaces the text identified in the |
provenance[] |
The history of this annotation. |
ShardInfo
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.
JSON representation |
---|
{ "shardIndex": string, "shardCount": string, "textOffset": string } |
Fields | |
---|---|
shardIndex |
The 0-based index of this shard. |
shardCount |
Total number of shards. |
textOffset |
The index of the first character in |
Revision
Contains past or forward revisions of this document.
JSON representation |
---|
{ "id": string, "parent": [ integer ], "parentIds": [ string ], "createTime": string, "humanReview": { object ( |
Fields | |
---|---|
id |
Id of the revision, internally generated by doc proto storage. Unique within the context of the document. |
parent[] |
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 |
parentIds[] |
The revisions that this revision is based on. Must include all the ids that have anything to do with this revision - eg. there are |
createTime |
The time that the revision was created, internally generated by doc proto storage at the time of create. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: |
humanReview |
Human Review information of this revision. |
Union field source . Who/what made the change source can be only one of the following: |
|
agent |
If the change was made by a person specify the name or id of that person. |
processor |
If the annotation was made by processor identify the processor by its resource name. |
HumanReview
Human Review information of the document.
JSON representation |
---|
{ "state": string, "stateMessage": string } |
Fields | |
---|---|
state |
Human review state. e.g. |
stateMessage |
A message providing more details about the current state of processing. For example, the rejection reason when the state is |
DocumentLayout
Represents the parsed layout of a document as a collection of blocks that the document is divided into.
JSON representation |
---|
{
"blocks": [
{
object ( |
Fields | |
---|---|
blocks[] |
List of blocks in the document. |
DocumentLayoutBlock
Represents a block. A block could be one of the various types (text, table, list) supported.
JSON representation |
---|
{ "blockId": string, "pageSpan": { object ( |
Fields | |
---|---|
blockId |
ID of the block. |
pageSpan |
Page span of the block. |
Union field
|
|
textBlock |
Block consisting of text content. |
tableBlock |
Block consisting of table content/structure. |
listBlock |
Block consisting of list content/structure. |
LayoutTextBlock
Represents a text type block.
JSON representation |
---|
{
"text": string,
"type": string,
"blocks": [
{
object ( |
Fields | |
---|---|
text |
Text content stored in the block. |
type |
Type of the text in the block. Available options are: |
blocks[] |
A text block could further have child blocks. Repeated blocks support further hierarchies and nested blocks. |
LayoutTableBlock
Represents a table type block.
JSON representation |
---|
{ "headerRows": [ { object ( |
Fields | |
---|---|
headerRows[] |
Header rows at the top of the table. |
bodyRows[] |
Body rows containing main table content. |
caption |
Table caption/title. |
LayoutTableRow
Represents a row in a table.
JSON representation |
---|
{
"cells": [
{
object ( |
Fields | |
---|---|
cells[] |
A table row is a list of table cells. |
LayoutTableCell
Represents a cell in a table row.
JSON representation |
---|
{
"blocks": [
{
object ( |
Fields | |
---|---|
blocks[] |
A table cell is a list of blocks. Repeated blocks support further hierarchies and nested blocks. |
rowSpan |
How many rows this cell spans. |
colSpan |
How many columns this cell spans. |
LayoutListBlock
Represents a list type block.
JSON representation |
---|
{
"listEntries": [
{
object ( |
Fields | |
---|---|
listEntries[] |
List entries that constitute a list block. |
type |
Type of the listEntries (if exist). Available options are |
LayoutListEntry
Represents an entry in the list.
JSON representation |
---|
{
"blocks": [
{
object ( |
Fields | |
---|---|
blocks[] |
A list entry is a list of blocks. Repeated blocks support further hierarchies and nested blocks. |
LayoutPageSpan
Represents where the block starts and ends in the document.
JSON representation |
---|
{ "pageStart": integer, "pageEnd": integer } |
Fields | |
---|---|
pageStart |
Page where block starts in the document. |
pageEnd |
Page where block ends in the document. |
ChunkedDocument
Represents the chunks that the document is divided into.
JSON representation |
---|
{
"chunks": [
{
object ( |
Fields | |
---|---|
chunks[] |
List of chunks. |
Chunk
Represents a chunk.
JSON representation |
---|
{ "chunkId": string, "sourceBlockIds": [ string ], "content": string, "pageSpan": { object ( |
Fields | |
---|---|
chunkId |
ID of the chunk. |
sourceBlockIds[] |
Unused. |
content |
Text content of the chunk. |
pageSpan |
Page span of the chunk. |
pageHeaders[] |
Page headers associated with the chunk. |
pageFooters[] |
Page footers associated with the chunk. |
ChunkPageSpan
Represents where the chunk starts and ends in the document.
JSON representation |
---|
{ "pageStart": integer, "pageEnd": integer } |
Fields | |
---|---|
pageStart |
Page where chunk starts in the document. |
pageEnd |
Page where chunk ends in the document. |
ChunkPageHeader
Represents the page header associated with the chunk.
JSON representation |
---|
{
"text": string,
"pageSpan": {
object ( |
Fields | |
---|---|
text |
Header in text format. |
pageSpan |
Page span of the header. |