1
0
mirror of https://github.com/sui-feng-cb/AzurLaneAutoScript1.git synced 2026-08-19 20:55:05 +08:00

Feat: adopt upstream standalone ONNX OCR backend

Adopt the standalone OnnxOcr from upstream PR #5893 (381bb8d05,
by Horizon101011), which vendors cnocr's pure-Python pipeline so
the ONNX path loads no mxnet at runtime. Backend is selected via
deploy config, keeping onnxruntime a standard dependency and onnx
the default.

Co-authored-by: Horizon101011 <43370844+Horizon101011@users.noreply.github.com>
This commit is contained in:
positnuec
2026-08-16 21:56:43 +08:00
parent b1100369f7
commit 239f252881
17 changed files with 338 additions and 166 deletions

View File

@@ -185,7 +185,6 @@ class ModelProxyFactory:
def start_ocr_server(port=22268):
import zerorpc
import zmq
from module.ocr.al_ocr import AlOcr
from module.ocr.models import OcrModel
class OCRServer(OcrModel):
@@ -194,42 +193,42 @@ def start_ocr_server(port=22268):
def ocr(self, lang, img_fp):
img_fp = pickle.loads(img_fp)
cnocr: AlOcr = self.__getattribute__(lang)
return cnocr.ocr(img_fp)
model = self.__getattribute__(lang)
return model.ocr(img_fp)
def ocr_for_single_line(self, lang, img_fp):
img_fp = pickle.loads(img_fp)
cnocr: AlOcr = self.__getattribute__(lang)
return cnocr.ocr_for_single_line(img_fp)
model = self.__getattribute__(lang)
return model.ocr_for_single_line(img_fp)
def ocr_for_single_lines(self, lang, img_list):
img_list = [pickle.loads(img_fp) for img_fp in img_list]
cnocr: AlOcr = self.__getattribute__(lang)
return cnocr.ocr_for_single_lines(img_list)
model = self.__getattribute__(lang)
return model.ocr_for_single_lines(img_list)
def set_cand_alphabet(self, lang, cand_alphabet):
cnocr: AlOcr = self.__getattribute__(lang)
return cnocr.set_cand_alphabet(cand_alphabet)
model = self.__getattribute__(lang)
return model.set_cand_alphabet(cand_alphabet)
def atomic_ocr(self, lang, img_fp, cand_alphabet):
img_fp = pickle.loads(img_fp)
cnocr: AlOcr = self.__getattribute__(lang)
return cnocr.atomic_ocr(img_fp, cand_alphabet)
model = self.__getattribute__(lang)
return model.atomic_ocr(img_fp, cand_alphabet)
def atomic_ocr_for_single_line(self, lang, img_fp, cand_alphabet):
img_fp = pickle.loads(img_fp)
cnocr: AlOcr = self.__getattribute__(lang)
return cnocr.atomic_ocr_for_single_line(img_fp, cand_alphabet)
model = self.__getattribute__(lang)
return model.atomic_ocr_for_single_line(img_fp, cand_alphabet)
def atomic_ocr_for_single_lines(self, lang, img_list, cand_alphabet):
img_list = [pickle.loads(img_fp) for img_fp in img_list]
cnocr: AlOcr = self.__getattribute__(lang)
return cnocr.atomic_ocr_for_single_lines(img_list, cand_alphabet)
model = self.__getattribute__(lang)
return model.atomic_ocr_for_single_lines(img_list, cand_alphabet)
def debug(self, lang, img_list):
img_list = [pickle.loads(img_fp) for img_fp in img_list]
cnocr: AlOcr = self.__getattribute__(lang)
return cnocr.debug(img_list)
model = self.__getattribute__(lang)
return model.debug(img_list)
server = zerorpc.Server(OCRServer())
try: