refactor(ocr): 统一使用 SupportedOcrFile 类型替换 FileMetadata

更新 OCR 服务及其 Tesseract 实现,使用 SupportedOcrFile 类型替代原有的 FileMetadata 类型,以提高类型安全性和一致性。同时在 OcrService 中添加重复注册的警告日志。
This commit is contained in:
icarus 2025-08-23 13:45:21 +08:00
parent bfb64522cd
commit f3da4a6e36
2 changed files with 10 additions and 4 deletions

View File

@ -1,13 +1,19 @@
import { BuiltinOcrProviderIds, FileMetadata, OcrProvider, OcrResult, SupportedOcrFile } from '@types'
import { loggerService } from '@logger'
import { BuiltinOcrProviderIds, OcrProvider, OcrResult, SupportedOcrFile } from '@types'
import { tesseractService } from './tesseract/TesseractService'
type OcrHandler = (file: FileMetadata) => Promise<OcrResult>
type OcrHandler = (file: SupportedOcrFile) => Promise<OcrResult>
const logger = loggerService.withContext('OcrService')
export class OcrService {
private registry: Map<string, OcrHandler> = new Map()
register(providerId: string, handler: OcrHandler): void {
if (this.registry.has(providerId)) {
logger.warn(`Provider ${providerId} has existing handler. Overwrited.`)
}
this.registry.set(providerId, handler)
}

View File

@ -1,7 +1,7 @@
import { loggerService } from '@logger'
import { getIpCountry } from '@main/utils/ipService'
import { MB } from '@shared/config/constant'
import { FileMetadata, ImageFileMetadata, isImageFile, OcrResult } from '@types'
import { ImageFileMetadata, isImageFile, OcrResult, SupportedOcrFile } from '@types'
import { app } from 'electron'
import fs from 'fs'
import path from 'path'
@ -149,7 +149,7 @@ export class TesseractService {
return { text: result.data.text }
}
async ocr(file: FileMetadata): Promise<OcrResult> {
async ocr(file: SupportedOcrFile): Promise<OcrResult> {
if (!isImageFile(file)) {
throw new Error('Only image files are supported currently')
}