This commit is contained in:
恍兮惚兮 2024-12-31 20:25:13 +08:00
parent 9788f5065f
commit a2e7cca929
27 changed files with 117 additions and 124 deletions

View File

@ -39,15 +39,14 @@ DECLARE_API bool check_language_valid(wchar_t *language)
return false; return false;
} }
} }
DECLARE_API void getlanguagelist(void (*cb)(LPCWSTR)) DECLARE_API void getlanguagelist(void (*cb)(LPCWSTR, LPCWSTR))
{ {
OcrEngine ocrEngine = OcrEngine::TryCreateFromUserProfileLanguages(); OcrEngine ocrEngine = OcrEngine::TryCreateFromUserProfileLanguages();
auto languages = ocrEngine.AvailableRecognizerLanguages(); auto languages = ocrEngine.AvailableRecognizerLanguages();
for (auto &&language : languages) for (auto &&language : languages)
{ {
auto lang = language.LanguageTag(); cb(language.LanguageTag().c_str(), language.DisplayName().c_str());
cb(lang.c_str());
} }
} }
DECLARE_API void OCR(void *ptr, size_t size, wchar_t *lang, wchar_t *space, void (*cb)(int, int, int, int, LPCWSTR)) DECLARE_API void OCR(void *ptr, size_t size, wchar_t *lang, wchar_t *space, void (*cb)(int, int, int, int, LPCWSTR))

View File

@ -91,7 +91,7 @@ def getlangtgt():
def getlanguagespace(lang=None): def getlanguagespace(lang=None):
if lang is None: if lang is None:
lang = getlanguse() lang = getlanguse()
return "" if (lang in ("zh", "ja", "cht")) else " " return "" if (lang.split("-")[0] in ("zh", "ja", "cht")) else " "
def findenclose(text, tag): def findenclose(text, tag):

View File

