deliveryman-api/app/api/endpoints/ocr.py
2025-02-21 16:49:51 +08:00

32 lines
1.2 KiB
Python

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)}")