Commits (3)
*.swp
.vscode/
__pycache__/
backup/
fastapi_service.py
logs/
nohup.out
qcloud/
tmp/
venv/
credential/credential.json
credential/oauth2.json
{ {
"logging": { "logging": {
"log_level": "INFO", "log_level": "INFO",
"log_dir": "./logs", "log_dir": "./logs",
"filename_template": "%Y%m%d.log" "filename_template": "%Y%m%d.log"
} }
} }
{ {
"oss": { "oss": {
"<qcloud oss bucket name>": { "<qcloud oss bucket name>": {
"oss-program": { "oss-program": {
"secret_id": "<qcloud oss secret_id>", "secret_id": "<qcloud oss secret_id>",
"secret_key": "<qcloud oss secret_key>", "secret_key": "<qcloud oss secret_key>",
"description": "object-storage-all" "description": "object-storage-all"
} }
} }
}, },
"ocr": { "ocr": {
"ocr-program": { "ocr-program": {
"secret_id": "<qcloud ocr secret_id>", "secret_id": "<qcloud ocr secret_id>",
"secret_key": "<qcloud ocr secret_key>", "secret_key": "<qcloud ocr secret_key>",
"description": "文字识别 (ocr)" "description": "文字识别 (ocr)"
} }
}, },
"asr": { "asr": {
"asr-program": { "asr-program": {
"app_id": "<qcloud ASR app id>", "app_id": "<qcloud ASR app id>",
"secret_id": "<qcloud ASR secret_id>", "secret_id": "<qcloud ASR secret_id>",
"secret_key": "<qcloud ASR secret_key>", "secret_key": "<qcloud ASR secret_key>",
"description": "语音识别 (asr)" "description": "语音识别 (asr)"
} }
}, },
"paddle": { "paddle": {
"aliyun_ecs": { "aliyun_ecs": {
"base_url": "https://xxx.xxx.xxx.xxx:xxxx", "base_url": "https://xxx.xxx.xxx.xxx:xxxx",
"client_id": "<OP fastapi client_id>", "client_id": "<OP fastapi client_id>",
"client_secret": "<OP fastapi client_secret>" "client_secret": "<OP fastapi client_secret>"
}, },
"ctyun_ecs": { "ctyun_ecs": {
"base_url": "https://xxx.xxx.xxx.xxx:xxxx", "base_url": "https://xxx.xxx.xxx.xxx:xxxx",
"client_id": "<OP fastapi client_id>", "client_id": "<OP fastapi client_id>",
"client_secret": "<OP fastapi client_secret>" "client_secret": "<OP fastapi client_secret>"
} }
}, },
"whisper": { "whisper": {
"aliyun_ecs": { "aliyun_ecs": {
"base_url": "https://xxx.xxx.xxx.xxx:xxxx", "base_url": "https://xxx.xxx.xxx.xxx:xxxx",
"client_id": "<OP fastapi client_id>", "client_id": "<OP fastapi client_id>",
"client_secret": "<OP fastapi client_secret>" "client_secret": "<OP fastapi client_secret>"
}, },
"ctyun_ecs": { "ctyun_ecs": {
"base_url": "https://xxx.xxx.xxx.xxx:xxxx", "base_url": "https://xxx.xxx.xxx.xxx:xxxx",
"client_id": "<OP fastapi client_id>", "client_id": "<OP fastapi client_id>",
"client_secret": "<OP fastapi client_secret>" "client_secret": "<OP fastapi client_secret>"
} }
}, },
"gen-ai": { "gen-ai": {
"aliyun":{ "aliyun":{
"api_key": "<Gen AI api_key>", "api_key": "<Gen AI api_key>",
"description": "Tongyi" "description": "Tongyi"
} }
} }
} }
...@@ -3,6 +3,9 @@ from fastapi import FastAPI, Query ...@@ -3,6 +3,9 @@ from fastapi import FastAPI, Query
from pydantic import BaseModel from pydantic import BaseModel
import qcloud_cos_service import qcloud_cos_service
import qcloud_ocr_service import qcloud_ocr_service
import qcloud_asr_service
import local_paddle_ocr_service
import local_whisper_asr_service
import tongyi_genai_service import tongyi_genai_service
from fastapi.responses import StreamingResponse from fastapi.responses import StreamingResponse
...@@ -87,12 +90,26 @@ async def get_download_url(file_download_req: qcloud_cos_service.file_download_r ...@@ -87,12 +90,26 @@ async def get_download_url(file_download_req: qcloud_cos_service.file_download_r
@app.post("/get_detected_text/") @app.post("/get_detected_text/")
async def get_detected_text(ocr_req: qcloud_ocr_service.ocr_req_basemodel): async def get_detected_text(ocr_req: qcloud_ocr_service.ocr_req_basemodel):
if ocr_req.tool == 'Q': if ocr_req.ocr_tool == 'Q':
# Call Qcloud API # Call Qcloud API
return qcloud_ocr_service.get_qcloud_detected_text(ocr_req) return qcloud_ocr_service.get_detected_text(ocr_req)
elif ocr_req.tool == 'LP': elif ocr_req.ocr_tool == 'LP':
# Call Local PaddleOCR API # Call Local PaddleOCR API
return qcloud_ocr_service.get_paddleocr_detected_text(ocr_req) return local_paddle_ocr_service.get_detected_text(ocr_req)
# ------------------------------------------------
# Call ASR Service Process
# ------------------------------------------------
@app.post("/get_detected_asr_text/")
async def get_detected_text(asr_req: local_whisper_asr_service.asr_req_basemodel):
if asr_req.asr_tool == 'W':
# Call Local Whisper ASR API
return local_whisper_asr_service.get_detected_text(asr_req)
elif asr_req.asr_tool == 'Q':
# Call Qcloud ASR API
return qcloud_asr_service.get_detected_text(asr_req)
# ------------------------------------------------ # ------------------------------------------------
......
...@@ -203,5 +203,3 @@ def get_detected_text(ocr_req: ocr_req_basemodel) -> tuple: ...@@ -203,5 +203,3 @@ def get_detected_text(ocr_req: ocr_req_basemodel) -> tuple:
return ocr_res return ocr_res
...@@ -203,5 +203,3 @@ def get_detected_text(asr_req: asr_req_basemodel) -> tuple: ...@@ -203,5 +203,3 @@ def get_detected_text(asr_req: asr_req_basemodel) -> tuple:
return asr_res return asr_res
...@@ -172,4 +172,3 @@ def get_detected_text(asr_req: asr_req_basemodel) -> tuple: ...@@ -172,4 +172,3 @@ def get_detected_text(asr_req: asr_req_basemodel) -> tuple:
asr_resp.result_message = str(e) asr_resp.result_message = str(e)
return asr_resp return asr_resp
...@@ -278,4 +278,3 @@ def get_download_url(file_download_req: file_download_req_basemodel): ...@@ -278,4 +278,3 @@ def get_download_url(file_download_req: file_download_req_basemodel):
return file_download_res return file_download_res
# Import FastAPI Libs
from fastapi import FastAPI
from pydantic import BaseModel
import qcloud_cos_service
import qcloud_ocr_service
# ------------------------------------------------
# Define FastAPI
# ------------------------------------------------
app = FastAPI()
# ------------------------------------------------
# Call File Upload Service Process
# ------------------------------------------------
@app.post("/upload/")
async def upload(file_uplaod_req: qcloud_cos_service.file_upload_req_basemodel):
return qcloud_cos_service.upload(file_uplaod_req)
# ------------------------------------------------
# Call File Download URL Service Process
# ------------------------------------------------
@app.post("/get_download_url/")
async def get_download_url(file_download_req: qcloud_cos_service.file_download_req_basemodel):
return qcloud_cos_service.get_download_url(file_download_req)
# ------------------------------------------------
# Call OCR Service Process
# ------------------------------------------------
@app.post("/get_detected_text/")
async def get_detected_text(ocr_req: qcloud_ocr_service.ocr_req_basemodel):
return qcloud_ocr_service.get_detected_text(ocr_req)
\ No newline at end of file
...@@ -335,3 +335,4 @@ async def get_answer(uuid: str): ...@@ -335,3 +335,4 @@ async def get_answer(uuid: str):
result_message = str(e) result_message = str(e)
lm.log(logging.ERROR, 'Exception', result_message) lm.log(logging.ERROR, 'Exception', result_message)
yield f"data: Exception - {result_message}\n\n" yield f"data: Exception - {result_message}\n\n"