use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct FileRecognizeRequest {
pub file: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RecognizeResponse<T> {
pub data: T,
#[serde(skip_serializing_if = "Option::is_none")]
pub confidence: Option<f64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ResumeInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gender: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub birth_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub education: Option<Vec<EducationInfo>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub work_experience: Option<Vec<WorkExperienceInfo>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub skills: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct EducationInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub school: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub major: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub degree: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_time: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct WorkExperienceInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub company: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub position: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct IdCardInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gender: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nation: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub birth_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authority: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub valid_period: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct DrivingLicenseInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gender: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nationality: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub birth_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub license_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vehicle_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub valid_period: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct BankCardInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub bank_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub card_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub valid_period: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct BusinessLicenseInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub credit_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub legal_person: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub registered_capital: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub establishment_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub business_term: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub business_scope: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct VatInvoiceInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub buyer_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub buyer_tax_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seller_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub seller_tax_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_amount: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_tax: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_amount_with_tax: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ContractInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub party_a: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub party_b: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub amount: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sign_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub effective_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub other_fields: Option<serde_json::Value>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct BusinessCardInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub position: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub company: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mobile: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub website: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct OcrResult {
pub text: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub text_detection: Option<Vec<TextDetection>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TextDetection {
pub text: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub bounding_box: Option<BoundingBox>,
#[serde(skip_serializing_if = "Option::is_none")]
pub confidence: Option<f64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct BoundingBox {
pub x: i32,
pub y: i32,
pub width: i32,
pub height: i32,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SpeechRecognizeRequest {
pub speech: SpeechFile,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sample_rate: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SpeechFile {
#[serde(skip_serializing_if = "Option::is_none")]
pub file_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SpeechRecognizeResult {
pub recognition_text: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub confidence: Option<f64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct StreamSpeechRequest {
pub stream: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sample_rate: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub language: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LanguageDetectRequest {
pub text: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LanguageDetectResult {
pub language: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub confidence: Option<f64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TranslateRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub source_language: Option<String>,
pub target_language: String,
pub text: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TranslateResult {
pub translated_text: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub detected_language: Option<String>,
}