import type { PersonalOcrProgress } from '@/types/api'; export const ocrProgressPercent = (ocr?: PersonalOcrProgress) => { if (!ocr?.required || ocr.totalPages <= 0) return 0; return Math.min(100, Math.max(0, Math.round((ocr.processedPages / ocr.totalPages) * 100))); }; export const ocrProgressText = (ocr?: PersonalOcrProgress) => { if (!ocr?.required) return ''; if (ocr.processedPages < ocr.totalPages && ['PENDING', 'RUNNING', 'RETRY'].includes(ocr.status)) { return `正在识别扫描 PDF:${ocr.processedPages}/${ocr.totalPages} 页`; } if (ocr.failedPages > 0 && ocr.successPages > 0) return `已收录,${ocr.failedPages} 页识别失败`; if (ocr.failedPages > 0) return `${ocr.failedPages} 页识别失败`; if (ocr.totalPages > 0) return `扫描 PDF 已识别:${ocr.successPages}/${ocr.totalPages} 页`; return '正在准备扫描 PDF 识别'; }; export const isOcrActive = (ocr?: PersonalOcrProgress) => Boolean(ocr?.required && ['PENDING', 'RUNNING', 'RETRY'].includes(ocr.status));