feat: 添加 OCR 词汇提取功能

新增 OCR 页面,用户可上传教材词汇表截图,使用 GLM-4.6V 视觉模型
提取单词-释义对并保存到指定文件夹。

- AI 管道: src/lib/bigmodel/ocr/ (orchestrator, types)
- 后端模块: src/modules/ocr/ (action-service-repository 架构)
- 前端页面: src/app/(features)/ocr/ (拖拽上传、folder 选择)
- i18n: 8 种语言翻译支持
This commit is contained in:
2026-03-10 15:21:45 +08:00
parent 683a4104ec
commit 9b78fd5215
18 changed files with 868 additions and 0 deletions

View File

@@ -197,6 +197,35 @@
"favorites": "Favoris",
"settings": "Paramètres"
},
"ocr": {
"title": "Extraction OCR de vocabulaire",
"description": "Téléchargez des captures d'écran de tableaux de vocabulaire pour extraire les paires mot-définition",
"uploadImage": "Télécharger une image",
"dragDropHint": "Glissez-déposez une image ici, ou cliquez pour sélectionner",
"supportedFormats": "Supportés : JPG, PNG, WebP",
"selectFolder": "Sélectionner un dossier",
"chooseFolder": "Choisissez un dossier pour sauvegarder les paires extraites",
"noFolders": "Aucun dossier disponible. Veuillez d'abord créer un dossier.",
"languageHints": "Indices de langue (Optionnel)",
"sourceLanguageHint": "Langue source (ex : Anglais)",
"targetLanguageHint": "Langue cible/traduction (ex : Chinois)",
"process": "Traiter l'image",
"processing": "Traitement...",
"preview": "Aperçu",
"extractedPairs": "Paires extraites",
"word": "Mot",
"definition": "Définition",
"pairsCount": "{count} paires extraites",
"savePairs": "Sauvegarder dans le dossier",
"saving": "Sauvegarde...",
"saved": "{count} paires sauvegardées dans {folder}",
"saveFailed": "Échec de la sauvegarde",
"noImage": "Veuillez d'abord télécharger une image",
"noFolder": "Veuillez sélectionner un dossier",
"processingFailed": "Échec du traitement OCR",
"tryAgain": "Veuillez réessayer avec une image plus claire",
"detectedLanguages": "Détecté : {source} → {target}"
},
"profile": {
"myProfile": "Mon profil",
"email": "E-mail : {email}",