mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-09 23:10:20 +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 { loggerService } from '@logger'
|
||||||
import * as OcrService from '@renderer/services/ocr/OcrService'
|
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 { isImageFileMetadata } from '@renderer/types'
|
||||||
import { formatErrorMessage } from '@renderer/utils/error'
|
import { formatErrorMessage } from '@renderer/utils/error'
|
||||||
import { useCallback } from 'react'
|
import { useCallback } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
|
||||||
import { useOcrProviders } from './useOcrProvider'
|
import { useOcrProviders } from './useOcrProviders'
|
||||||
|
|
||||||
const logger = loggerService.withContext('useOcr')
|
const logger = loggerService.withContext('useOcr')
|
||||||
|
|
||||||
@ -14,6 +14,18 @@ export const useOcr = () => {
|
|||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { imageProvider } = useOcrProviders()
|
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识别
|
* 对图片文件进行OCR识别
|
||||||
* @param image 图片文件元数据
|
* @param image 图片文件元数据
|
||||||
@ -22,10 +34,14 @@ export const useOcr = () => {
|
|||||||
*/
|
*/
|
||||||
const ocrImage = useCallback(
|
const ocrImage = useCallback(
|
||||||
async (image: ImageFileMetadata) => {
|
async (image: ImageFileMetadata) => {
|
||||||
logger.debug('ocrImage', { config: imageProvider.config })
|
if (isProviderAvailable(imageProvider)) {
|
||||||
return OcrService.ocr(image, 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",
|
"existing": "The provider already exists",
|
||||||
"get_providers": "Failed to get available providers",
|
"get_providers": "Failed to get available providers",
|
||||||
"not_found": "OCR provider does not exist",
|
"not_found": "OCR provider does not exist",
|
||||||
|
"not_image_provider": "This provider cannot process image.",
|
||||||
"update_failed": "Failed to update configuration"
|
"update_failed": "Failed to update configuration"
|
||||||
},
|
},
|
||||||
"unknown": "An error occurred during the OCR process"
|
"unknown": "An error occurred during the OCR process"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user