#[allow(unused_imports)]
use crate::prelude::*;
#[allow(unused_imports)]
use serde::{Deserialize, Serialize};
#[allow(unused_imports)]
use std::collections::HashMap;
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct BoundingBox {
pub h: f64,
pub label: String,
pub w: f64,
pub x: f64,
pub y: f64,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct BoundingBoxOutputWithLabels {
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<Option<Image>>,
pub results: BoundingBoxes,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct BoundingBoxes {
pub bboxes: Vec<BoundingBox>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct HTTPValidationError {
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<Vec<Option<ValidationError>>>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Image {
#[serde(skip_serializing_if = "Option::is_none")]
pub content_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_data: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_size: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub height: Option<i64>,
pub url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub width: Option<i64>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct ImageInput {
pub image_url: String,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct ImageWithTextInput {
pub image_url: String,
pub text_input: String,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct ImageWithUserCoordinatesInput {
pub image_url: String,
pub region: Region,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct OCRBoundingBox {
pub quad_boxes: Vec<OCRBoundingBoxSingle>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct OCRBoundingBoxOutputWithLabels {
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<Option<Image>>,
pub results: OCRBoundingBox,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct OCRBoundingBoxSingle {
pub h: f64,
pub label: String,
pub w: f64,
pub x: f64,
pub y: f64,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Polygon {
pub label: String,
pub points: Vec<HashMap<String, serde_json::Value>>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct PolygonOutput {
pub polygons: Vec<Polygon>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct PolygonOutputWithLabels {
#[serde(skip_serializing_if = "Option::is_none")]
pub image: Option<Option<Image>>,
pub results: PolygonOutput,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Region {
pub x1: i64,
pub x2: i64,
pub y1: i64,
pub y2: i64,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TextOutput {
pub results: String,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct ValidationError {
pub loc: Vec<serde_json::Value>,
pub msg: String,
#[serde(rename = "type")]
pub ty: String,
}
pub fn ocr(params: ImageInput) -> FalRequest<ImageInput, TextOutput> {
FalRequest::new("fal-ai/florence-2-large/ocr", params)
}