diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 1abf83fe76..dbb83cb29d 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -3483,6 +3483,16 @@ }, "title": "设置", "tool": { + "ocr": { + "image": { + "error": { + "provider_not_found": "该提供商不存在" + }, + "title": "图片" + }, + "image_provider": "OCR 服务提供商", + "title": "OCR 服务" + }, "preprocess": { "provider": "文档处理服务商", "provider_placeholder": "选择一个文档处理服务商", diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrImageProviderSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrImageProviderSettings.tsx new file mode 100644 index 0000000000..ad150cc666 --- /dev/null +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrImageProviderSettings.tsx @@ -0,0 +1,51 @@ +import { loggerService } from '@logger' +import { useAppSelector } from '@renderer/store' +import { setImageOcrProvider } from '@renderer/store/ocr' +import { isImageOcrProvider } from '@renderer/types' +import { Select } from 'antd' +import { useTranslation } from 'react-i18next' +import { useDispatch } from 'react-redux' + +import { SettingRow, SettingRowTitle } from '..' + +const logger = loggerService.withContext('OcrImageProviderSettings') + +const OcrImageProviderSettings = () => { + const { t } = useTranslation() + const providers = useAppSelector((state) => state.ocr.providers) + const imageProvider = useAppSelector((state) => state.ocr.imageProvider) + const imageProviders = providers.filter((p) => isImageOcrProvider(p)) + const dispatch = useDispatch() + + const updateImageProvider = (id: string) => { + const provider = imageProviders.find((p) => p.id === id) + if (!provider) { + logger.error(`Failed to find image provider by id: ${id}`) + window.message.error(t('settings.tool.ocr.image.error.provider_not_found')) + return + } + + dispatch(setImageOcrProvider(provider)) + } + + return ( + <> + + {t('settings.tool.ocr.image_provider')} +
+