后端新增《蚕茧识别V2》模块
This commit is contained in:
@@ -6,7 +6,11 @@ from config.app import F8_SERVER_USER_ID
|
||||
from models.BaseResponse import BaseResponse
|
||||
from models.F8ImageRequest import F8ImageRequest
|
||||
from models.F8ImageRequestV2 import F8ImageRequestV2
|
||||
from service.vision import process_ticket_image, process_license_image
|
||||
from service.vision import (
|
||||
process_ticket_image,
|
||||
process_license_image,
|
||||
process_silkworm_cocoon_image,
|
||||
)
|
||||
from utils import MyUtils
|
||||
|
||||
publicRouter = APIRouter()
|
||||
@@ -55,3 +59,22 @@ async def cocoon_license(data: F8ImageRequest):
|
||||
return BaseResponse(data=data)
|
||||
except Exception as e:
|
||||
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
|
||||
|
||||
|
||||
@publicRouter.post("/recognize-silkworm-cocoon")
|
||||
async def recognize_silkworm_cocoon(data: F8ImageRequest):
|
||||
input_data = data.image
|
||||
if "," in input_data:
|
||||
input_data = input_data.split(",")[1]
|
||||
try:
|
||||
img_bytes = base64.b64decode(input_data)
|
||||
json_data = await MyUtils.async_task(
|
||||
process_silkworm_cocoon_image,
|
||||
img_bytes,
|
||||
f"{data.title}.jpg",
|
||||
data.title,
|
||||
F8_SERVER_USER_ID,
|
||||
)
|
||||
return BaseResponse(data=json_data)
|
||||
except Exception as e:
|
||||
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
|
||||
|
||||
@@ -7,7 +7,11 @@ from config.security import get_user_id_from_token
|
||||
from llm.ticketLLM import *
|
||||
from models.BaseResponse import BaseResponse
|
||||
from models.ImageRequest import ImageRequest
|
||||
from service.vision import process_ticket_image, process_license_image
|
||||
from service.vision import (
|
||||
process_ticket_image,
|
||||
process_license_image,
|
||||
process_silkworm_cocoon_image,
|
||||
)
|
||||
from utils import MyUtils
|
||||
|
||||
visionRouter = APIRouter()
|
||||
@@ -25,6 +29,8 @@ def cocoonTicket(data: ImageRequest, user_id: UUID = Depends(get_user_id_from_to
|
||||
return BaseResponse(status=False, message="unknown error", data=None)
|
||||
|
||||
|
||||
# ————————————————————————————————仪评指标联识别任务————————————————————————————————————————————————
|
||||
# 一代
|
||||
@visionRouter.post("/createTicketImageTask")
|
||||
async def createTicketImageTask(
|
||||
file: UploadFile = File(...),
|
||||
@@ -44,13 +50,7 @@ async def createTicketImageTask(
|
||||
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
|
||||
|
||||
|
||||
@visionRouter.get("/getTicketImageList")
|
||||
def cocoonTicket(user_id: UUID = Depends(get_user_id_from_token)):
|
||||
if not user_id:
|
||||
return {"error": "userId is required"}
|
||||
return BaseResponse(data=pg.get_ticket_image_list(user_id))
|
||||
|
||||
|
||||
# 二代
|
||||
@visionRouter.post("/createTicketImageTaskV2")
|
||||
async def createTicketImageTask(
|
||||
file: UploadFile = File(...),
|
||||
@@ -70,24 +70,15 @@ async def createTicketImageTask(
|
||||
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
|
||||
|
||||
|
||||
@visionRouter.post("/createTicketImageTaskV2")
|
||||
async def createTicketImageTask(
|
||||
file: UploadFile = File(...),
|
||||
projectName: str = Form(...),
|
||||
user_id: UUID = Depends(get_user_id_from_token),
|
||||
):
|
||||
# 获取仪评指标联识别任务列表
|
||||
@visionRouter.get("/getTicketImageList")
|
||||
def cocoonTicket(user_id: UUID = Depends(get_user_id_from_token)):
|
||||
if not user_id:
|
||||
return {"error": "userId is required"}
|
||||
try:
|
||||
contents = await file.read()
|
||||
json_data = await MyUtils.async_task(
|
||||
process_ticket_image, 2, True, contents, file.filename, projectName, user_id
|
||||
)
|
||||
return BaseResponse(data=json_data)
|
||||
except Exception as e:
|
||||
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
|
||||
return BaseResponse(data=pg.get_ticket_image_list(user_id))
|
||||
|
||||
|
||||
# ————————————————————————————————证件照片识别任务————————————————————————————————————————————————
|
||||
@visionRouter.post("/createLicenseImageTask")
|
||||
async def createLicenseImageTask(
|
||||
file: UploadFile = File(...),
|
||||
@@ -107,7 +98,7 @@ async def createLicenseImageTask(
|
||||
|
||||
|
||||
@visionRouter.get("/getLicenseImageList")
|
||||
def cocoonLicense(
|
||||
def getLicenseImageList(
|
||||
user_id: UUID = Depends(get_user_id_from_token),
|
||||
page: int = Query(1, ge=1),
|
||||
page_size: int = Query(10, ge=1, le=100),
|
||||
@@ -121,3 +112,40 @@ def cocoonLicense(
|
||||
"items": items,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
# ————————————————————————————————蚕茧识别任务————————————————————————————————————————————————
|
||||
@visionRouter.post("/createSilkwormCocoonAnalysisTask")
|
||||
async def createSilkwormCocoonAnalysisTask(
|
||||
file: UploadFile = File(...),
|
||||
projectName: str = Form(...),
|
||||
user_id: UUID = Depends(get_user_id_from_token),
|
||||
):
|
||||
if not user_id:
|
||||
return {"error": "userId is required"}
|
||||
try:
|
||||
contents = await file.read()
|
||||
await MyUtils.async_task(
|
||||
process_silkworm_cocoon_image, contents, file.filename, projectName, user_id
|
||||
)
|
||||
return BaseResponse(data=None)
|
||||
except Exception as e:
|
||||
return BaseResponse(status=False, message=f"解析失败: {str(e)}", data=None)
|
||||
|
||||
|
||||
@visionRouter.get("/getSilkwormCocoonAnalysisTasks")
|
||||
def getSilkwormCocoonAnalysisTasks(
|
||||
user_id: UUID = Depends(get_user_id_from_token),
|
||||
name: str = "",
|
||||
page: int = Query(1, ge=1),
|
||||
page_size: int = Query(10, ge=1, le=100),
|
||||
):
|
||||
if not user_id:
|
||||
return {"error": "userId is required"}
|
||||
total, items = pg.get_sca_image_list(user_id, name, page=page, page_size=page_size)
|
||||
return BaseResponse(
|
||||
data={
|
||||
"total": total,
|
||||
"items": items,
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user