id-scanner-lib
Version:
Browser-based ID card, QR code, and face recognition scanner with liveness detection
111 lines (110 loc) • 2.99 kB
TypeScript
/**
* @file OCR处理器
* @description 提供身份证OCR识别功能
* @module modules/id-card/ocr-processor
*/
/// <reference path="../../../../src/types/tesseract.d.ts" />
import { IDCardInfo } from './types';
import { LoggerMessage } from "tesseract.js";
import { Disposable } from "../../utils/resource-manager";
type LoggerFunction = ((message: string | LoggerMessage) => void) | undefined;
/**
* OCR处理器选项接口
*/
export interface OCRProcessorOptions {
language?: string;
useWorker?: boolean;
maxImageDimension?: number;
timeout?: number;
brightness?: number;
contrast?: number;
onProgress?: (progress: number) => void;
enableCache?: boolean;
cacheSize?: number;
logger?: LoggerFunction;
}
/**
* OCR处理器类
*
* 使用Tesseract.js实现对身份证图像的OCR文字识别和信息提取功能
*
* @example
* ```typescript
* // 创建OCR处理器
* const ocrProcessor = new OCRProcessor();
*
* // 初始化OCR引擎
* await ocrProcessor.initialize();
*
* // 处理身份证图像
* const idInfo = await ocrProcessor.processIDCard(idCardImageData);
* console.log('识别到的身份证信息:', idInfo);
*
* // 使用结束后释放资源
* await ocrProcessor.terminate();
* ```
*/
export declare class OCRProcessor implements Disposable {
private worker;
private ocrWorker;
private initialized;
private resultCache;
private options;
/**
* 创建OCR处理器实例
*
* @param options OCR处理器选项
*/
constructor(options?: OCRProcessorOptions);
/**
* 初始化OCR引擎
*
* 加载Tesseract OCR引擎和中文简体语言包,并设置适合身份证识别的参数
*
* @returns {Promise<void>} 初始化完成的Promise
*/
initialize(): Promise<void>;
/**
* 处理身份证图像并提取信息
* @param imageData 要处理的身份证图像数据
* @returns 提取的身份证信息
*/
processIDCard(imageData: ImageData): Promise<IDCardInfo>;
/**
* 解析身份证文本信息
*
* 从OCR识别到的文本中提取结构化的身份证信息
*
* @private
* @param {string} text - OCR识别到的文本
* @returns {IDCardInfo} 提取到的身份证信息对象
*/
/**
* 格式化日期字符串为标准格式 (YYYY-MM-DD)
* @param dateStr 原始日期字符串
* @returns 格式化后的日期字符串
*/
private formatDateString;
/**
* 验证身份证号是否符合规则
* @param idNumber 身份证号
* @returns 是否有效
*/
private validateIDNumber;
private parseIDCardText;
/**
* 清除结果缓存
*/
clearCache(): void;
/**
* 终止OCR引擎并释放资源
*
* @returns {Promise<void>} 终止完成的Promise
*/
terminate(): Promise<void>;
/**
* 释放资源
*/
dispose(): Promise<void>;
}
export {};