mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-25 03:10:08 +08:00
feat(ocr): 添加OCR类型定义文件以支持OCR功能扩展
This commit is contained in:
parent
1c99a13312
commit
6229cbd4d2
63
src/renderer/src/types/ocr.ts
Normal file
63
src/renderer/src/types/ocr.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import { Model } from '@types'
|
||||
|
||||
export const BuiltinOcrProviderIds = {
|
||||
tesseract: 'tesseract'
|
||||
} as const
|
||||
|
||||
export type BuiltinOcrProviderId = keyof typeof BuiltinOcrProviderIds
|
||||
|
||||
export const isBuiltinOcrProviderId = (id: string): id is BuiltinOcrProviderId => {
|
||||
return Object.hasOwn(BuiltinOcrProviderIds, id)
|
||||
}
|
||||
|
||||
// extensible
|
||||
export const OcrProviderCapabilities = {
|
||||
image: 'image'
|
||||
} as const
|
||||
|
||||
export type OcrProviderCapability = keyof typeof OcrProviderCapabilities
|
||||
|
||||
export const isOcrProviderCapability = (cap: string): cap is OcrProviderCapability => {
|
||||
return Object.hasOwn(OcrProviderCapabilities, cap)
|
||||
}
|
||||
|
||||
export type OcrProviderCapabilityRecord = Record<OcrProviderCapability, boolean>
|
||||
|
||||
export type OcrProvider = {
|
||||
id: string
|
||||
name: string
|
||||
capabilities: OcrProviderCapabilityRecord
|
||||
config?: {
|
||||
// for future. Model based ocr, api based ocr. May different api client.
|
||||
api?: {
|
||||
apiKey: string
|
||||
apiHost: string
|
||||
apiVersion?: string
|
||||
}
|
||||
models?: Model[]
|
||||
enabled?: boolean
|
||||
}
|
||||
}
|
||||
|
||||
export type BuiltinOcrProvider = OcrProvider & {
|
||||
id: BuiltinOcrProviderId
|
||||
}
|
||||
|
||||
export const isBuiltinOcrProvider = (p: OcrProvider): p is BuiltinOcrProvider => {
|
||||
return isBuiltinOcrProviderId(p.id)
|
||||
}
|
||||
|
||||
// Not sure compatiable api endpoint exists. May not support custom ocr provider
|
||||
export type CustomOcrProvider = OcrProvider & {
|
||||
id: Exclude<string, BuiltinOcrProviderId>
|
||||
}
|
||||
|
||||
export type ImageOcrProvider = OcrProvider & {
|
||||
capabilities: OcrProviderCapabilityRecord & {
|
||||
[OcrProviderCapabilities.image]: true
|
||||
}
|
||||
}
|
||||
|
||||
export const isImageOcrProvider = (p: OcrProvider): p is ImageOcrProvider => {
|
||||
return p.capabilities.image
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user