xref: /aosp_15_r20/external/googleapis/google/cloud/documentai/v1/evaluation.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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