zai_rs/model/ocr/
request.rs1use serde::Serialize;
2use validator::Validate;
3
4#[derive(Debug, Clone, Serialize)]
6pub enum OcrToolType {
7 #[serde(rename = "hand_write")]
8 HandWrite,
9}
10
11#[derive(Debug, Clone, Serialize)]
13pub enum OcrLanguageType {
14 #[serde(rename = "AUTO")]
16 Auto,
17
18 #[serde(rename = "CHN_ENG")]
20 ChnEng,
21
22 #[serde(rename = "ENG")]
24 Eng,
25
26 #[serde(rename = "JAP")]
28 Jap,
29
30 #[serde(rename = "KOR")]
32 Kor,
33
34 #[serde(rename = "FRE")]
36 Fre,
37
38 #[serde(rename = "SPA")]
40 Spa,
41
42 #[serde(rename = "POR")]
44 Por,
45
46 #[serde(rename = "GER")]
48 Ger,
49
50 #[serde(rename = "ITA")]
52 Ita,
53
54 #[serde(rename = "RUS")]
56 Rus,
57
58 #[serde(rename = "DAN")]
60 Dan,
61
62 #[serde(rename = "DUT")]
64 Dut,
65
66 #[serde(rename = "MAL")]
68 Mal,
69
70 #[serde(rename = "SWE")]
72 Swe,
73
74 #[serde(rename = "IND")]
76 Ind,
77
78 #[serde(rename = "POL")]
80 Pol,
81
82 #[serde(rename = "ROM")]
84 Rom,
85
86 #[serde(rename = "TUR")]
88 Tur,
89
90 #[serde(rename = "GRE")]
92 Gre,
93
94 #[serde(rename = "HUN")]
96 Hun,
97
98 #[serde(rename = "THA")]
100 Tha,
101
102 #[serde(rename = "VIE")]
104 Vie,
105
106 #[serde(rename = "ARA")]
108 Ara,
109
110 #[serde(rename = "HIN")]
112 Hin,
113}
114
115#[derive(Debug, Clone, Serialize, Validate)]
117pub struct OcrBody {
118 #[serde(skip_serializing_if = "Option::is_none")]
120 pub tool_type: Option<OcrToolType>,
121
122 #[serde(skip_serializing_if = "Option::is_none")]
124 pub language_type: Option<OcrLanguageType>,
125
126 #[serde(skip_serializing_if = "Option::is_none")]
128 pub probability: Option<bool>,
129
130 #[serde(skip_serializing_if = "Option::is_none")]
132 pub request_id: Option<String>,
133
134 #[serde(skip_serializing_if = "Option::is_none")]
136 #[validate(length(min = 6, max = 128))]
137 pub user_id: Option<String>,
138}
139
140impl Default for OcrBody {
141 fn default() -> Self {
142 Self::new()
143 }
144}
145
146impl OcrBody {
147 pub fn new() -> Self {
148 Self {
149 tool_type: None,
150 language_type: None,
151 probability: None,
152 request_id: None,
153 user_id: None,
154 }
155 }
156
157 pub fn with_tool_type(mut self, tool_type: OcrToolType) -> Self {
158 self.tool_type = Some(tool_type);
159 self
160 }
161
162 pub fn with_language_type(mut self, language_type: OcrLanguageType) -> Self {
163 self.language_type = Some(language_type);
164 self
165 }
166
167 pub fn with_probability(mut self, probability: bool) -> Self {
168 self.probability = Some(probability);
169 self
170 }
171
172 pub fn with_request_id(mut self, request_id: impl Into<String>) -> Self {
173 self.request_id = Some(request_id.into());
174 self
175 }
176
177 pub fn with_user_id(mut self, user_id: impl Into<String>) -> Self {
178 self.user_id = Some(user_id.into());
179 self
180 }
181}