@ -1,7 +1,7 @@
import base64 import base64
from myutils.config import globalconfig from myutils.config import globalconfig
from ocrengines.baseocrclass import baseocr from ocrengines.baseocrclass import baseocr
import random import random, zhconv
from hashlib import md5 from hashlib import md5
@ -27,7 +27,14 @@ class OCR(baseocr):
try: try:
js = response.json() js = response.json()
text = [_["dst"] for _ in js["data"]["content"]] text = [
(
zhconv.convert(_["dst"], "zh-tw")
if ("cht" == self.tgtlang_1)
else _["dst"]
)
for _ in js["data"]["content"]
]
box = [ box = [
( (
l["points"][0]["x"], l["points"][0]["x"],
@ -87,7 +94,14 @@ class OCR(baseocr):
try: try:
js = response.json() js = response.json()
text = [_["src"] for _ in js["data"]["content"]] text = [
(
zhconv.convert(_["dst"], "zh-tw")
if ("cht" == self.tgtlang_1)
else _["dst"]
)
for _ in js["data"]["content"]
]
box = [ box = [
( (
l["points"][0]["x"], l["points"][0]["x"],
@ -108,24 +122,25 @@ class OCR(baseocr):
@property @property
def srclangx(self): def srclangx(self):
return { return {
"cht": "zh",
"es": "spa", "es": "spa",
"ko": "kor", "ko": "kor",
"fr": "fra", "fr": "fra",
"ja": "jp", "ja": "jp",
"cht": "cht",
"vi": "vie", "vi": "vie",
"uk": "ukr", "uk": "ukr",
"ar": "ara", "ar": "ara",
"sv": "swe",
}.get(self.srclang_1, self.srclang_1) }.get(self.srclang_1, self.srclang_1)
@property @property
def tgtlangx(self): def tgtlangx(self):
return { return {
"cht": "zh",
"es": "spa", "es": "spa",
"ko": "kor", "ko": "kor",
"fr": "fra", "fr": "fra",
"ja": "jp", "ja": "jp",
"cht": "cht",
"vi": "vie", "vi": "vie",
"uk": "ukr", "uk": "ukr",
"ar": "ara", "ar": "ara",
@ -134,6 +149,7 @@ class OCR(baseocr):
def langmap(self): def langmap(self):
return { return {
"auto": "auto_detect", "auto": "auto_detect",
"cht": "CHN_ENG",
"zh": "CHN_ENG", "zh": "CHN_ENG",
"en": "ENG", "en": "ENG",
"ja": "JAP", "ja": "JAP",
@ -141,6 +157,17 @@ class OCR(baseocr):
"ko": "KOR", "ko": "KOR",
"fr": "FRE", "fr": "FRE",
"es": "SPA", "es": "SPA",
"pt": "POR",
"de": "GER",
"it": "ITA",
"ru": "RUS",
"nl": "DUT",
"sv": "SWE",
"pl": "POL",
"tr": "TUR",
"th": "THA",
"vi": "VIE",
"ar": "ARA",
} }
def initocr(self): def initocr(self):

View File

@ -13,7 +13,12 @@ class OCR(baseocr):
"es": "spa", "es": "spa",
"fr": "fre", "fr": "fre",
"ru": "rus", "ru": "rus",
"cht": "cht", "ar": "ara",
"de": "ger",
"tr": "tur",
"sv": "swe",
"es": "spa",
"pt": "por",
} }
def ocr(self, imagebinary): def ocr(self, imagebinary):

View File

@ -1,6 +1,7 @@
from hashlib import sha1 from hashlib import sha1
import time, random, hmac, base64, uuid, hashlib, json import time, random, hmac, base64, uuid, hashlib, json
from ocrengines.baseocrclass import baseocr from ocrengines.baseocrclass import baseocr
import zhconv
class OCR(baseocr): class OCR(baseocr):
@ -18,9 +19,8 @@ class OCR(baseocr):
except: except:
return "ap-beijing" return "ap-beijing"
@property def langmap(self):
def langocr(self): # https://cloud.tencent.com/document/product/866/33526
s = self.srclang_1
return { return {
"zh": "zh", "zh": "zh",
"cht": "zh", "cht": "zh",
@ -38,18 +38,19 @@ class OCR(baseocr):
"hu": "hun", "hu": "hun",
"th": "tha", "th": "tha",
"ar": "ara", "ar": "ara",
}.get(s, "auto") }
def langmap(self): @property
# https://cloud.tencent.com/document/product/551/17232 def langocr(self):
return {"cht": "zh-TW"} s = self.srclang_1
return self.langmap().get(s, "auto")
def ocr_fy(self, imagebinary): def ocr_fy(self, imagebinary):
self.checkempty(["SecretId", "SecretKey"]) self.checkempty(["SecretId", "SecretKey"])
encodestr = str(base64.b64encode(imagebinary), "utf-8") encodestr = str(base64.b64encode(imagebinary), "utf-8")
req_para = { req_para = {
"Source": self.srclang, "Source": self.langocr,
"Target": self.tgtlang, "Target": self.tgtlang,
"ProjectId": int(self.config["ProjectId"]), "ProjectId": int(self.config["ProjectId"]),
"Data": encodestr, "Data": encodestr,
@ -140,27 +141,17 @@ class OCR(baseocr):
for _ in r.json()["Response"]["ImageRecord"]["Value"] for _ in r.json()["Response"]["ImageRecord"]["Value"]
] ]
texts = [ texts = [
_["TargetText"] for _ in r.json()["Response"]["ImageRecord"]["Value"] (
zhconv.convert(_["TargetText"], "zh-tw")
if ("cht" == self.tgtlang_1)
else _["TargetText"]
)
for _ in r.json()["Response"]["ImageRecord"]["Value"]
] ]
return {"box": boxs, "text": texts, "isocrtranslate": True} return {"box": boxs, "text": texts, "isocrtranslate": True}
except: except:
raise Exception(r) raise Exception(r)
def langmap(self):
# https://cloud.tencent.com/document/product/866/33526
return {
"ja": "jap",
"ko": "kor",
"en": "auto",
"ru": "rus",
"es": "spa",
"fr": "fre",
"vi": "vie",
"it": "ita",
"ar": "ara",
"th": "tha",
}
def ocr_ocr(self, imagebinary): def ocr_ocr(self, imagebinary):
self.checkempty(["SecretId", "SecretKey"]) self.checkempty(["SecretId", "SecretKey"])

View File

@ -1,6 +1,6 @@
import gobject import gobject
import winrtutils import winrtutils
from myutils.config import _TR, static_data, getlang_inner2show from myutils.config import _TR, static_data
from myutils.utils import dynamiclink from myutils.utils import dynamiclink
from ocrengines.baseocrclass import baseocr from ocrengines.baseocrclass import baseocr
from qtsymbols import * from qtsymbols import *
@ -8,36 +8,13 @@ from gui.dynalang import LPushButton, LLabel
from myutils.utils import getlanguagespace from myutils.utils import getlanguagespace
def initsupports():
_allsupport = winrtutils.getlanguagelist()
supportmap = {}
for lang in [_["code"] for _ in static_data["lang_list_all"]] + [
"zh-Hans",
"zh-Hant",
]:
if lang == "zh" or lang == "cht":
continue
for s in _allsupport:
if s.startswith(lang) or lang.startswith(s):
supportmap[lang] = s
break
if "zh-Hans" in supportmap:
v = supportmap.pop("zh-Hans")
supportmap["zh"] = v
if "zh-Hant" in supportmap:
v = supportmap.pop("zh-Hant")
supportmap["cht"] = v
return supportmap
def question(): def question():
dialog = QWidget() dialog = QWidget()
formLayout = QHBoxLayout() formLayout = QHBoxLayout()
formLayout.setContentsMargins(0, 0, 0, 0) formLayout.setContentsMargins(0, 0, 0, 0)
dialog.setLayout(formLayout) dialog.setLayout(formLayout)
_allsupport = initsupports() supportlang = QLabel()
supportlang = LLabel() supportlang.setText(", ".join([_[1] for _ in winrtutils.getlanguagelist()]))
supportlang.setText("_,_".join([getlang_inner2show(f) for f in _allsupport]))
btndownload = LPushButton("添加语言包") btndownload = LPushButton("添加语言包")
btndownload.clicked.connect( btndownload.clicked.connect(
lambda: gobject.baseobject.openlink( lambda: gobject.baseobject.openlink(
@ -53,43 +30,29 @@ def question():
class OCR(baseocr): class OCR(baseocr):
def langmap(self): def langmap(self):
return {"cht": "cht"} return {"zh": "zh-Hans", "cht": "zh-Hant"}
def initocr(self):
self.supportmap = initsupports()
def ocr(self, imagebinary): def ocr(self, imagebinary):
if len(self.supportmap) == 0: supports = [_[0] for _ in winrtutils.getlanguagelist()]
if len(supports) == 0:
raise Exception(_TR("无可用语言")) raise Exception(_TR("无可用语言"))
if self.srclang == "auto": if self.srclang == "auto":
if len(self.supportmap) == 1: if len(supports) == 1:
uselang = list(self.supportmap.values())[0] uselang = supports[0]
else: else:
self.raise_cant_be_auto_lang() self.raise_cant_be_auto_lang()
else: else:
if self.srclang not in self.supportmap: if not winrtutils.check_language_valid(self.srclang):
_allsupport = initsupports()
idx = [_["code"] for _ in static_data["lang_list_all"]].index(
self.srclang
)
raise Exception( raise Exception(
_TR("系统未安装") _TR("系统未安装当前语言的OCR模型")
+ ' "'
+ _TR([_["zh"] for _ in static_data["lang_list_all"]][idx])
+ '" '
+ _TR("的OCR模型")
+ "\n" + "\n"
+ _TR("当前支持的语言") + _TR("当前支持的语言")
+ ": " + ": "
+ ", ".join([_TR(getlang_inner2show(f)) for f in _allsupport]) + ", ".join([_[1] for _ in winrtutils.getlanguagelist()])
) )
else:
uselang = self.srclang uselang = self.srclang
ret = winrtutils.OCR_f( ret = winrtutils.OCR_f(imagebinary, uselang, getlanguagespace(uselang))
imagebinary, self.supportmap[uselang], getlanguagespace(uselang)
)
boxs = [_[1:] for _ in ret] boxs = [_[1:] for _ in ret]
texts = [_[0] for _ in ret] texts = [_[0] for _ in ret]
return {"box": boxs, "text": texts} return {"box": boxs, "text": texts}

View File

@ -60,10 +60,18 @@ def getlanguagelist():
if not winrtutilsdll: if not winrtutilsdll:
return [] return []
ret = [] ret = []
_getlanguagelist(CFUNCTYPE(None, c_wchar_p)(ret.append)) _getlanguagelist(
CFUNCTYPE(None, c_wchar_p, c_wchar_p)(lambda t, d: ret.append((t, d)))
)
return ret return ret
def check_language_valid(l):
if not winrtutilsdll:
return False
return _check_language_valid(l)
def winrt_capture_window(hwnd): def winrt_capture_window(hwnd):
if not winrtutilsdll: if not winrtutilsdll:
return return

View File

@ -52,7 +52,6 @@
"民安ともえ": "الأمن العام", "民安ともえ": "الأمن العام",
"光标": "المؤشر", "光标": "المؤشر",
"清空": "إفراغ", "清空": "إفراغ",
"的OCR模型": "نموذج التعرف الضوئي على الحروف",
"泰语": "التايلاندية", "泰语": "التايلاندية",
"特殊码": "رمز خاص", "特殊码": "رمز خاص",
"语法加亮": "تسليط الضوء على بناء الجملة", "语法加亮": "تسليط الضوء على بناء الجملة",
@ -766,5 +765,6 @@
"年度总结": "ملخص سنوي", "年度总结": "ملخص سنوي",
"取词翻译": "اختيار الترجمة", "取词翻译": "اختيار الترجمة",
"取词查词": "كلمة البحث", "取词查词": "كلمة البحث",
"音频编码": "ترميز الصوت" "音频编码": "ترميز الصوت",
"系统未安装当前语言的OCR模型": "التعرف الضوئي على الحروف نموذج اللغة الحالية غير مثبتة على النظام"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "找不到重要元件:", "找不到重要组件:": "找不到重要元件:",
"请重新下载并关闭杀毒软件后重试": "請重新下載並關閉防毒軟體後重試", "请重新下载并关闭杀毒软件后重试": "請重新下載並關閉防毒軟體後重試",
"系统未安装": "系統未安裝", "系统未安装": "系統未安裝",
"的OCR模型": "的 OCR 模型",
"有道TTS": "有道 TTS", "有道TTS": "有道 TTS",
"不支持的键位": "不支援的鍵位", "不支持的键位": "不支援的鍵位",
"快捷键冲突": "快速鍵衝突", "快捷键冲突": "快速鍵衝突",
@ -766,5 +765,6 @@
"年度总结": "年度總結", "年度总结": "年度總結",
"取词翻译": "取詞翻譯", "取词翻译": "取詞翻譯",
"取词查词": "取詞查詞", "取词查词": "取詞查詞",
"音频编码": "音訊編碼" "音频编码": "音訊編碼",
"系统未安装当前语言的OCR模型": "系統未安裝當前語言的OCR模型"
} }

View File

@ -59,7 +59,6 @@
"打开目录": "Otevřít adresář", "打开目录": "Otevřít adresář",
"字体样式": "Styl písma", "字体样式": "Styl písma",
"搜索文本过短!": "Vyhledávací text je příliš krátký!", "搜索文本过短!": "Vyhledávací text je příliš krátký!",
"的OCR模型": "Model OCR",
"小学馆": "Sál základní školy", "小学馆": "Sál základní školy",
"光标": "kurzor", "光标": "kurzor",
"项目网站": "Webové stránky projektu", "项目网站": "Webové stránky projektu",
@ -766,5 +765,6 @@
"年度总结": "Roční shrnutí", "年度总结": "Roční shrnutí",
"取词翻译": "Překlad výběru slova", "取词翻译": "Překlad výběru slova",
"取词查词": "Načíst a vyhledávat slova", "取词查词": "Načíst a vyhledávat slova",
"音频编码": "Kódování zvuku" "音频编码": "Kódování zvuku",
"系统未安装当前语言的OCR模型": "OCR model pro aktuální jazyk není nainstalován v systému"
} }

View File

@ -59,7 +59,6 @@
"打开目录": "Verzeichnis öffnen", "打开目录": "Verzeichnis öffnen",
"字体样式": "Schriftart", "字体样式": "Schriftart",
"搜索文本过短!": "Der Suchtext ist zu kurz!", "搜索文本过短!": "Der Suchtext ist zu kurz!",
"的OCR模型": "Das OCR-Modell",
"小学馆": "Grundschulsaal", "小学馆": "Grundschulsaal",
"光标": "Cursor", "光标": "Cursor",
"项目网站": "Website des Projekts", "项目网站": "Website des Projekts",
@ -766,5 +765,6 @@
"年度总结": "Jahreszusammenfassung", "年度总结": "Jahreszusammenfassung",
"取词翻译": "Übersetzung der Wortauswahl", "取词翻译": "Übersetzung der Wortauswahl",
"取词查词": "Wörter abrufen und suchen", "取词查词": "Wörter abrufen und suchen",
"音频编码": "Audio-Codierung" "音频编码": "Audio-Codierung",
"系统未安装当前语言的OCR模型": "Das OCR-Modell für die aktuelle Sprache ist nicht im System installiert"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "Important Component Not Found:", "找不到重要组件:": "Important Component Not Found:",
"请重新下载并关闭杀毒软件后重试": "Please re-download and try again with antivirus disabled", "请重新下载并关闭杀毒软件后重试": "Please re-download and try again with antivirus disabled",
"系统未安装": "System Not Installed", "系统未安装": "System Not Installed",
"的OCR模型": "OCR Model",
"有道TTS": "Youdao TTS", "有道TTS": "Youdao TTS",
"不支持的键位": "Unsupported Key Position", "不支持的键位": "Unsupported Key Position",
"快捷键冲突": "Hotkey Conflict", "快捷键冲突": "Hotkey Conflict",
@ -766,5 +765,6 @@
"年度总结": "Annual Summary", "年度总结": "Annual Summary",
"取词翻译": "Word selection translation", "取词翻译": "Word selection translation",
"取词查词": "Retrieve and search for words", "取词查词": "Retrieve and search for words",
"音频编码": "audio coding" "音频编码": "audio coding",
"系统未安装当前语言的OCR模型": "The OCR model for the current language is not installed in the system"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "No se pueden encontrar componentes importantes:", "找不到重要组件:": "No se pueden encontrar componentes importantes:",
"请重新下载并关闭杀毒软件后重试": "Por favor, vuelva a descargar y cierre el software antivirus y vuelva a intentarlo.", "请重新下载并关闭杀毒软件后重试": "Por favor, vuelva a descargar y cierre el software antivirus y vuelva a intentarlo.",
"系统未安装": "El sistema no está instalado", "系统未安装": "El sistema no está instalado",
"的OCR模型": "Modelo OCR",
"有道TTS": "Youdao TTS", "有道TTS": "Youdao TTS",
"不支持的键位": "Teclas no soportadas", "不支持的键位": "Teclas no soportadas",
"快捷键冲突": "Conflicto de teclas de acceso rápido", "快捷键冲突": "Conflicto de teclas de acceso rápido",
@ -766,5 +765,6 @@
"年度总结": "Resumen Anual", "年度总结": "Resumen Anual",
"取词翻译": "Traducción de palabras", "取词翻译": "Traducción de palabras",
"取词查词": "Buscar palabras", "取词查词": "Buscar palabras",
"音频编码": "Codificación de audio" "音频编码": "Codificación de audio",
"系统未安装当前语言的OCR模型": "El sistema no instala el modelo OCR del idioma actual"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "Aucun composant important trouvé:", "找不到重要组件:": "Aucun composant important trouvé:",
"请重新下载并关闭杀毒软件后重试": "Veuillez réessayer après le téléchargement et la fermeture du logiciel antivirus", "请重新下载并关闭杀毒软件后重试": "Veuillez réessayer après le téléchargement et la fermeture du logiciel antivirus",
"系统未安装": "Le système n'est pas installé", "系统未安装": "Le système n'est pas installé",
"的OCR模型": "Le modèle ocr",
"有道TTS": "Avec tts", "有道TTS": "Avec tts",
"不支持的键位": "Clés non supportées", "不支持的键位": "Clés non supportées",
"快捷键冲突": "Conflit de touches de raccourci", "快捷键冲突": "Conflit de touches de raccourci",
@ -766,5 +765,6 @@
"年度总结": "Résumé annuel", "年度总结": "Résumé annuel",
"取词翻译": "Traduction des mots", "取词翻译": "Traduction des mots",
"取词查词": "Recherche de mots", "取词查词": "Recherche de mots",
"音频编码": "Codage audio" "音频编码": "Codage audio",
"系统未安装当前语言的OCR模型": "Le système n'a pas installé le modèle OCR pour la langue actuelle"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "Componente importante non trovato:", "找不到重要组件:": "Componente importante non trovato:",
"请重新下载并关闭杀毒软件后重试": "Si prega di scaricare e chiudere nuovamente il software antivirus e riprovare", "请重新下载并关闭杀毒软件后重试": "Si prega di scaricare e chiudere nuovamente il software antivirus e riprovare",
"系统未安装": "Sistema non installato", "系统未安装": "Sistema non installato",
"的OCR模型": "Modello OCR per",
"有道TTS": "Youdao TTS", "有道TTS": "Youdao TTS",
"不支持的键位": "Posizione chiave non supportata", "不支持的键位": "Posizione chiave non supportata",
"快捷键冲突": "Conflitto di tasti scorciatoie", "快捷键冲突": "Conflitto di tasti scorciatoie",
@ -766,5 +765,6 @@
"年度总结": "Sintesi annuale", "年度总结": "Sintesi annuale",
"取词翻译": "Traduzione della selezione delle parole", "取词翻译": "Traduzione della selezione delle parole",
"取词查词": "Recupera e cerca parole", "取词查词": "Recupera e cerca parole",
"音频编码": "Codificazione audio" "音频编码": "Codificazione audio",
"系统未安装当前语言的OCR模型": "Il modello OCR per la lingua corrente non è installato nel sistema"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "重要なコンポーネントが見つかりませんでした:", "找不到重要组件:": "重要なコンポーネントが見つかりませんでした:",
"请重新下载并关闭杀毒软件后重试": "ウイルス対策ソフトウェアを再ダウンロードして閉じてから再試行してください", "请重新下载并关闭杀毒软件后重试": "ウイルス対策ソフトウェアを再ダウンロードして閉じてから再試行してください",
"系统未安装": "システムがインストールされていません", "系统未安装": "システムがインストールされていません",
"的OCR模型": "のOCRモデル",
"有道TTS": "有道TTS", "有道TTS": "有道TTS",
"不支持的键位": "サポートされていないキー", "不支持的键位": "サポートされていないキー",
"快捷键冲突": "ショートカットキーの競合", "快捷键冲突": "ショートカットキーの競合",
@ -766,5 +765,6 @@
"年度总结": "年度まとめ", "年度总结": "年度まとめ",
"取词翻译": "単語の翻訳", "取词翻译": "単語の翻訳",
"取词查词": "単語を取って単語を調べる", "取词查词": "単語を取って単語を調べる",
"音频编码": "オーディオコーディング" "音频编码": "オーディオコーディング",
"系统未安装当前语言的OCR模型": "現在の言語のOCRモデルがシステムにインストールされていません"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "중요한 구성 요소를 찾을 수 없음:", "找不到重要组件:": "중요한 구성 요소를 찾을 수 없음:",
"请重新下载并关闭杀毒软件后重试": "백신 프로그램을 다시 다운로드하고 닫은 후 다시 시도하십시오.", "请重新下载并关闭杀毒软件后重试": "백신 프로그램을 다시 다운로드하고 닫은 후 다시 시도하십시오.",
"系统未安装": "시스템이 설치되지 않았습니다.", "系统未安装": "시스템이 설치되지 않았습니다.",
"的OCR模型": "의 OCR 모델",
"有道TTS": "TTS가 있어요.", "有道TTS": "TTS가 있어요.",
"不支持的键位": "지원되지 않는 키", "不支持的键位": "지원되지 않는 키",
"快捷键冲突": "단축키 충돌", "快捷键冲突": "단축키 충돌",
@ -766,5 +765,6 @@
"年度总结": "연간 요약", "年度总结": "연간 요약",
"取词翻译": "취사 번역", "取词翻译": "취사 번역",
"取词查词": "취사 조사", "取词查词": "취사 조사",
"音频编码": "오디오 인코딩" "音频编码": "오디오 인코딩",
"系统未安装当前语言的OCR模型": "현재 언어의 OCR 모델이 시스템에 설치되지 않았습니다."
} }

View File

@ -59,7 +59,6 @@
"打开目录": "Map openen", "打开目录": "Map openen",
"字体样式": "Lettertypestijl", "字体样式": "Lettertypestijl",
"搜索文本过短!": "De zoektekst is te kort!", "搜索文本过短!": "De zoektekst is te kort!",
"的OCR模型": "Het OCR-model",
"小学馆": "Hal van de basisschool", "小学馆": "Hal van de basisschool",
"光标": "cursor", "光标": "cursor",
"项目网站": "Website van het project", "项目网站": "Website van het project",
@ -766,5 +765,6 @@
"年度总结": "Jaarlijkse samenvatting", "年度总结": "Jaarlijkse samenvatting",
"取词翻译": "Woordselectie vertaling", "取词翻译": "Woordselectie vertaling",
"取词查词": "Woorden ophalen en zoeken", "取词查词": "Woorden ophalen en zoeken",
"音频编码": "Audiocodering" "音频编码": "Audiocodering",
"系统未安装当前语言的OCR模型": "Het OCR-model voor de huidige taal is niet geïnstalleerd in het systeem"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "Nie znaleziono ważnego komponentu:", "找不到重要组件:": "Nie znaleziono ważnego komponentu:",
"请重新下载并关闭杀毒软件后重试": "Pobierz i zamknij oprogramowanie antywirusowe ponownie i spróbuj ponownie", "请重新下载并关闭杀毒软件后重试": "Pobierz i zamknij oprogramowanie antywirusowe ponownie i spróbuj ponownie",
"系统未安装": "System nie zainstalowany", "系统未安装": "System nie zainstalowany",
"的OCR模型": "Model OCR dla",
"有道TTS": "Youdao TTS", "有道TTS": "Youdao TTS",
"不支持的键位": "Nieobsługiwana pozycja klucza", "不支持的键位": "Nieobsługiwana pozycja klucza",
"快捷键冲突": "Konflikt kluczy skrótów", "快捷键冲突": "Konflikt kluczy skrótów",
@ -766,5 +765,6 @@
"年度总结": "Roczne podsumowanie", "年度总结": "Roczne podsumowanie",
"取词翻译": "Tłumaczenie wyboru słowa", "取词翻译": "Tłumaczenie wyboru słowa",
"取词查词": "Pobieranie i wyszukiwanie słów", "取词查词": "Pobieranie i wyszukiwanie słów",
"音频编码": "Kodowanie dźwięku" "音频编码": "Kodowanie dźwięku",
"系统未安装当前语言的OCR模型": "Model OCR dla bieżącego języka nie jest zainstalowany w systemie"
} }

View File

@ -59,7 +59,6 @@
"打开目录": "Abrir a pasta", "打开目录": "Abrir a pasta",
"字体样式": "Estilo do Tipo de Letra", "字体样式": "Estilo do Tipo de Letra",
"搜索文本过短!": "O texto de pesquisa é muito curto!", "搜索文本过短!": "O texto de pesquisa é muito curto!",
"的OCR模型": "O modelo OCR",
"小学馆": "Sala do Ensino Fundamental", "小学馆": "Sala do Ensino Fundamental",
"光标": "cursor", "光标": "cursor",
"项目网站": "Sítio Web do projecto", "项目网站": "Sítio Web do projecto",
@ -766,5 +765,6 @@
"年度总结": "Resumo anual", "年度总结": "Resumo anual",
"取词翻译": "Tradução da selecção de palavras", "取词翻译": "Tradução da selecção de palavras",
"取词查词": "Obter e procurar palavras", "取词查词": "Obter e procurar palavras",
"音频编码": "Codificação de áudio" "音频编码": "Codificação de áudio",
"系统未安装当前语言的OCR模型": "O modelo OCR para o idioma atual não está instalado no sistema"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "Не удалось найти важные компоненты:", "找不到重要组件:": "Не удалось найти важные компоненты:",
"请重新下载并关闭杀毒软件后重试": "Пожалуйста, перезагрузите и выключите антивирусное программное обеспечение и попробуйте снова.", "请重新下载并关闭杀毒软件后重试": "Пожалуйста, перезагрузите и выключите антивирусное программное обеспечение и попробуйте снова.",
"系统未安装": "Система не установлена", "系统未安装": "Система не установлена",
"的OCR模型": "Модель OCR",
"有道TTS": "Есть TTS", "有道TTS": "Есть TTS",
"不支持的键位": "Не поддерживаемые клавиши", "不支持的键位": "Не поддерживаемые клавиши",
"快捷键冲突": "Конфликт комбинаций клавиш", "快捷键冲突": "Конфликт комбинаций клавиш",
@ -766,5 +765,6 @@
"年度总结": "Ежегодное резюме", "年度总结": "Ежегодное резюме",
"取词翻译": "Перевод", "取词翻译": "Перевод",
"取词查词": "Поиск слов", "取词查词": "Поиск слов",
"音频编码": "Звуковое кодирование" "音频编码": "Звуковое кодирование",
"系统未安装当前语言的OCR模型": "Система не устанавливает модель OCR для текущего языка"
} }

View File

@ -59,7 +59,6 @@
"打开目录": "Öppna katalog", "打开目录": "Öppna katalog",
"字体样式": "Teckensnittsstil", "字体样式": "Teckensnittsstil",
"搜索文本过短!": "Söktexten är för kort!", "搜索文本过短!": "Söktexten är för kort!",
"的OCR模型": "OCR-modellen",
"小学馆": "Elementary School Hall", "小学馆": "Elementary School Hall",
"光标": "markör", "光标": "markör",
"项目网站": "Projektets webbplats", "项目网站": "Projektets webbplats",
@ -766,5 +765,6 @@
"年度总结": "Årlig sammanfattning", "年度总结": "Årlig sammanfattning",
"取词翻译": "Ordmarkeringsöversättning", "取词翻译": "Ordmarkeringsöversättning",
"取词查词": "Hämta och sök efter ord", "取词查词": "Hämta och sök efter ord",
"音频编码": "Ljudkodning" "音频编码": "Ljudkodning",
"系统未安装当前语言的OCR模型": "OCR-modellen för det aktuella språket är inte installerad i systemet"
} }

