irandoc_ocr / src /routers /parse_router.py
Alizmoh98's picture
deploy-app
e8e33af
raw
history blame
856 Bytes
from fastapi import APIRouter, Depends, status, UploadFile, File
from ..storage.schemas import BaseBox
from ..storage.models import BoxesData
from ..storage.database import get_session, engine
from sqlalchemy.ext.asyncio import AsyncSession
from PIL import Image
import io
from ..processing.parse_img import parse_img
router = APIRouter()
@router.post("/", response_model=list[BaseBox], status_code=status.HTTP_201_CREATED)
async def parse_image(image_file: UploadFile = File(...), session: AsyncSession = Depends(get_session)):
contents = await image_file.read()
img = Image.open(io.BytesIO(contents))
boxes_data, _ = parse_img(img)
for box_data in boxes_data:
db_box = BoxesData(**box_data.model_dump())
session.add(db_box)
await session.commit()
return boxes_data