From 94ed39ab2739d2febff1cb43811e00d0b68f3d5f Mon Sep 17 00:00:00 2001 From: icarus Date: Mon, 20 Oct 2025 02:30:57 +0800 Subject: [PATCH] refactor(ocr): simplify provider fallback logic and remove unused methods Remove unused provider management methods (add/remove) and simplify the fallback logic in useOcrProvider to always use Tesseract when provider is not found --- src/renderer/src/hooks/ocr/useOcrProvider.ts | 20 ++------- src/renderer/src/hooks/ocr/useOcrProviders.ts | 45 +------------------ 2 files changed, 6 insertions(+), 59 deletions(-) diff --git a/src/renderer/src/hooks/ocr/useOcrProvider.ts b/src/renderer/src/hooks/ocr/useOcrProvider.ts index bb6efb8bef..719455429f 100644 --- a/src/renderer/src/hooks/ocr/useOcrProvider.ts +++ b/src/renderer/src/hooks/ocr/useOcrProvider.ts @@ -1,7 +1,6 @@ import { loggerService } from '@logger' import { updateOcrProviderConfig } from '@renderer/store/ocr' import type { OcrProviderConfig } from '@renderer/types' -import { isBuiltinOcrProviderId } from '@renderer/types' import { BUILTIN_OCR_PROVIDERS_MAP } from '@shared/config/ocr' import { useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' @@ -13,27 +12,16 @@ const logger = loggerService.withContext('useOcrProvider') export const useOcrProvider = (id: string) => { const { t } = useTranslation() const dispatch = useDispatch() - const { providers, addProvider } = useOcrProviders() + const { providers } = useOcrProviders() let provider = providers.find((p) => p.id === id) // safely fallback if (!provider) { logger.error(`Ocr Provider ${id} not found`) + logger.warn(`Fallback to tesseract`) window.toast.error(t('ocr.error.provider.not_found')) - if (isBuiltinOcrProviderId(id)) { - try { - addProvider(BUILTIN_OCR_PROVIDERS_MAP[id]) - } catch (e) { - logger.warn(`Add ${BUILTIN_OCR_PROVIDERS_MAP[id].name} failed. Just use temp provider from config.`) - window.toast.warning(t('ocr.warning.provider.fallback', { name: BUILTIN_OCR_PROVIDERS_MAP[id].name })) - } finally { - provider = BUILTIN_OCR_PROVIDERS_MAP[id] - } - } else { - logger.warn(`Fallback to tesseract`) - window.toast.warning(t('ocr.warning.provider.fallback', { name: 'Tesseract' })) - provider = BUILTIN_OCR_PROVIDERS_MAP.tesseract - } + window.toast.warning(t('ocr.warning.provider.fallback', { name: 'Tesseract' })) + provider = BUILTIN_OCR_PROVIDERS_MAP.tesseract } const updateConfig = (update: Partial) => { diff --git a/src/renderer/src/hooks/ocr/useOcrProviders.ts b/src/renderer/src/hooks/ocr/useOcrProviders.ts index 3b17b9d702..2974c5c46a 100644 --- a/src/renderer/src/hooks/ocr/useOcrProviders.ts +++ b/src/renderer/src/hooks/ocr/useOcrProviders.ts @@ -1,13 +1,10 @@ import { useQuery } from '@data/hooks/useDataApi' import { loggerService } from '@logger' import { getBuiltinOcrProviderLabel } from '@renderer/i18n/label' -import { addOcrProvider, removeOcrProvider } from '@renderer/store/ocr' import type { OcrProvider } from '@renderer/types' -import { isBuiltinOcrProvider, isBuiltinOcrProviderId } from '@renderer/types' +import { isBuiltinOcrProvider } from '@renderer/types' import { BUILTIN_OCR_PROVIDERS } from '@shared/config/ocr' -import { useCallback, useMemo } from 'react' -import { useTranslation } from 'react-i18next' -import { useDispatch } from 'react-redux' +import { useMemo } from 'react' const logger = loggerService.withContext('useOcrProviders') @@ -17,42 +14,6 @@ export const useOcrProviders = () => { () => BUILTIN_OCR_PROVIDERS.filter((p) => validProviderIds?.includes(p.id)), [validProviderIds] ) - const dispatch = useDispatch() - const { t } = useTranslation() - - /** - * 添加一个新的OCR服务提供者 - * @param provider - OCR提供者对象,包含id和其他配置信息 - * @throws {Error} 当尝试添加一个已存在ID的提供者时抛出错误 - */ - const addProvider = useCallback( - (provider: OcrProvider) => { - if (providers.some((p) => p.id === provider.id)) { - const msg = `Provider with id ${provider.id} already exists` - logger.error(msg) - window.toast.error(t('ocr.error.provider.existing')) - throw new Error(msg) - } - dispatch(addOcrProvider(provider)) - }, - [dispatch, providers, t] - ) - - /** - * 移除一个OCR服务提供者 - * @param id - 要移除的OCR提供者ID - * @throws {Error} 当尝试移除一个内置提供商时抛出错误 - */ - const removeProvider = (id: string) => { - if (isBuiltinOcrProviderId(id)) { - const msg = `Cannot remove builtin provider ${id}` - logger.error(msg) - window.toast.error(t('ocr.error.provider.cannot_remove_builtin')) - throw new Error(msg) - } - - dispatch(removeOcrProvider(id)) - } const getOcrProviderName = (p: OcrProvider) => { return isBuiltinOcrProvider(p) ? getBuiltinOcrProviderLabel(p.id) : p.name @@ -62,8 +23,6 @@ export const useOcrProviders = () => { providers, loading, error, - addProvider, - removeProvider, getOcrProviderName } }