View File

@ -58,7 +58,6 @@
"打开目录": "เปิดไดเรกทอรี", "打开目录": "เปิดไดเรกทอรี",
"字体样式": "รูปแบบตัวอักษร", "字体样式": "รูปแบบตัวอักษร",
"搜索文本过短!": "ค้นหาข้อความสั้นเกินไป!", "搜索文本过短!": "ค้นหาข้อความสั้นเกินไป!",
"的OCR模型": "รุ่น OCR",
"小学馆": "ศาลาประถมศึกษา", "小学馆": "ศาลาประถมศึกษา",
"光标": "เคอร์เซอร์", "光标": "เคอร์เซอร์",
"项目网站": "เว็บไซต์โครงการ", "项目网站": "เว็บไซต์โครงการ",
@ -766,5 +765,6 @@
"年度总结": "สรุปรายปี", "年度总结": "สรุปรายปี",
"取词翻译": "คำแปล", "取词翻译": "คำแปล",
"取词查词": "ค้นหาคำ", "取词查词": "ค้นหาคำ",
"音频编码": "การเข้ารหัสเสียง" "音频编码": "การเข้ารหัสเสียง",
"系统未安装当前语言的OCR模型": "ระบบไม่ได้ติดตั้งรุ่น OCR สำหรับภาษาปัจจุบัน"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "Önemli komponent bulunamadı:", "找不到重要组件:": "Önemli komponent bulunamadı:",
"请重新下载并关闭杀毒软件后重试": "Lütfen antivirüs yazılımını tekrar indirin ve tekrar deneyin", "请重新下载并关闭杀毒软件后重试": "Lütfen antivirüs yazılımını tekrar indirin ve tekrar deneyin",
"系统未安装": "Sistem kurulmadı", "系统未安装": "Sistem kurulmadı",
"的OCR模型": "OCR modeli için",
"有道TTS": "Youdao TTS", "有道TTS": "Youdao TTS",
"不支持的键位": "Desteklenmeyen anahtar pozisyonu", "不支持的键位": "Desteklenmeyen anahtar pozisyonu",
"快捷键冲突": "Kısayol tuş çatışması", "快捷键冲突": "Kısayol tuş çatışması",
@ -766,5 +765,6 @@
"年度总结": "Yıllık Toplantı", "年度总结": "Yıllık Toplantı",
"取词翻译": "Kelime seçimi çevirimi", "取词翻译": "Kelime seçimi çevirimi",
"取词查词": "Kelimeleri alın ve arayın", "取词查词": "Kelimeleri alın ve arayın",
"音频编码": "Ses Kodlama" "音频编码": "Ses Kodlama",
"系统未安装当前语言的OCR模型": "Ağımdaki dilin OCR modeli sistemde kurulmadı."
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "Важливий компонент не знайдено:", "找不到重要组件:": "Важливий компонент не знайдено:",
"请重新下载并关闭杀毒软件后重试": "Будь ласка, звантажте і закрийте антивірусне програмне забезпечення знову і спробуйте знову", "请重新下载并关闭杀毒软件后重试": "Будь ласка, звантажте і закрийте антивірусне програмне забезпечення знову і спробуйте знову",
"系统未安装": "Система не встановлена", "系统未安装": "Система не встановлена",
"的OCR模型": "Модель OCR для",
"有道TTS": "Youdao TTS", "有道TTS": "Youdao TTS",
"不支持的键位": "Непідтримувана позиція ключа", "不支持的键位": "Непідтримувана позиція ключа",
"快捷键冲突": "Конфлікт клавіш скорочення", "快捷键冲突": "Конфлікт клавіш скорочення",
@ -766,5 +765,6 @@
"年度总结": "Річне резюме", "年度总结": "Річне резюме",
"取词翻译": "Переклад вибору слів", "取词翻译": "Переклад вибору слів",
"取词查词": "Отримати і шукати слова", "取词查词": "Отримати і шукати слова",
"音频编码": "Аудіокодування" "音频编码": "Аудіокодування",
"系统未安装当前语言的OCR模型": "Модель OCR для поточної мови не встановлена у системі"
} }

