- app/models/image_models.py: BBox, QuadrupleItem, ImageExtract{Request,Response}
- app/services/image_service.py: download → base64 LLM → bbox clamp → crop upload
- app/routers/image.py: POST /image/extract handler
- tests: 4 service + 3 router tests, 7/7 passing
29 lines
478 B
Python
29 lines
478 B
Python
from pydantic import BaseModel
|
|
|
|
|
|
class BBox(BaseModel):
|
|
x: int
|
|
y: int
|
|
w: int
|
|
h: int
|
|
|
|
|
|
class QuadrupleItem(BaseModel):
|
|
subject: str
|
|
predicate: str
|
|
object: str
|
|
qualifier: str | None = None
|
|
bbox: BBox
|
|
cropped_image_path: str
|
|
|
|
|
|
class ImageExtractRequest(BaseModel):
|
|
file_path: str
|
|
task_id: int
|
|
model: str | None = None
|
|
prompt_template: str | None = None
|
|
|
|
|
|
class ImageExtractResponse(BaseModel):
|
|
items: list[QuadrupleItem]
|