...

Source file src/github.com/Azure/azure-sdk-for-go/services/preview/cognitiveservices/v1.0/formrecognizer/models.go

Documentation: github.com/Azure/azure-sdk-for-go/services/preview/cognitiveservices/v1.0/formrecognizer

     1  package formrecognizer
     2  
     3  // Copyright (c) Microsoft Corporation. All rights reserved.
     4  // Licensed under the MIT License. See License.txt in the project root for license information.
     5  //
     6  // Code generated by Microsoft (R) AutoRest Code Generator.
     7  // Changes may cause incorrect behavior and will be lost if the code is regenerated.
     8  
     9  import (
    10  	"encoding/json"
    11  	"github.com/Azure/go-autorest/autorest"
    12  	"github.com/Azure/go-autorest/autorest/date"
    13  	"github.com/gofrs/uuid"
    14  )
    15  
    16  // The package's fully qualified name.
    17  const fqdn = "github.com/Azure/azure-sdk-for-go/services/preview/cognitiveservices/v1.0/formrecognizer"
    18  
    19  // AnalyzeResult analyze API call result.
    20  type AnalyzeResult struct {
    21  	autorest.Response `json:"-"`
    22  	// Status - Status of the analyze operation. Possible values include: 'Status2Success', 'Status2PartialSuccess', 'Status2Failure'
    23  	Status Status2 `json:"status,omitempty"`
    24  	// Pages - Page level information extracted in the analyzed
    25  	// document.
    26  	Pages *[]ExtractedPage `json:"pages,omitempty"`
    27  	// Errors - List of errors reported during the analyze
    28  	// operation.
    29  	Errors *[]FormOperationError `json:"errors,omitempty"`
    30  }
    31  
    32  // ComputerVisionError details about the API request error.
    33  type ComputerVisionError struct {
    34  	// Code - The error code.
    35  	Code interface{} `json:"code,omitempty"`
    36  	// Message - A message explaining the error reported by the service.
    37  	Message *string `json:"message,omitempty"`
    38  	// RequestID - A unique request identifier.
    39  	RequestID *string `json:"requestId,omitempty"`
    40  }
    41  
    42  // ElementReference reference to an OCR word.
    43  type ElementReference struct {
    44  	Ref *string `json:"$ref,omitempty"`
    45  }
    46  
    47  // ErrorInformation ...
    48  type ErrorInformation struct {
    49  	Code       *string     `json:"code,omitempty"`
    50  	InnerError *InnerError `json:"innerError,omitempty"`
    51  	Message    *string     `json:"message,omitempty"`
    52  }
    53  
    54  // ErrorResponse ...
    55  type ErrorResponse struct {
    56  	Error *ErrorInformation `json:"error,omitempty"`
    57  }
    58  
    59  // ExtractedKeyValuePair representation of a key-value pair as a list
    60  // of key and value tokens.
    61  type ExtractedKeyValuePair struct {
    62  	// Key - List of tokens for the extracted key in a key-value pair.
    63  	Key *[]ExtractedToken `json:"key,omitempty"`
    64  	// Value - List of tokens for the extracted value in a key-value pair.
    65  	Value *[]ExtractedToken `json:"value,omitempty"`
    66  }
    67  
    68  // ExtractedPage extraction information of a single page in a
    69  // with a document.
    70  type ExtractedPage struct {
    71  	// Number - Page number.
    72  	Number *int32 `json:"number,omitempty"`
    73  	// Height - Height of the page (in pixels).
    74  	Height *int32 `json:"height,omitempty"`
    75  	// Width - Width of the page (in pixels).
    76  	Width *int32 `json:"width,omitempty"`
    77  	// ClusterID - Cluster identifier.
    78  	ClusterID *int32 `json:"clusterId,omitempty"`
    79  	// KeyValuePairs - List of Key-Value pairs extracted from the page.
    80  	KeyValuePairs *[]ExtractedKeyValuePair `json:"keyValuePairs,omitempty"`
    81  	// Tables - List of Tables and their information extracted from the page.
    82  	Tables *[]ExtractedTable `json:"tables,omitempty"`
    83  }
    84  
    85  // ExtractedTable extraction information about a table
    86  // contained in a page.
    87  type ExtractedTable struct {
    88  	// ID - Table identifier.
    89  	ID *string `json:"id,omitempty"`
    90  	// Columns - List of columns contained in the table.
    91  	Columns *[]ExtractedTableColumn `json:"columns,omitempty"`
    92  }
    93  
    94  // ExtractedTableColumn extraction information of a column in
    95  // a table.
    96  type ExtractedTableColumn struct {
    97  	// Header - List of extracted tokens for the column header.
    98  	Header *[]ExtractedToken `json:"header,omitempty"`
    99  	// Entries - Extracted text for each cell of a column. Each cell
   100  	// in the column can have a list of one or more tokens.
   101  	Entries *[][]ExtractedToken `json:"entries,omitempty"`
   102  }
   103  
   104  // ExtractedToken canonical representation of single extracted text.
   105  type ExtractedToken struct {
   106  	// Text - String value of the extracted text.
   107  	Text *string `json:"text,omitempty"`
   108  	// BoundingBox - Bounding box of the extracted text. Represents the
   109  	// location of the extracted text as a pair of
   110  	// cartesian co-ordinates. The co-ordinate pairs are arranged by
   111  	// top-left, top-right, bottom-right and bottom-left endpoints box
   112  	// with origin reference from the bottom-left of the page.
   113  	BoundingBox *[]float64 `json:"boundingBox,omitempty"`
   114  	// Confidence - A measure of accuracy of the extracted text.
   115  	Confidence *float64 `json:"confidence,omitempty"`
   116  }
   117  
   118  // BasicFieldValue base class representing a recognized field value.
   119  type BasicFieldValue interface {
   120  	AsStringValue() (*StringValue, bool)
   121  	AsNumberValue() (*NumberValue, bool)
   122  	AsFieldValue() (*FieldValue, bool)
   123  }
   124  
   125  // FieldValue base class representing a recognized field value.
   126  type FieldValue struct {
   127  	// Text - OCR text content of the recognized field.
   128  	Text *string `json:"text,omitempty"`
   129  	// Elements - List of references to OCR words comprising the recognized field value.
   130  	Elements *[]ElementReference `json:"elements,omitempty"`
   131  	// ValueType - Possible values include: 'ValueTypeFieldValue', 'ValueTypeStringValue', 'ValueTypeNumberValue'
   132  	ValueType ValueType `json:"valueType,omitempty"`
   133  }
   134  
   135  func unmarshalBasicFieldValue(body []byte) (BasicFieldValue, error) {
   136  	var m map[string]interface{}
   137  	err := json.Unmarshal(body, &m)
   138  	if err != nil {
   139  		return nil, err
   140  	}
   141  
   142  	switch m["valueType"] {
   143  	case string(ValueTypeStringValue):
   144  		var sv StringValue
   145  		err := json.Unmarshal(body, &sv)
   146  		return sv, err
   147  	case string(ValueTypeNumberValue):
   148  		var nv NumberValue
   149  		err := json.Unmarshal(body, &nv)
   150  		return nv, err
   151  	default:
   152  		var fv FieldValue
   153  		err := json.Unmarshal(body, &fv)
   154  		return fv, err
   155  	}
   156  }
   157  func unmarshalBasicFieldValueArray(body []byte) ([]BasicFieldValue, error) {
   158  	var rawMessages []*json.RawMessage
   159  	err := json.Unmarshal(body, &rawMessages)
   160  	if err != nil {
   161  		return nil, err
   162  	}
   163  
   164  	fvArray := make([]BasicFieldValue, len(rawMessages))
   165  
   166  	for index, rawMessage := range rawMessages {
   167  		fv, err := unmarshalBasicFieldValue(*rawMessage)
   168  		if err != nil {
   169  			return nil, err
   170  		}
   171  		fvArray[index] = fv
   172  	}
   173  	return fvArray, nil
   174  }
   175  
   176  // MarshalJSON is the custom marshaler for FieldValue.
   177  func (fv FieldValue) MarshalJSON() ([]byte, error) {
   178  	fv.ValueType = ValueTypeFieldValue
   179  	objectMap := make(map[string]interface{})
   180  	if fv.Text != nil {
   181  		objectMap["text"] = fv.Text
   182  	}
   183  	if fv.Elements != nil {
   184  		objectMap["elements"] = fv.Elements
   185  	}
   186  	if fv.ValueType != "" {
   187  		objectMap["valueType"] = fv.ValueType
   188  	}
   189  	return json.Marshal(objectMap)
   190  }
   191  
   192  // AsStringValue is the BasicFieldValue implementation for FieldValue.
   193  func (fv FieldValue) AsStringValue() (*StringValue, bool) {
   194  	return nil, false
   195  }
   196  
   197  // AsNumberValue is the BasicFieldValue implementation for FieldValue.
   198  func (fv FieldValue) AsNumberValue() (*NumberValue, bool) {
   199  	return nil, false
   200  }
   201  
   202  // AsFieldValue is the BasicFieldValue implementation for FieldValue.
   203  func (fv FieldValue) AsFieldValue() (*FieldValue, bool) {
   204  	return &fv, true
   205  }
   206  
   207  // AsBasicFieldValue is the BasicFieldValue implementation for FieldValue.
   208  func (fv FieldValue) AsBasicFieldValue() (BasicFieldValue, bool) {
   209  	return &fv, true
   210  }
   211  
   212  // FormDocumentReport ...
   213  type FormDocumentReport struct {
   214  	// DocumentName - Reference to the data that the report is for.
   215  	DocumentName *string `json:"documentName,omitempty"`
   216  	// Pages - Total number of pages trained on.
   217  	Pages *int32 `json:"pages,omitempty"`
   218  	// Errors - List of errors per page.
   219  	Errors *[]string `json:"errors,omitempty"`
   220  	// Status - Status of the training operation. Possible values include: 'Success', 'PartialSuccess', 'Failure'
   221  	Status Status `json:"status,omitempty"`
   222  }
   223  
   224  // FormOperationError error reported during an operation.
   225  type FormOperationError struct {
   226  	// ErrorMessage - Message reported during the train operation.
   227  	ErrorMessage *string `json:"errorMessage,omitempty"`
   228  }
   229  
   230  // ImageURL ...
   231  type ImageURL struct {
   232  	// URL - Publicly reachable URL of an image.
   233  	URL *string `json:"url,omitempty"`
   234  }
   235  
   236  // InnerError ...
   237  type InnerError struct {
   238  	RequestID *string `json:"requestId,omitempty"`
   239  }
   240  
   241  // KeysResult result of an operation to get
   242  // the keys extracted by a model.
   243  type KeysResult struct {
   244  	autorest.Response `json:"-"`
   245  	// Clusters - Object mapping ClusterIds to Key lists.
   246  	Clusters map[string][]string `json:"clusters"`
   247  }
   248  
   249  // MarshalJSON is the custom marshaler for KeysResult.
   250  func (kr KeysResult) MarshalJSON() ([]byte, error) {
   251  	objectMap := make(map[string]interface{})
   252  	if kr.Clusters != nil {
   253  		objectMap["clusters"] = kr.Clusters
   254  	}
   255  	return json.Marshal(objectMap)
   256  }
   257  
   258  // Line an object representing a recognized text line.
   259  type Line struct {
   260  	// BoundingBox - Bounding box of a recognized line.
   261  	BoundingBox *[]int32 `json:"boundingBox,omitempty"`
   262  	// Text - The text content of the line.
   263  	Text *string `json:"text,omitempty"`
   264  	// Words - List of words in the text line.
   265  	Words *[]Word `json:"words,omitempty"`
   266  }
   267  
   268  // ModelResult result of a model status query operation.
   269  type ModelResult struct {
   270  	autorest.Response `json:"-"`
   271  	// ModelID - Get or set model identifier.
   272  	ModelID *uuid.UUID `json:"modelId,omitempty"`
   273  	// Status - Get or set the status of model. Possible values include: 'Created', 'Ready', 'Invalid'
   274  	Status Status1 `json:"status,omitempty"`
   275  	// CreatedDateTime - Get or set the created date time of the model.
   276  	CreatedDateTime *date.Time `json:"createdDateTime,omitempty"`
   277  	// LastUpdatedDateTime - Get or set the model last updated datetime.
   278  	LastUpdatedDateTime *date.Time `json:"lastUpdatedDateTime,omitempty"`
   279  }
   280  
   281  // ModelsResult result of query operation to fetch multiple models.
   282  type ModelsResult struct {
   283  	autorest.Response `json:"-"`
   284  	// ModelsProperty - Collection of models.
   285  	ModelsProperty *[]ModelResult `json:"models,omitempty"`
   286  }
   287  
   288  // NumberValue recognized numeric field value.
   289  type NumberValue struct {
   290  	// Value - Numeric value of the recognized field.
   291  	Value *float64 `json:"value,omitempty"`
   292  	// Text - OCR text content of the recognized field.
   293  	Text *string `json:"text,omitempty"`
   294  	// Elements - List of references to OCR words comprising the recognized field value.
   295  	Elements *[]ElementReference `json:"elements,omitempty"`
   296  	// ValueType - Possible values include: 'ValueTypeFieldValue', 'ValueTypeStringValue', 'ValueTypeNumberValue'
   297  	ValueType ValueType `json:"valueType,omitempty"`
   298  }
   299  
   300  // MarshalJSON is the custom marshaler for NumberValue.
   301  func (nv NumberValue) MarshalJSON() ([]byte, error) {
   302  	nv.ValueType = ValueTypeNumberValue
   303  	objectMap := make(map[string]interface{})
   304  	if nv.Value != nil {
   305  		objectMap["value"] = nv.Value
   306  	}
   307  	if nv.Text != nil {
   308  		objectMap["text"] = nv.Text
   309  	}
   310  	if nv.Elements != nil {
   311  		objectMap["elements"] = nv.Elements
   312  	}
   313  	if nv.ValueType != "" {
   314  		objectMap["valueType"] = nv.ValueType
   315  	}
   316  	return json.Marshal(objectMap)
   317  }
   318  
   319  // AsStringValue is the BasicFieldValue implementation for NumberValue.
   320  func (nv NumberValue) AsStringValue() (*StringValue, bool) {
   321  	return nil, false
   322  }
   323  
   324  // AsNumberValue is the BasicFieldValue implementation for NumberValue.
   325  func (nv NumberValue) AsNumberValue() (*NumberValue, bool) {
   326  	return &nv, true
   327  }
   328  
   329  // AsFieldValue is the BasicFieldValue implementation for NumberValue.
   330  func (nv NumberValue) AsFieldValue() (*FieldValue, bool) {
   331  	return nil, false
   332  }
   333  
   334  // AsBasicFieldValue is the BasicFieldValue implementation for NumberValue.
   335  func (nv NumberValue) AsBasicFieldValue() (BasicFieldValue, bool) {
   336  	return &nv, true
   337  }
   338  
   339  // ReadReceiptResult analysis result of the 'Batch Read Receipt' operation.
   340  type ReadReceiptResult struct {
   341  	autorest.Response `json:"-"`
   342  	// Status - Status of the read operation. Possible values include: 'NotStarted', 'Running', 'Failed', 'Succeeded'
   343  	Status TextOperationStatusCodes `json:"status,omitempty"`
   344  	// RecognitionResults - Text recognition result of the 'Batch Read Receipt' operation.
   345  	RecognitionResults *[]TextRecognitionResult `json:"recognitionResults,omitempty"`
   346  	// UnderstandingResults - Semantic understanding result of the 'Batch Read Receipt' operation.
   347  	UnderstandingResults *[]UnderstandingResult `json:"understandingResults,omitempty"`
   348  }
   349  
   350  // StringValue recognized string field value.
   351  type StringValue struct {
   352  	// Value - String value of the recognized field.
   353  	Value *string `json:"value,omitempty"`
   354  	// Text - OCR text content of the recognized field.
   355  	Text *string `json:"text,omitempty"`
   356  	// Elements - List of references to OCR words comprising the recognized field value.
   357  	Elements *[]ElementReference `json:"elements,omitempty"`
   358  	// ValueType - Possible values include: 'ValueTypeFieldValue', 'ValueTypeStringValue', 'ValueTypeNumberValue'
   359  	ValueType ValueType `json:"valueType,omitempty"`
   360  }
   361  
   362  // MarshalJSON is the custom marshaler for StringValue.
   363  func (sv StringValue) MarshalJSON() ([]byte, error) {
   364  	sv.ValueType = ValueTypeStringValue
   365  	objectMap := make(map[string]interface{})
   366  	if sv.Value != nil {
   367  		objectMap["value"] = sv.Value
   368  	}
   369  	if sv.Text != nil {
   370  		objectMap["text"] = sv.Text
   371  	}
   372  	if sv.Elements != nil {
   373  		objectMap["elements"] = sv.Elements
   374  	}
   375  	if sv.ValueType != "" {
   376  		objectMap["valueType"] = sv.ValueType
   377  	}
   378  	return json.Marshal(objectMap)
   379  }
   380  
   381  // AsStringValue is the BasicFieldValue implementation for StringValue.
   382  func (sv StringValue) AsStringValue() (*StringValue, bool) {
   383  	return &sv, true
   384  }
   385  
   386  // AsNumberValue is the BasicFieldValue implementation for StringValue.
   387  func (sv StringValue) AsNumberValue() (*NumberValue, bool) {
   388  	return nil, false
   389  }
   390  
   391  // AsFieldValue is the BasicFieldValue implementation for StringValue.
   392  func (sv StringValue) AsFieldValue() (*FieldValue, bool) {
   393  	return nil, false
   394  }
   395  
   396  // AsBasicFieldValue is the BasicFieldValue implementation for StringValue.
   397  func (sv StringValue) AsBasicFieldValue() (BasicFieldValue, bool) {
   398  	return &sv, true
   399  }
   400  
   401  // TextRecognitionResult an object representing a recognized text region
   402  type TextRecognitionResult struct {
   403  	// Page - The 1-based page number of the recognition result.
   404  	Page *int32 `json:"page,omitempty"`
   405  	// ClockwiseOrientation - The orientation of the image in degrees in the clockwise direction. Range between [0, 360).
   406  	ClockwiseOrientation *float64 `json:"clockwiseOrientation,omitempty"`
   407  	// Width - The width of the image in pixels or the PDF in inches.
   408  	Width *float64 `json:"width,omitempty"`
   409  	// Height - The height of the image in pixels or the PDF in inches.
   410  	Height *float64 `json:"height,omitempty"`
   411  	// Unit - The unit used in the Width, Height and BoundingBox. For images, the unit is 'pixel'. For PDF, the unit is 'inch'. Possible values include: 'Pixel', 'Inch'
   412  	Unit TextRecognitionResultDimensionUnit `json:"unit,omitempty"`
   413  	// Lines - A list of recognized text lines.
   414  	Lines *[]Line `json:"lines,omitempty"`
   415  }
   416  
   417  // TrainRequest contract to initiate a train request.
   418  type TrainRequest struct {
   419  	// Source - Get or set source path.
   420  	Source *string `json:"source,omitempty"`
   421  	// SourceFilter - Get or set filter to further search the
   422  	// source path for content.
   423  	SourceFilter *TrainSourceFilter `json:"sourceFilter,omitempty"`
   424  }
   425  
   426  // TrainResult response of the Train API call.
   427  type TrainResult struct {
   428  	autorest.Response `json:"-"`
   429  	// ModelID - Identifier of the model.
   430  	ModelID *uuid.UUID `json:"modelId,omitempty"`
   431  	// TrainingDocuments - List of documents used to train the model and the
   432  	// train operation error reported by each.
   433  	TrainingDocuments *[]FormDocumentReport `json:"trainingDocuments,omitempty"`
   434  	// Errors - Errors returned during the training operation.
   435  	Errors *[]FormOperationError `json:"errors,omitempty"`
   436  }
   437  
   438  // TrainSourceFilter filters to be applied when traversing a data source.
   439  type TrainSourceFilter struct {
   440  	// Prefix - A case-sensitive prefix string to filter content
   441  	// under the source location. For e.g., when using a Azure Blob
   442  	// Uri use the prefix to restrict subfolders for content.
   443  	Prefix *string `json:"prefix,omitempty"`
   444  	// IncludeSubFolders - A flag to indicate if sub folders within the set of
   445  	// prefix folders will also need to be included when searching
   446  	// for content to be preprocessed.
   447  	IncludeSubFolders *bool `json:"includeSubFolders,omitempty"`
   448  }
   449  
   450  // UnderstandingResult a set of extracted fields corresponding to a semantic object, such as a receipt, in
   451  // the input document.
   452  type UnderstandingResult struct {
   453  	// Pages - List of pages where the document is found.
   454  	Pages *[]int32 `json:"pages,omitempty"`
   455  	// Fields - Dictionary of recognized field values.
   456  	Fields map[string]BasicFieldValue `json:"fields"`
   457  }
   458  
   459  // MarshalJSON is the custom marshaler for UnderstandingResult.
   460  func (ur UnderstandingResult) MarshalJSON() ([]byte, error) {
   461  	objectMap := make(map[string]interface{})
   462  	if ur.Pages != nil {
   463  		objectMap["pages"] = ur.Pages
   464  	}
   465  	if ur.Fields != nil {
   466  		objectMap["fields"] = ur.Fields
   467  	}
   468  	return json.Marshal(objectMap)
   469  }
   470  
   471  // Word an object representing a recognized word.
   472  type Word struct {
   473  	// BoundingBox - Bounding box of a recognized word.
   474  	BoundingBox *[]int32 `json:"boundingBox,omitempty"`
   475  	// Text - The text content of the word.
   476  	Text *string `json:"text,omitempty"`
   477  	// Confidence - Qualitative confidence measure. Possible values include: 'High', 'Low'
   478  	Confidence TextRecognitionResultConfidenceClass `json:"confidence,omitempty"`
   479  }
   480  

View as plain text