diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrOVSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrOVSettings.tsx index 23ce01306a..54731d0667 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrOVSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrOVSettings.tsx @@ -1,6 +1,4 @@ import { Flex } from '@cherrystudio/ui' -import { useOcrProvider } from '@renderer/hooks/ocr/useOcrProvider' -import { BuiltinOcrProviderIdMap, isOcrOVProvider } from '@renderer/types' import { Tag } from 'antd' import { useTranslation } from 'react-i18next' @@ -8,11 +6,6 @@ import { SettingRow, SettingRowTitle } from '..' export const OcrOVSettings = () => { const { t } = useTranslation() - const { provider } = useOcrProvider(BuiltinOcrProviderIdMap.ovocr) - - if (!isOcrOVProvider(provider)) { - throw new Error('Not OV OCR provider.') - } return ( <> diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrPpocrSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrPpocrSettings.tsx index 181ecf5ff0..c2a3696a1d 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrPpocrSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrPpocrSettings.tsx @@ -1,26 +1,33 @@ import { ErrorBoundary } from '@renderer/components/ErrorBoundary' -import { useOcrProvider } from '@renderer/hooks/ocr/useOcrProvider' -import { BuiltinOcrProviderIdMap, isOcrPpocrProvider } from '@renderer/types' +import type { OcrPpocrConfig, OcrPpocrProvider, OcrProviderConfig } from '@renderer/types' +import { isOcrPpocrProvider } from '@renderer/types' import { Input } from 'antd' import { startTransition, useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingHelpLink, SettingHelpText, SettingHelpTextRow, SettingRow, SettingRowTitle } from '..' -export const OcrPpocrSettings = () => { +export const OcrPpocrSettings = ({ + provider, + updateConfig: _updateConfig +}: { + provider: OcrPpocrProvider + updateConfig: (config: Partial) => Promise +}) => { + const updateConfig = _updateConfig as (config: Partial) => Promise + // Hack: Hard-coded for now const SERVING_DOC_URL = 'https://www.paddleocr.ai/latest/version3.x/deployment/serving.html' const AISTUDIO_URL = 'https://aistudio.baidu.com/pipeline/mine' const { t } = useTranslation() - const { provider, config, updateConfig } = useOcrProvider(BuiltinOcrProviderIdMap.paddleocr) if (!isOcrPpocrProvider(provider)) { throw new Error('Not PaddleOCR provider.') } - const [apiUrl, setApiUrl] = useState(config.apiUrl || '') - const [accessToken, setAccessToken] = useState(config.accessToken || '') + const [apiUrl, setApiUrl] = useState(provider.config.apiUrl || '') + const [accessToken, setAccessToken] = useState(provider.config.accessToken || '') const onApiUrlChange = useCallback((e: React.ChangeEvent) => { const value = e.target.value diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx index 2eab5f1203..210369d78d 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx @@ -43,10 +43,10 @@ const OcrProviderSettings = ({ provider, updateConfig }: Props) => { return } if (isOcrSystemProvider(provider)) { - return + return } if (isOcrPpocrProvider(provider)) { - return + return } if (isOcrOVProvider(provider)) { return diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrSystemSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrSystemSettings.tsx index d41cad5719..2ace253fc6 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrSystemSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrSystemSettings.tsx @@ -3,10 +3,8 @@ import { Flex } from '@cherrystudio/ui' import { InfoTooltip } from '@cherrystudio/ui' import { SuccessTag } from '@renderer/components/Tags/SuccessTag' import { isMac, isWin } from '@renderer/config/constant' -import { useOcrProvider } from '@renderer/hooks/ocr/useOcrProvider' import useTranslate from '@renderer/hooks/useTranslate' -import type { TranslateLanguageCode } from '@renderer/types' -import { BuiltinOcrProviderIdMap, isOcrSystemProvider } from '@renderer/types' +import type { OcrProviderConfig, OcrSystemConfig, OcrSystemProvider, TranslateLanguageCode } from '@renderer/types' import { Select } from 'antd' import { startTransition, useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' @@ -15,21 +13,24 @@ import { SettingRow, SettingRowTitle } from '..' // const logger = loggerService.withContext('OcrSystemSettings') -export const OcrSystemSettings = () => { +export const OcrSystemSettings = ({ + provider, + updateConfig: _updateConfig +}: { + provider: OcrSystemProvider + updateConfig: (config: Partial) => Promise +}) => { + const updateConfig = _updateConfig as (config: Partial) => Promise + const { t } = useTranslation() // 和翻译自定义语言耦合了,应该还ok const { translateLanguages } = useTranslate() - const { provider, config, updateConfig } = useOcrProvider(BuiltinOcrProviderIdMap.system) - - if (!isOcrSystemProvider(provider)) { - throw new Error('Not system provider.') - } if (!isWin && !isMac) { throw new Error('Only Windows and MacOS is supported.') } - const [langs, setLangs] = useState(config?.langs ?? []) + const [langs, setLangs] = useState(provider.config.langs ?? []) // currently static const options = useMemo( diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrTesseractSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrTesseractSettings.tsx index aee46ff1de..552f36704b 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrTesseractSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrTesseractSettings.tsx @@ -16,11 +16,13 @@ import { SettingRow, SettingRowTitle } from '..' export const OcrTesseractSettings = ({ provider, - updateConfig + updateConfig: _updateConfig }: { provider: OcrTesseractProvider updateConfig: (config: Partial) => Promise }) => { + const updateConfig = _updateConfig as (config: Partial) => Promise + const { t } = useTranslation() const [langs, setLangs] = useState(provider?.config.langs)