32 lines
1.2 KiB
Python
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)}") |