diff --git a/src/renderer/src/hooks/ocr/useOcr.ts b/src/renderer/src/hooks/ocr/useOcr.ts index 84db7c5237..e9ab72de8d 100644 --- a/src/renderer/src/hooks/ocr/useOcr.ts +++ b/src/renderer/src/hooks/ocr/useOcr.ts @@ -1,12 +1,12 @@ import { loggerService } from '@logger' import * as OcrService from '@renderer/services/ocr/OcrService' -import type { ImageFileMetadata, SupportedOcrFile } from '@renderer/types' +import type { ImageFileMetadata, ImageOcrProvider, SupportedOcrFile } from '@renderer/types' import { isImageFileMetadata } from '@renderer/types' import { formatErrorMessage } from '@renderer/utils/error' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' -import { useOcrProviders } from './useOcrProvider' +import { useOcrProviders } from './useOcrProviders' const logger = loggerService.withContext('useOcr') @@ -14,6 +14,18 @@ export const useOcr = () => { const { t } = useTranslation() const { imageProvider } = useOcrProviders() + const isProviderAvailable = useCallback( + (provider: ImageOcrProvider | undefined): provider is ImageOcrProvider => { + if (!provider) { + window.toast.error(t('ocr.error.provider.not_found')) + return false + } else { + return true + } + }, + [t] + ) + /** * 对图片文件进行OCR识别 * @param image 图片文件元数据 @@ -22,10 +34,14 @@ export const useOcr = () => { */ const ocrImage = useCallback( async (image: ImageFileMetadata) => { - logger.debug('ocrImage', { config: imageProvider.config }) - return OcrService.ocr(image, imageProvider) + if (isProviderAvailable(imageProvider)) { + logger.debug('ocrImage', { config: imageProvider.config }) + return OcrService.ocr(image, imageProvider) + } else { + throw new Error(t('ocr.error.provider.not_image_provider')) + } }, - [imageProvider] + [imageProvider, isProviderAvailable, t] ) /** diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 9dbdd32dae..a8016c0f10 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -2053,6 +2053,7 @@ "existing": "The provider already exists", "get_providers": "Failed to get available providers", "not_found": "OCR provider does not exist", + "not_image_provider": "This provider cannot process image.", "update_failed": "Failed to update configuration" }, "unknown": "An error occurred during the OCR process"