mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-24 18:50:56 +08:00
fix(ocr): 改进OCR处理中的消息管理和错误处理
在useOcr钩子中统一管理OCR处理的消息提示,并完善错误处理逻辑 移除TranslatePage中重复的消息管理代码,简化OCR处理流程
This commit is contained in:
parent
9ac7d7f95e
commit
a46697c5c3
@ -1,8 +1,11 @@
|
||||
import { loggerService } from '@logger'
|
||||
import { useAppSelector } from '@renderer/store'
|
||||
import { ImageFileMetadata, isImageFile, SupportedOcrFile } from '@renderer/types'
|
||||
import { uuid } from '@renderer/utils'
|
||||
import { formatErrorMessage } from '@renderer/utils/error'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
|
||||
export const useImageOcr = () => {}
|
||||
const logger = loggerService.withContext('useOcr')
|
||||
|
||||
export const useOcr = () => {
|
||||
const { t } = useTranslation()
|
||||
@ -18,14 +21,24 @@ export const useOcr = () => {
|
||||
}
|
||||
|
||||
/**
|
||||
* 对支持的文件进行OCR识别
|
||||
* 对支持的文件进行OCR识别.
|
||||
* @param file 支持OCR的文件
|
||||
* @returns OCR识别结果的Promise
|
||||
* @throws 当文件类型不支持时抛出错误
|
||||
* @throws 当文件类型不支持或OCR失败时抛出错误
|
||||
*/
|
||||
const ocr = async (file: SupportedOcrFile) => {
|
||||
if (isImageFile(file)) {
|
||||
return ocrImage(file)
|
||||
const key = uuid()
|
||||
window.message.loading({ content: t('ocr.processing'), key, duration: 0 })
|
||||
try {
|
||||
if (isImageFile(file)) {
|
||||
return ocrImage(file)
|
||||
}
|
||||
} catch (e) {
|
||||
logger.error('Failed to ocr.', e as Error)
|
||||
window.message.error(t('ocr.error.unknown') + ': ' + formatErrorMessage(e))
|
||||
throw e
|
||||
} finally {
|
||||
window.message.destroy(key)
|
||||
}
|
||||
// @ts-expect-error all types should be covered
|
||||
throw new Error(t('ocr.file.not_supported', { type: file.type }))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user