mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-24 18:50:56 +08:00
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:
parent
b310ea1407
commit
5900ff0c6e
@ -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]
|
||||
)
|
||||
|
||||
/**
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user