feat(ocr): add provider availability check and error message

Add validation to ensure OCR provider can process images before attempting OCR
This commit is contained in:
icarus 2025-10-20 02:17:28 +08:00
parent b310ea1407
commit 5900ff0c6e
2 changed files with 22 additions and 5 deletions

View File

@ -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]
)
/**

View File

@ -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"