From cf0e6a8f735399cf6784698f1ec1765fb04336b2 Mon Sep 17 00:00:00 2001 From: icarus Date: Fri, 22 Aug 2025 20:28:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor(ocr):=20=E4=BF=AE=E6=94=B9tesseractOcr?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=AE=8C=E6=95=B4=E8=AF=86=E5=88=AB=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E8=80=8C=E9=9D=9E=E4=BB=85=E6=96=87=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 返回完整识别结果以便后续处理使用更多OCR信息,同时简化imageOcr中的条件判断逻辑 --- src/main/services/ocr/OcrService.ts | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/services/ocr/OcrService.ts b/src/main/services/ocr/OcrService.ts index 8e6845de9c..d4fe7eef46 100644 --- a/src/main/services/ocr/OcrService.ts +++ b/src/main/services/ocr/OcrService.ts @@ -23,7 +23,7 @@ const logger = loggerService.withContext('main:OcrService') * @returns ocr result * @throws {Error} */ -const tesseractOcr = async (file: ImageFileMetadata | string): Promise => { +const tesseractOcr = async (file: ImageFileMetadata | string): Promise => { try { const worker = await getTesseractWorker() let ret: Tesseract.RecognizeResult @@ -37,7 +37,7 @@ const tesseractOcr = async (file: ImageFileMetadata | string): Promise = const buffer = await readFile(file.path) ret = await worker.recognize(buffer) } - return ret.data.text + return ret } catch (e) { logger.error('Failed to ocr with tesseract.', e as Error) throw e @@ -53,13 +53,11 @@ const tesseractOcr = async (file: ImageFileMetadata | string): Promise = */ const imageOcr = async (file: ImageFileMetadata, provider: ImageOcrProvider): Promise => { if (isBuiltinOcrProvider(provider)) { - let text: string - switch (provider.id) { - case 'tesseract': - text = await tesseractOcr(file) - return { text } - default: - throw new Error(`Unsupported built-in ocr provider: ${provider.id}`) + if (provider.id === 'tesseract') { + const result = await tesseractOcr(file) + return { text: result.data.text } + } else { + throw new Error(`Unsupported built-in ocr provider: ${provider.id}`) } } throw new Error(`Provider ${provider.id} is not supported.`)