zai_rs/model/ocr/
response.rs1use serde::{Deserialize, Serialize};
2use validator::Validate;
3
4#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
6pub struct OcrResponse {
7 #[serde(skip_serializing_if = "Option::is_none")]
9 pub task_id: Option<String>,
10
11 #[serde(skip_serializing_if = "Option::is_none")]
13 pub message: Option<String>,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub status: Option<String>,
18
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub words_result_num: Option<i32>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub words_result: Option<Vec<WordsResultItem>>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
29pub struct WordsResultItem {
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub location: Option<Location>,
33
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub words: Option<String>,
37
38 #[serde(skip_serializing_if = "Option::is_none")]
40 pub probability: Option<Probability>,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
44pub struct Location {
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub left: Option<i32>,
48
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub top: Option<i32>,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub width: Option<i32>,
56
57 #[serde(skip_serializing_if = "Option::is_none")]
59 pub height: Option<i32>,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize, Validate)]
63pub struct Probability {
64 #[serde(skip_serializing_if = "Option::is_none")]
66 pub average: Option<f32>,
67
68 #[serde(skip_serializing_if = "Option::is_none")]
70 pub variance: Option<f32>,
71
72 #[serde(skip_serializing_if = "Option::is_none")]
74 pub min: Option<f32>,
75}