From e823d97e31c417f96aa16c6c6b49b0c1d9bc849d Mon Sep 17 00:00:00 2001 From: icarus Date: Mon, 20 Oct 2025 01:54:22 +0800 Subject: [PATCH] feat(ocr): add provider config mappings and default preferences Add OCR provider configuration mappings to PreferencesMappings.ts and define default preferences for OCR providers in preferenceSchemas.ts. This enables support for multiple OCR providers with their respective configurations. --- .../data/preference/preferenceSchemas.ts | 14 ++++++++++++++ .../migrators/PreferencesMappings.ts | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/packages/shared/data/preference/preferenceSchemas.ts b/packages/shared/data/preference/preferenceSchemas.ts index 43ddfd6655..08a8c12ba3 100644 --- a/packages/shared/data/preference/preferenceSchemas.ts +++ b/packages/shared/data/preference/preferenceSchemas.ts @@ -9,8 +9,10 @@ * === AUTO-GENERATED CONTENT START === */ +import { BUILTIN_OCR_PROVIDER_CONFIG_MAP } from '@shared/config/ocr' import { TRANSLATE_PROMPT } from '@shared/config/prompts' import * as PreferenceTypes from '@shared/data/preference/preferenceTypes' +import type { OcrOvConfig, OcrPpocrConfig, OcrSystemConfig, OcrTesseractConfig } from '@types' /* eslint @typescript-eslint/member-ordering: ["error", { "interfaces": { "order": "alphabetically" }, @@ -351,6 +353,14 @@ export interface PreferenceSchemas { 'feature.translate.model_prompt': string // redux/settings/targetLanguage 'feature.translate.target_language': string + // redux/ocr/configs/ovocr + 'ocr.provider.config.ovocr': OcrOvConfig + // redux/ocr/configs/paddleocr + 'ocr.provider.config.paddleocr': OcrPpocrConfig + // redux/ocr/configs/system + 'ocr.provider.config.system': OcrSystemConfig + // redux/ocr/configs/tesseract + 'ocr.provider.config.tesseract': OcrTesseractConfig // redux/ocr/imageProviderId 'ocr.settings.image_provider_id': string | null // redux/shortcuts/shortcuts.exit_fullscreen @@ -614,6 +624,10 @@ export const DefaultPreferences: PreferenceSchemas = { 'feature.selection.trigger_mode': PreferenceTypes.SelectionTriggerMode.Selected, 'feature.translate.model_prompt': TRANSLATE_PROMPT, 'feature.translate.target_language': 'en-us', + 'ocr.provider.config.ovocr': BUILTIN_OCR_PROVIDER_CONFIG_MAP.ovocr, + 'ocr.provider.config.paddleocr': BUILTIN_OCR_PROVIDER_CONFIG_MAP.paddleocr, + 'ocr.provider.config.system': BUILTIN_OCR_PROVIDER_CONFIG_MAP.system, + 'ocr.provider.config.tesseract': BUILTIN_OCR_PROVIDER_CONFIG_MAP.tesseract, 'ocr.settings.image_provider_id': null, 'shortcut.app.exit_fullscreen': { editable: false, enabled: true, key: ['Escape'], system: true }, 'shortcut.app.search_message': { diff --git a/src/main/data/migrate/dataRefactor/migrators/PreferencesMappings.ts b/src/main/data/migrate/dataRefactor/migrators/PreferencesMappings.ts index efcbba28e7..f68828e49b 100644 --- a/src/main/data/migrate/dataRefactor/migrators/PreferencesMappings.ts +++ b/src/main/data/migrate/dataRefactor/migrators/PreferencesMappings.ts @@ -744,6 +744,24 @@ export const REDUX_STORE_MAPPINGS = { originalKey: 'shortcuts.exit_fullscreen', targetKey: 'shortcut.app.exit_fullscreen' } + ], + ocr: [ + { + originalKey: 'ocr.configs.tesseract', + targetKey: 'ocr.provider.config.tesseract' + }, + { + originalKey: 'ocr.configs.system', + targetKey: 'ocr.provider.config.system' + }, + { + originalKey: 'ocr.configs.paddleocr', + targetKey: 'ocr.provider.config.paddleocr' + }, + { + originalKey: 'ocr.configs.ovocr', + targetKey: 'ocr.provider.config.ovocr' + } ] } as const satisfies Record< string,