id-scanner-lib
Version:
Browser-based ID card, QR code, and face recognition scanner with liveness detection
170 lines (138 loc) • 3.21 kB
text/typescript
/**
* @file 二维码模块类型定义
* @description 二维码模块相关的类型和接口定义
* @module modules/qrcode/types
*/
/**
* 支持的条码格式
*/
export enum BarcodeFormat {
/** QR码 */
QR_CODE = 'qrcode',
/** Code 128 */
CODE_128 = 'code_128',
/** Code 39 */
CODE_39 = 'code_39',
/** Code 93 */
CODE_93 = 'code_93',
/** EAN-13 */
EAN_13 = 'ean_13',
/** EAN-8 */
EAN_8 = 'ean_8',
/** UPC-A */
UPC_A = 'upc_a',
/** UPC-E */
UPC_E = 'upc_e',
/** ITF */
ITF = 'itf',
/** PDF417 */
PDF_417 = 'pdf_417',
/** DataMatrix */
DATA_MATRIX = 'data_matrix',
/** Aztec */
AZTEC = 'aztec',
/** Codabar */
CODABAR = 'codabar',
/** Industrial 2 of 5 */
INDUSTRIAL_2_OF_5 = 'industrial_2_of_5',
/** QR Code Micro */
QR_CODE_MICRO = 'qr_code_micro'
}
/**
* 默认支持的格式
*/
export const DEFAULT_FORMATS = [
BarcodeFormat.QR_CODE,
BarcodeFormat.CODE_128,
BarcodeFormat.CODE_39,
BarcodeFormat.EAN_13
];
/**
* 二维码/条码检测结果
*/
export interface QRCodeResult {
/** 条码内容 */
data: string;
/** 条码格式 */
barcodeFormat: BarcodeFormat;
/** 条码类型 (兼容旧版) */
type?: string;
/** 条码边界框 */
boundingBox: {
topLeft: { x: number; y: number };
topRight: { x: number; y: number };
bottomRight: { x: number; y: number };
bottomLeft: { x: number; y: number };
};
/** 条码中心点 */
center: { x: number; y: number };
/** 原始图像 */
image?: ImageData;
/** 置信度 */
confidence?: number;
/** 原始数据 (解码后的字节) */
rawBytes?: Uint8Array;
/** 错误校正级别 (QR码) */
errorCorrectionLevel?: 'L' | 'M' | 'Q' | 'H';
}
/**
* 二维码模块选项
*/
export interface QRCodeModuleOptions {
/** 是否启用模块 */
enabled?: boolean;
/** 扫描配置 */
scanner?: {
/** 最小置信度 */
minConfidence?: number;
/** 是否尝试多次扫描 */
tryMultipleScan?: boolean;
/** 是否返回原始图像 */
returnImage?: boolean;
/** 扫描频率 (ms) */
scanFrequency?: number;
/** 启用扫描的格式 */
formats?: BarcodeFormat[];
};
/** 图像处理配置 */
imageProcess?: {
/** 是否进行预处理 */
preprocess?: boolean;
/** 是否增强对比度 */
enhanceContrast?: boolean;
/** 二值化阈值 */
threshold?: number;
/** 是否进行降噪 */
denoise?: boolean;
};
}
/**
* 实时扫描选项
*/
export interface RealtimeScanOptions {
/** 视频元素 */
video: HTMLVideoElement;
/** 扫描回调 */
onResult: (result: QRCodeResult) => void;
/** 错误回调 */
onError?: (error: Error) => void;
/** 扫描频率 (ms) */
frequency?: number;
/** 是否连续扫描 */
continuous?: boolean;
}
/**
* 扫描统计信息
*/
export interface ScanStats {
/** 总扫描次数 */
totalScans: number;
/** 成功次数 */
successfulScans: number;
/** 失败次数 */
failedScans: number;
/** 平均处理时间 (ms) */
avgProcessingTime: number;
/** 成功率 */
successRate: number;
}