View File

@ -281,7 +281,6 @@
"找不到重要组件:": "Không tìm thấy thành phần quan trọng:", "找不到重要组件:": "Không tìm thấy thành phần quan trọng:",
"请重新下载并关闭杀毒软件后重试": "Vui lòng tải xuống và thử lại sau khi tắt phần mềm diệt virus", "请重新下载并关闭杀毒软件后重试": "Vui lòng tải xuống và thử lại sau khi tắt phần mềm diệt virus",
"系统未安装": "Hệ thống không được cài đặt", "系统未安装": "Hệ thống không được cài đặt",
"的OCR模型": "Mô hình OCR",
"有道TTS": "Có TTS", "有道TTS": "Có TTS",
"不支持的键位": "Các phím không được hỗ trợ", "不支持的键位": "Các phím không được hỗ trợ",
"快捷键冲突": "Xung đột phím tắt", "快捷键冲突": "Xung đột phím tắt",
@ -766,5 +765,6 @@
"年度总结": "Tóm tắt hàng năm", "年度总结": "Tóm tắt hàng năm",
"取词翻译": "Dịch thuật lấy từ", "取词翻译": "Dịch thuật lấy từ",
"取词查词": "Tìm kiếm từ", "取词查词": "Tìm kiếm từ",
"音频编码": "Mã hóa âm thanh" "音频编码": "Mã hóa âm thanh",
"系统未安装当前语言的OCR模型": "Hệ thống không cài đặt mô hình OCR cho ngôn ngữ hiện tại"
} }

View File

@ -60,7 +60,7 @@
"手动设置代理": "", "手动设置代理": "",
"字体样式": "", "字体样式": "",
"搜索文本过短!": "", "搜索文本过短!": "",
"的OCR模型": "", "系统未安装当前语言的OCR模型": "",
"小学馆": "", "小学馆": "",
"光标": "", "光标": "",
"项目网站": "", "项目网站": "",