refactor: remove mac ocr

This commit is contained in:
kangfenmao
2025-07-31 20:54:56 +08:00
parent c214a6e56e
commit 1efefad3ee
40 changed files with 145 additions and 1014 deletions
@@ -1,17 +1,18 @@
import fs from 'node:fs'
import path from 'node:path'
import { loggerService } from '@logger'
import { windowService } from '@main/services/WindowService'
import { getFileExt } from '@main/utils/file'
import { getFileExt, getTempDir } from '@main/utils/file'
import { FileMetadata, PreprocessProvider } from '@types'
import { app } from 'electron'
import pdfjs from 'pdfjs-dist'
import { TypedArray } from 'pdfjs-dist/types/src/display/api'
import { PDFDocument } from 'pdf-lib'
const logger = loggerService.withContext('BasePreprocessProvider')
export default abstract class BasePreprocessProvider {
protected provider: PreprocessProvider
protected userId?: string
public storageDir = path.join(app.getPath('userData'), 'Data', 'Files')
public storageDir = path.join(getTempDir(), 'preprocess')
constructor(provider: PreprocessProvider, userId?: string) {
if (!provider) {
@@ -19,7 +20,19 @@ export default abstract class BasePreprocessProvider {
}
this.provider = provider
this.userId = userId
this.ensureDirectories()
}
private ensureDirectories() {
try {
if (!fs.existsSync(this.storageDir)) {
fs.mkdirSync(this.storageDir, { recursive: true })
}
} catch (error) {
logger.error('Failed to create directories:', error as Error)
}
}
abstract parseFile(sourceId: string, file: FileMetadata): Promise<{ processedFile: FileMetadata; quota?: number }>
abstract checkQuota(): Promise<number>
@@ -77,17 +90,11 @@ export default abstract class BasePreprocessProvider {
return new Promise((resolve) => setTimeout(resolve, ms))
}
public async readPdf(
source: string | URL | TypedArray,
passwordCallback?: (fn: (password: string) => void, reason: string) => string
) {
const documentLoadingTask = pdfjs.getDocument(source)
if (passwordCallback) {
documentLoadingTask.onPassword = passwordCallback
public async readPdf(buffer: Buffer) {
const pdfDoc = await PDFDocument.load(buffer)
return {
numPages: pdfDoc.getPageCount()
}
const document = await documentLoadingTask.promise
return document
}
public async sendPreprocessProgress(sourceId: string, progress: number): Promise<void> {
@@ -39,7 +39,7 @@ export default class Doc2xPreprocessProvider extends BasePreprocessProvider {
private async validateFile(filePath: string): Promise<void> {
const pdfBuffer = await fs.promises.readFile(filePath)
const doc = await this.readPdf(new Uint8Array(pdfBuffer))
const doc = await this.readPdf(pdfBuffer)
// 文件页数小于1000页
if (doc.numPages >= 1000) {
@@ -115,7 +115,7 @@ export default class MineruPreprocessProvider extends BasePreprocessProvider {
private async validateFile(filePath: string): Promise<void> {
const pdfBuffer = await fs.promises.readFile(filePath)
const doc = await this.readPdf(new Uint8Array(pdfBuffer))
const doc = await this.readPdf(pdfBuffer)
// 文件页数小于600页
if (doc.numPages >= 600) {
@@ -178,7 +178,7 @@ export default class MineruPreprocessProvider extends BasePreprocessProvider {
try {
// 下载ZIP文件
const response = await axios.get(zipUrl, { responseType: 'arraybuffer' })
fs.writeFileSync(zipPath, response.data)
fs.writeFileSync(zipPath, Buffer.from(response.data))
logger.info(`Downloaded ZIP file: ${zipPath}`)
// 确保提取目录存在