1
0
mirror of https://github.com/sui-feng-cb/AzurLaneAutoScript1.git synced 2026-08-13 03:11:47 +08:00

Opt: use ONNX model converted from MXNet for faster OCR with MXNet fallback

This commit is contained in:
positnuec
2026-08-11 03:12:42 +08:00
parent 51f11c541c
commit 11d6de3138
27 changed files with 809 additions and 23 deletions

View File

@@ -2,64 +2,76 @@ from module.base.decorator import cached_property
class OcrModel:
@cached_property
def _OCR(self):
from module.webui.setting import State
backend = State.deploy_config.OcrBackend
if backend == 'onnx':
from module.ocr.al_ocr import AlOcrOnnx as _OCR
else:
from module.ocr.al_ocr import AlOcr as _OCR
return _OCR
@cached_property
def azur_lane(self):
# Folder: ./bin/cnocr_models/azur_lane
# Size: 3.25MB
# Size: 3.25MB (MXNet) / 3.34MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 15
# Validation accuracy: 99.43%
# Font: Impact, AgencyFB-Regular, MStiffHeiHK-UltraBold
# Charset: 0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ:/- (Letter 'O' and <space> is not included)
# _num_classes: 39
from module.ocr.al_ocr import AlOcr
return AlOcr(model_name='densenet-lite-gru', model_epoch=15, root='./bin/cnocr_models/azur_lane',
name='azur_lane')
return self._OCR(model_name='densenet-lite-gru', model_epoch=15,
root='./bin/cnocr_models/azur_lane', name='azur_lane')
@cached_property
def azur_lane_jp(self):
# Folder: ./bin/cnocr_models/azur_lane_jp
# Size: 3.25MB
# Size: 3.25MB (MXNet) / 3.34MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 20
# Validation accuracy: 99.01%
# Font: Impact, VibeMO Compressed Pro Thin, Folk R, Source Han Serif JP
# Charset: 0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ:/- (Letter 'O' and <space> is not included)
# _num_classes: 39
from module.ocr.al_ocr import AlOcr
return AlOcr(model_name='densenet-lite-gru', model_epoch=20, root='./bin/cnocr_models/azur_lane_jp',
name='azur_lane_jp')
return self._OCR(model_name='densenet-lite-gru', model_epoch=20,
root='./bin/cnocr_models/azur_lane_jp', name='azur_lane_jp')
@cached_property
def cnocr(self):
# Folder: ./bin/cnocr_models/cnocr
# Size: 9.51MB
# Size: 9.51MB (MXNet) / 9.75MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 39
# Validation accuracy: 99.04%
# Font: Various
# Charset: Number, English character, Chinese character, symbols, <space>
# _num_classes: 6426
from module.ocr.al_ocr import AlOcr
return AlOcr(model_name='densenet-lite-gru', model_epoch=39, root='./bin/cnocr_models/cnocr', name='cnocr')
return self._OCR(model_name='densenet-lite-gru', model_epoch=39,
root='./bin/cnocr_models/cnocr', name='cnocr')
@cached_property
def jp(self):
from module.ocr.al_ocr import AlOcr
return AlOcr(model_name='densenet-lite-gru', model_epoch=125, root='./bin/cnocr_models/jp', name='jp')
# Folder: ./bin/cnocr_models/jp
# Size: 6.36MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 125
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
# Size: 8.43MB (MXNet) / 8.64MB (ONNX)
# Model: densenet-lite-gru
# Epoch: 63
# Validation accuracy: 99.24%
# Font: Various, 6 kinds
# Charset: Numbers, Upper english characters, Chinese traditional characters
# _num_classes: 5322
from module.ocr.al_ocr import AlOcr
return AlOcr(model_name='densenet-lite-gru', model_epoch=63, root='./bin/cnocr_models/tw', name='tw')
return self._OCR(model_name='densenet-lite-gru', model_epoch=63,
root='./bin/cnocr_models/tw', name='tw')
OCR_MODEL = OcrModel()