改进 响应
This commit is contained in:
parent
22c3795f9f
commit
4e5e80e6b4
36
main.py
36
main.py
@ -111,7 +111,8 @@ async def ocr_image(lang_1: Optional[str] = None, lang_2: Optional[str] = None,
|
||||
success=False,
|
||||
message="OCR 处理失败",
|
||||
data=None,
|
||||
error=error
|
||||
error=error,
|
||||
full_text=None,
|
||||
)
|
||||
|
||||
try:
|
||||
@ -122,7 +123,8 @@ async def ocr_image(lang_1: Optional[str] = None, lang_2: Optional[str] = None,
|
||||
success=False,
|
||||
message="无法读取图片文件",
|
||||
data=None,
|
||||
error=error
|
||||
error=error,
|
||||
full_text=None,
|
||||
)
|
||||
|
||||
# 调用通用的 OCR 处理函数
|
||||
@ -138,14 +140,13 @@ async def ocr_image(lang_1: Optional[str] = None, lang_2: Optional[str] = None,
|
||||
)
|
||||
|
||||
ocr_data_list.append(r)
|
||||
# 返回 OCR 处理结果
|
||||
pprint.pprint(ocr_data)
|
||||
|
||||
return OCRResponse(
|
||||
success=True,
|
||||
data=ocr_data_list,
|
||||
error=None,
|
||||
message=None,
|
||||
full_text=full_text,
|
||||
)
|
||||
|
||||
|
||||
@ -155,11 +156,11 @@ async def ocr_image_from_url(lang_1: Optional[str] = None, lang_2: Optional[str]
|
||||
# 使用 aiohttp 进行异步 HTTP 请求
|
||||
async with aiohttp.ClientSession() as session:
|
||||
try:
|
||||
async with session.get(url) as response:
|
||||
if response.status != 200:
|
||||
raise Exception(f"无法获取图片, HTTP 状态码: {response.status}")
|
||||
async with session.get(url) as http_response:
|
||||
if http_response.status != 200:
|
||||
raise Exception(f"无法获取图片, HTTP 状态码: {http_response.status}")
|
||||
# 读取图片数据
|
||||
image_data = await response.read()
|
||||
image_data = await http_response.read()
|
||||
|
||||
except Exception as e:
|
||||
return OCRResponse(
|
||||
@ -167,6 +168,7 @@ async def ocr_image_from_url(lang_1: Optional[str] = None, lang_2: Optional[str]
|
||||
message="无法从 URL 获取图片",
|
||||
data=None,
|
||||
error=str(e),
|
||||
full_text=None,
|
||||
)
|
||||
|
||||
# 获取 OCR 读取器并捕获可能的错误
|
||||
@ -178,16 +180,32 @@ async def ocr_image_from_url(lang_1: Optional[str] = None, lang_2: Optional[str]
|
||||
message="OCR 处理失败",
|
||||
data=None,
|
||||
error=error,
|
||||
full_text=None,
|
||||
)
|
||||
|
||||
# 调用通用的 OCR 处理函数
|
||||
ocr_data, status_code = await process_ocr(reader, image_data)
|
||||
full_text = ""
|
||||
ocr_data_list = list()
|
||||
for entry in ocr_data["data"]:
|
||||
full_text += entry["text"]
|
||||
r = response.OCRData(
|
||||
text=entry["text"],
|
||||
bbox=entry["bbox"],
|
||||
confidence=entry["confidence"]
|
||||
)
|
||||
|
||||
ocr_data_list.append(r)
|
||||
|
||||
return OCRResponse(
|
||||
success=True,
|
||||
data=ocr_data,
|
||||
data=ocr_data_list,
|
||||
error=None,
|
||||
message=None,
|
||||
full_text=full_text,
|
||||
)
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||
|
@ -13,3 +13,4 @@ class OCRResponse(BaseModel):
|
||||
error: Optional[str]
|
||||
message: Optional[str]
|
||||
data: Optional[List[OCRData]] = []
|
||||
full_text: Optional[str]
|
||||
|
Loading…
Reference in New Issue
Block a user