Files

110 lines
3.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import os
import psutil
from plugin_i18n import Translator
tr = Translator(__file__, "i18n.csv")
# 模块配置路径
MODELS_CONFIGS = "/models/configs.txt"
# 保存语言字典
LangDict = {}
# 动态获取模型库列表
def _getlanguageList():
global LangDict
"""configs.txt 格式示例:
简体中文(V4)
ch_PP-OCRv4_det_infer.onnx
ch_ppocr_mobile_v2.0_cls_infer.onnx
rec_ch_PP-OCRv4_infer.onnx
dict_chinese.txt
"""
optionsList = []
configsPath = os.path.dirname(os.path.abspath(__file__)) + MODELS_CONFIGS
try:
with open(configsPath, "r", encoding="utf-8") as file:
content = file.read()
parts = content.split("\n\n")
for part in parts:
items = part.split("\n")
if len(items) == 5:
title, det, cls, rec, keys = items
LangDict[title] = {
"det": det,
"cls": cls,
"rec": rec,
"keys": keys,
}
optionsList.append([title, title])
return optionsList
except FileNotFoundError:
print("[Error] RapidOCR配置文件configs不存在请检查文件路径是否正确。", configsPath)
except IOError:
print("[Error] RapidOCR配置文件configs无法打开或读取。")
return []
_LanguageList = _getlanguageList()
# 获取最佳线程数
def _getThreads():
try:
phyCore = psutil.cpu_count(logical=False) # 物理核心数
lgiCore = psutil.cpu_count(logical=True) # 逻辑核心数
if (
not isinstance(phyCore, int)
or not isinstance(lgiCore, int)
or lgiCore < phyCore
):
raise ValueError("核心数计算异常")
# 物理核数=逻辑核数,返回逻辑核数
if phyCore * 2 == lgiCore or phyCore == lgiCore:
return lgiCore
# 大小核处理器,返回大核线程数
big = lgiCore - phyCore
return big * 2
except Exception as e:
print("[Warning] 无法获取CPU核心数", e)
return 4
_threads = _getThreads()
globalOptions = {
"title": tr("RapidOCR本地"),
"type": "group",
"numThread": {
"title": tr("线程数"),
"default": _threads,
"min": 1,
"isInt": True,
},
}
localOptions = {
"title": tr("文字识别RapidOCR"),
"type": "group",
"language": {
"title": tr("语言/模型库"),
"optionsList": _LanguageList,
},
"angle": {
"title": tr("纠正文本方向"),
"default": False,
"toolTip": tr("启用方向分类,识别倾斜或倒置的文本。可能降低识别速度。"),
},
"maxSideLen": {
"title": tr("限制图像边长"),
"optionsList": [
[1024, "1024 " + tr("(默认)")],
[2048, "2048"],
[4096, "4096"],
[999999, tr("无限制")],
],
"toolTip": tr("将边长大于该值的图片进行压缩,可以提高识别速度。可能降低识别精度。"),
},
}