""" OCR 相关的 Pydantic Schema """ from __future__ import annotations from datetime import datetime from typing import Optional from pydantic import BaseModel, Field class OCRBlockSchema(BaseModel): """OCR 识别的文本块""" text: str = Field(..., description="文本块内容") bbox: Optional[list[float]] = Field(None, description="边界框 [x1, y1, x2, y2]") confidence: float = Field(..., description="置信度 (0-1)") class OCRResultSchema(BaseModel): """OCR 识别结果""" text: str = Field(..., description="识别全文") blocks: list[OCRBlockSchema] = Field(default_factory=list, description="文本块列表") confidence: float = Field(..., description="平均置信度 (0-1)") provider: str = Field(..., description="使用的 OCR 提供商") class ImageUploadResponse(BaseModel): """图片上传响应""" id: int file_path: str status: str created_at: datetime model_config = {"from_attributes": True} class ImageOCRResponse(BaseModel): """图片 OCR 结果响应""" id: int file_path: str ocr_text: Optional[str] = None confidence: Optional[float] = None provider: Optional[str] = None status: str error_message: Optional[str] = None created_at: datetime model_config = {"from_attributes": True}