1
0
mirror of https://github.com/sui-feng-cb/AzurLaneAutoScript1.git synced 2026-08-19 12:54:48 +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

@@ -4,18 +4,31 @@ from module.base.decorator import cached_property
class OcrModel:
@cached_property
def _OCR(self):
from module.exception import ScriptError
from module.webui.setting import State
backend = State.deploy_config.OcrBackend
if backend == 'onnx':
from module.ocr.al_ocr import AlOcrOnnx as _OCR
else:
if backend == 'mxnet':
from module.ocr.al_ocr import AlOcr as _OCR
elif backend == 'onnx':
try:
import onnxruntime
except ImportError:
from module.logger import logger
logger.warning('ONNX Runtime is not available, fallback to MXNet')
from module.ocr.al_ocr import AlOcr as _OCR
else:
from module.ocr.onnx_ocr import OnnxOcr as _OCR
else:
raise ScriptError(f'Unsupported OCR backend: {backend}')
return _OCR
def load(self):
_ = self._OCR
@cached_property
def azur_lane(self):
# Folder: ./bin/cnocr_models/azur_lane
# Size: 3.25MB (MXNet) / 3.34MB (ONNX)
# Size: 3.25MB (MXNet) / 3.26MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 15
# Validation accuracy: 99.43%
@@ -28,7 +41,7 @@ class OcrModel:
@cached_property
def azur_lane_jp(self):
# Folder: ./bin/cnocr_models/azur_lane_jp
# Size: 3.25MB (MXNet) / 3.34MB (ONNX)
# Size: 3.25MB (MXNet) / 3.26MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 20
# Validation accuracy: 99.01%
@@ -41,7 +54,7 @@ class OcrModel:
@cached_property
def cnocr(self):
# Folder: ./bin/cnocr_models/cnocr
# Size: 9.51MB (MXNet) / 9.75MB (ONNX)
# Size: 9.52MB (MXNet) / 9.52MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 39
# Validation accuracy: 99.04%
@@ -54,16 +67,17 @@ class OcrModel:
@cached_property
def jp(self):
# Folder: ./bin/cnocr_models/jp
# Size: 6.36MB (ONNX)
# Size: 6.21MB (MXNet) / 6.22MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 125
# _num_classes: 3052
return self._OCR(model_name='densenet-lite-gru', model_epoch=125,
root='./bin/cnocr_models/jp', name='jp')
@cached_property
def tw(self):
# Folder: ./bin/cnocr_models/tw
# Size: 8.43MB (MXNet) / 8.64MB (ONNX)
# Size: 8.43MB (MXNet) / 8.44MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 63
# Validation accuracy: 99.24%