from fastapi import APIRouter, Depends, UploadFile, File from app.core.response import success_response, error_response, ResponseModel from app.core.ocr_service import ocr_service from app.api.deps import get_current_user from app.models.user import UserDB router = APIRouter() @router.post("/pickup_code", response_model=ResponseModel) async def recognize_pickup_code( file: UploadFile = File(...), current_user: UserDB = Depends(get_current_user) ): """识别收件码图片""" try: # 检查文件类型 if not file.content_type.startswith('image/'): return error_response(code=400, message="只能上传图片文件") # 读取文件内容 content = await file.read() # 调用OCR服务识别图片 result = await ocr_service.recognize_pickup_code(content) if not result.get("stations") or not any(station["pickup_codes"] for station in result["stations"]): return error_response(code=400, message="未能识别到取件码") return success_response(data=result) except Exception as e: return error_response(code=500, message=f"识别失败: {str(e)}")