1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.documentai.v1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto"; 21*d5c09012SAndroid Build Coastguard Worker 22*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.DocumentAI.V1"; 23*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/documentai/apiv1/documentaipb;documentaipb"; 24*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 25*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "DocumentAiEvaluation"; 26*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.documentai.v1"; 27*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\DocumentAI\\V1"; 28*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::DocumentAI::V1"; 29*d5c09012SAndroid Build Coastguard Worker 30*d5c09012SAndroid Build Coastguard Worker// Gives a short summary of an evaluation, and links to the evaluation itself. 31*d5c09012SAndroid Build Coastguard Workermessage EvaluationReference { 32*d5c09012SAndroid Build Coastguard Worker // The resource name of the Long Running Operation for the evaluation. 33*d5c09012SAndroid Build Coastguard Worker string operation = 1; 34*d5c09012SAndroid Build Coastguard Worker 35*d5c09012SAndroid Build Coastguard Worker // The resource name of the evaluation. 36*d5c09012SAndroid Build Coastguard Worker string evaluation = 2 [(google.api.resource_reference) = { 37*d5c09012SAndroid Build Coastguard Worker type: "documentai.googleapis.com/Evaluation" 38*d5c09012SAndroid Build Coastguard Worker }]; 39*d5c09012SAndroid Build Coastguard Worker 40*d5c09012SAndroid Build Coastguard Worker // An aggregate of the statistics for the evaluation with fuzzy matching on. 41*d5c09012SAndroid Build Coastguard Worker Evaluation.Metrics aggregate_metrics = 4; 42*d5c09012SAndroid Build Coastguard Worker 43*d5c09012SAndroid Build Coastguard Worker // An aggregate of the statistics for the evaluation with fuzzy matching off. 44*d5c09012SAndroid Build Coastguard Worker Evaluation.Metrics aggregate_metrics_exact = 5; 45*d5c09012SAndroid Build Coastguard Worker} 46*d5c09012SAndroid Build Coastguard Worker 47*d5c09012SAndroid Build Coastguard Worker// An evaluation of a ProcessorVersion's performance. 48*d5c09012SAndroid Build Coastguard Workermessage Evaluation { 49*d5c09012SAndroid Build Coastguard Worker option (google.api.resource) = { 50*d5c09012SAndroid Build Coastguard Worker type: "documentai.googleapis.com/Evaluation" 51*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/processors/{processor}/processorVersions/{processor_version}/evaluations/{evaluation}" 52*d5c09012SAndroid Build Coastguard Worker }; 53*d5c09012SAndroid Build Coastguard Worker 54*d5c09012SAndroid Build Coastguard Worker // Evaluation counters for the documents that were used. 55*d5c09012SAndroid Build Coastguard Worker message Counters { 56*d5c09012SAndroid Build Coastguard Worker // How many documents were sent for evaluation. 57*d5c09012SAndroid Build Coastguard Worker int32 input_documents_count = 1; 58*d5c09012SAndroid Build Coastguard Worker 59*d5c09012SAndroid Build Coastguard Worker // How many documents were not included in the evaluation as they didn't 60*d5c09012SAndroid Build Coastguard Worker // pass validation. 61*d5c09012SAndroid Build Coastguard Worker int32 invalid_documents_count = 2; 62*d5c09012SAndroid Build Coastguard Worker 63*d5c09012SAndroid Build Coastguard Worker // How many documents were not included in the evaluation as Document AI 64*d5c09012SAndroid Build Coastguard Worker // failed to process them. 65*d5c09012SAndroid Build Coastguard Worker int32 failed_documents_count = 3; 66*d5c09012SAndroid Build Coastguard Worker 67*d5c09012SAndroid Build Coastguard Worker // How many documents were used in the evaluation. 68*d5c09012SAndroid Build Coastguard Worker int32 evaluated_documents_count = 4; 69*d5c09012SAndroid Build Coastguard Worker } 70*d5c09012SAndroid Build Coastguard Worker 71*d5c09012SAndroid Build Coastguard Worker // Evaluation metrics, either in aggregate or about a specific entity. 72*d5c09012SAndroid Build Coastguard Worker message Metrics { 73*d5c09012SAndroid Build Coastguard Worker // The calculated precision. 74*d5c09012SAndroid Build Coastguard Worker float precision = 1; 75*d5c09012SAndroid Build Coastguard Worker 76*d5c09012SAndroid Build Coastguard Worker // The calculated recall. 77*d5c09012SAndroid Build Coastguard Worker float recall = 2; 78*d5c09012SAndroid Build Coastguard Worker 79*d5c09012SAndroid Build Coastguard Worker // The calculated f1 score. 80*d5c09012SAndroid Build Coastguard Worker float f1_score = 3; 81*d5c09012SAndroid Build Coastguard Worker 82*d5c09012SAndroid Build Coastguard Worker // The amount of occurrences in predicted documents. 83*d5c09012SAndroid Build Coastguard Worker int32 predicted_occurrences_count = 4; 84*d5c09012SAndroid Build Coastguard Worker 85*d5c09012SAndroid Build Coastguard Worker // The amount of occurrences in ground truth documents. 86*d5c09012SAndroid Build Coastguard Worker int32 ground_truth_occurrences_count = 5; 87*d5c09012SAndroid Build Coastguard Worker 88*d5c09012SAndroid Build Coastguard Worker // The amount of documents with a predicted occurrence. 89*d5c09012SAndroid Build Coastguard Worker int32 predicted_document_count = 10; 90*d5c09012SAndroid Build Coastguard Worker 91*d5c09012SAndroid Build Coastguard Worker // The amount of documents with a ground truth occurrence. 92*d5c09012SAndroid Build Coastguard Worker int32 ground_truth_document_count = 11; 93*d5c09012SAndroid Build Coastguard Worker 94*d5c09012SAndroid Build Coastguard Worker // The amount of true positives. 95*d5c09012SAndroid Build Coastguard Worker int32 true_positives_count = 6; 96*d5c09012SAndroid Build Coastguard Worker 97*d5c09012SAndroid Build Coastguard Worker // The amount of false positives. 98*d5c09012SAndroid Build Coastguard Worker int32 false_positives_count = 7; 99*d5c09012SAndroid Build Coastguard Worker 100*d5c09012SAndroid Build Coastguard Worker // The amount of false negatives. 101*d5c09012SAndroid Build Coastguard Worker int32 false_negatives_count = 8; 102*d5c09012SAndroid Build Coastguard Worker 103*d5c09012SAndroid Build Coastguard Worker // The amount of documents that had an occurrence of this label. 104*d5c09012SAndroid Build Coastguard Worker int32 total_documents_count = 9; 105*d5c09012SAndroid Build Coastguard Worker } 106*d5c09012SAndroid Build Coastguard Worker 107*d5c09012SAndroid Build Coastguard Worker // Evaluations metrics, at a specific confidence level. 108*d5c09012SAndroid Build Coastguard Worker message ConfidenceLevelMetrics { 109*d5c09012SAndroid Build Coastguard Worker // The confidence level. 110*d5c09012SAndroid Build Coastguard Worker float confidence_level = 1; 111*d5c09012SAndroid Build Coastguard Worker 112*d5c09012SAndroid Build Coastguard Worker // The metrics at the specific confidence level. 113*d5c09012SAndroid Build Coastguard Worker Metrics metrics = 2; 114*d5c09012SAndroid Build Coastguard Worker } 115*d5c09012SAndroid Build Coastguard Worker 116*d5c09012SAndroid Build Coastguard Worker // Metrics across multiple confidence levels. 117*d5c09012SAndroid Build Coastguard Worker message MultiConfidenceMetrics { 118*d5c09012SAndroid Build Coastguard Worker // A type that determines how metrics should be interpreted. 119*d5c09012SAndroid Build Coastguard Worker enum MetricsType { 120*d5c09012SAndroid Build Coastguard Worker // The metrics type is unspecified. By default, metrics without a 121*d5c09012SAndroid Build Coastguard Worker // particular specification are for leaf entity types (i.e., top-level 122*d5c09012SAndroid Build Coastguard Worker // entity types without child types, or child types which are not 123*d5c09012SAndroid Build Coastguard Worker // parent types themselves). 124*d5c09012SAndroid Build Coastguard Worker METRICS_TYPE_UNSPECIFIED = 0; 125*d5c09012SAndroid Build Coastguard Worker 126*d5c09012SAndroid Build Coastguard Worker // Indicates whether metrics for this particular label type represent an 127*d5c09012SAndroid Build Coastguard Worker // aggregate of metrics for other types instead of being based on actual 128*d5c09012SAndroid Build Coastguard Worker // TP/FP/FN values for the label type. Metrics for parent (i.e., non-leaf) 129*d5c09012SAndroid Build Coastguard Worker // entity types are an aggregate of metrics for their children. 130*d5c09012SAndroid Build Coastguard Worker AGGREGATE = 1; 131*d5c09012SAndroid Build Coastguard Worker } 132*d5c09012SAndroid Build Coastguard Worker 133*d5c09012SAndroid Build Coastguard Worker // Metrics across confidence levels with fuzzy matching enabled. 134*d5c09012SAndroid Build Coastguard Worker repeated ConfidenceLevelMetrics confidence_level_metrics = 1; 135*d5c09012SAndroid Build Coastguard Worker 136*d5c09012SAndroid Build Coastguard Worker // Metrics across confidence levels with only exact matching. 137*d5c09012SAndroid Build Coastguard Worker repeated ConfidenceLevelMetrics confidence_level_metrics_exact = 4; 138*d5c09012SAndroid Build Coastguard Worker 139*d5c09012SAndroid Build Coastguard Worker // The calculated area under the precision recall curve (AUPRC), computed by 140*d5c09012SAndroid Build Coastguard Worker // integrating over all confidence thresholds. 141*d5c09012SAndroid Build Coastguard Worker float auprc = 2; 142*d5c09012SAndroid Build Coastguard Worker 143*d5c09012SAndroid Build Coastguard Worker // The Estimated Calibration Error (ECE) of the confidence of the predicted 144*d5c09012SAndroid Build Coastguard Worker // entities. 145*d5c09012SAndroid Build Coastguard Worker float estimated_calibration_error = 3; 146*d5c09012SAndroid Build Coastguard Worker 147*d5c09012SAndroid Build Coastguard Worker // The AUPRC for metrics with fuzzy matching disabled, i.e., exact matching 148*d5c09012SAndroid Build Coastguard Worker // only. 149*d5c09012SAndroid Build Coastguard Worker float auprc_exact = 5; 150*d5c09012SAndroid Build Coastguard Worker 151*d5c09012SAndroid Build Coastguard Worker // The ECE for the predicted entities with fuzzy matching disabled, i.e., 152*d5c09012SAndroid Build Coastguard Worker // exact matching only. 153*d5c09012SAndroid Build Coastguard Worker float estimated_calibration_error_exact = 6; 154*d5c09012SAndroid Build Coastguard Worker 155*d5c09012SAndroid Build Coastguard Worker // The metrics type for the label. 156*d5c09012SAndroid Build Coastguard Worker MetricsType metrics_type = 7; 157*d5c09012SAndroid Build Coastguard Worker } 158*d5c09012SAndroid Build Coastguard Worker 159*d5c09012SAndroid Build Coastguard Worker // The resource name of the evaluation. 160*d5c09012SAndroid Build Coastguard Worker // Format: 161*d5c09012SAndroid Build Coastguard Worker // `projects/{project}/locations/{location}/processors/{processor}/processorVersions/{processor_version}/evaluations/{evaluation}` 162*d5c09012SAndroid Build Coastguard Worker string name = 1; 163*d5c09012SAndroid Build Coastguard Worker 164*d5c09012SAndroid Build Coastguard Worker // The time that the evaluation was created. 165*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp create_time = 2; 166*d5c09012SAndroid Build Coastguard Worker 167*d5c09012SAndroid Build Coastguard Worker // Counters for the documents used in the evaluation. 168*d5c09012SAndroid Build Coastguard Worker Counters document_counters = 5; 169*d5c09012SAndroid Build Coastguard Worker 170*d5c09012SAndroid Build Coastguard Worker // Metrics for all the entities in aggregate. 171*d5c09012SAndroid Build Coastguard Worker MultiConfidenceMetrics all_entities_metrics = 3; 172*d5c09012SAndroid Build Coastguard Worker 173*d5c09012SAndroid Build Coastguard Worker // Metrics across confidence levels, for different entities. 174*d5c09012SAndroid Build Coastguard Worker map<string, MultiConfidenceMetrics> entity_metrics = 4; 175*d5c09012SAndroid Build Coastguard Worker 176*d5c09012SAndroid Build Coastguard Worker // The KMS key name used for encryption. 177*d5c09012SAndroid Build Coastguard Worker string kms_key_name = 6; 178*d5c09012SAndroid Build Coastguard Worker 179*d5c09012SAndroid Build Coastguard Worker // The KMS key version with which data is encrypted. 180*d5c09012SAndroid Build Coastguard Worker string kms_key_version_name = 7; 181*d5c09012SAndroid Build Coastguard Worker} 182