Skip to content

API 参考

ID-Scanner-Lib 提供了一套完整的 API,用于身份证识别、二维码扫描和人脸识别。本页面提供 API 的概述,详细信息请参阅各模块的专门文档。

核心类

IDScanner

IDScanner 是库的主要入口点,负责协调不同的功能模块。

typescript
import { IDScanner, LogLevel } from 'id-scanner-lib';

// 创建扫描器实例
const scanner = new IDScanner({
  logLevel: LogLevel.INFO,
  enableIDCard: true,
  enableQRCode: true,
  enableFace: true
});

// 初始化
await scanner.initialize();

// 使用完毕后释放资源
await scanner.dispose();

详细信息请参阅 IDScanner API

功能模块

IDCardModule

IDCardModule 提供身份证识别功能,包括检测、OCR 和信息提取。

typescript
// 获取模块实例
const idCardModule = scanner.getIDCardModule();

// 识别身份证
const result = await idCardModule.recognize(imageElement);
if (result.isSuccess()) {
  const idCardInfo = result.data;
  console.log('身份证信息:', idCardInfo);
}

详细信息请参阅 IDCardModule API

QRCodeModule

QRCodeModule 提供二维码和条形码扫描功能。

typescript
// 获取模块实例
const qrCodeModule = scanner.getQRCodeModule();

// 从图像扫描二维码
const result = await qrCodeModule.scan(imageElement);
if (result.isSuccess()) {
  console.log('二维码内容:', result.data.data);
}

// 启动实时扫描
await qrCodeModule.startScan(videoElement);
qrCodeModule.on('qrcode:detected', (result) => {
  console.log('扫描到二维码:', result.data);
});

详细信息请参阅 QRCodeModule API

FaceModule

FaceModule 提供人脸检测、活体检测和人脸比对功能。

typescript
// 获取模块实例
const faceModule = scanner.getFaceModule();

// 检测人脸
const result = await faceModule.detectFace(imageElement);
if (result.isSuccess()) {
  console.log('人脸检测结果:', result.data);
}

// 进行人脸比对
const comparisonResult = await faceModule.compareFaces(faceImage1, faceImage2);
console.log('相似度:', comparisonResult.data.similarity);

详细信息请参阅 FaceModule API

核心基础设施

模块管理器

ModuleManager 负责管理所有功能模块的生命周期。

typescript
import { ModuleManager } from 'id-scanner-lib';

// 获取模块管理器实例
const moduleManager = ModuleManager.getInstance();

// 注册自定义模块
moduleManager.register(myCustomModule);

// 获取已注册的模块
const idCardModule = moduleManager.getModule('id-card');

// 初始化所有模块
await moduleManager.initialize();

配置管理器

ConfigManager 提供全局配置管理功能。

typescript
import { ConfigManager } from 'id-scanner-lib';

// 获取配置管理器实例
const config = ConfigManager.getInstance();

// 设置配置
config.set('camera.resolution.width', 1280);

// 获取配置
const width = config.get('camera.resolution.width');

// 监听配置变更
config.onConfigChange('camera.resolution', (newValue, oldValue) => {
  console.log('摄像头分辨率已更改:', newValue);
});

日志系统

Logger 提供多级别的日志记录功能。

typescript
import { Logger, LogLevel } from 'id-scanner-lib';

// 获取日志实例
const logger = Logger.getInstance();

// 设置日志级别
logger.setLevel(LogLevel.DEBUG);

// 记录不同级别的日志
logger.debug('组件名称', '调试信息');
logger.info('组件名称', '信息消息');
logger.warn('组件名称', '警告信息');
logger.error('组件名称', '错误信息', error);

结果类

Result 封装操作的结果,提供统一的成功/失败处理方式。

typescript
import { Result } from 'id-scanner-lib';

// 创建成功结果
const successResult = Result.success({ data: 'some data' });

// 创建失败结果
const failureResult = Result.failure(new Error('操作失败'));

// 使用结果
function processResult(result) {
  result
    .onSuccess(data => {
      console.log('操作成功:', data);
    })
    .onFailure(error => {
      console.error('操作失败:', error.message);
    })
    .onFinally(() => {
      console.log('处理完成');
    });
}

错误处理

ID-Scanner-Lib 提供了完善的错误处理机制,所有特定错误都继承自 IDScannerError 基类。

typescript
import { IDScannerError, CameraAccessError } from 'id-scanner-lib';

try {
  await qrCodeModule.startScan();
} catch (error) {
  if (error instanceof CameraAccessError) {
    console.error('摄像头访问错误:', error.message);
  } else if (error instanceof IDScannerError) {
    console.error('ID扫描错误:', error.code, error.message);
  } else {
    console.error('未知错误:', error);
  }
}

详细信息请参阅 错误处理指南

类型定义

ID-Scanner-Lib 使用 TypeScript 编写,提供完整的类型定义。以下是主要的类型接口:

全局选项

typescript
interface IDScannerOptions {
  logLevel?: LogLevel;
  enableIDCard?: boolean;
  enableQRCode?: boolean;
  enableFace?: boolean;
  idCard?: IDCardModuleOptions;
  qrCode?: QRCodeModuleOptions;
  face?: FaceModuleOptions;
}

身份证模块类型

typescript
interface IDCardInfo {
  type: IDCardType;
  edge?: IDCardEdge;
  name?: string;
  gender?: string;
  ethnicity?: string;
  birthDate?: string;
  address?: string;
  idNumber?: string;
  issueAuthority?: string;
  validFrom?: string;
  validTo?: string;
  photoRegion?: Rect;
  image?: ImageData;
  confidence?: number;
  antiFake?: {
    passed: boolean;
    score: number;
    features?: Record<string, boolean>;
  };
}

enum IDCardType {
  FRONT = 'front',
  BACK = 'back',
  FIRST_GENERATION = 'first_generation',
  TEMPORARY = 'temporary',
  FOREIGN_PERMANENT = 'foreign_permanent',
  HMT_RESIDENT = 'hmt_resident',
  UNKNOWN = 'unknown'
}

二维码模块类型

typescript
interface QRCodeResult {
  data: string;
  type?: string;
  boundingBox: {
    topLeft: Point;
    topRight: Point;
    bottomRight: Point;
    bottomLeft: Point;
  };
  center: Point;
  image?: ImageData;
  confidence?: number;
}

人脸模块类型

typescript
interface FaceDetectionResult {
  boundingBox: Rect;
  landmarks?: {
    leftEye: Point;
    rightEye: Point;
    nose: Point;
    mouth: Point;
    chin: Point;
  };
  angle?: {
    pitch: number;
    yaw: number;
    roll: number;
  };
  attributes?: {
    gender?: { value: 'male' | 'female'; confidence: number };
    age?: { value: number; confidence: number };
    emotion?: { value: string; confidence: number };
  };
  liveness?: {
    passed: boolean;
    score: number;
    type: 'blink' | 'mouth' | 'head' | 'passive';
  };
  image?: ImageData;
  confidence: number;
}

事件系统

各模块通过继承 EventEmitter 提供了标准的事件系统:

typescript
// 监听身份证识别事件
idCardModule.on('idcard:detected', (result) => {
  console.log('检测到身份证:', result);
});

// 监听二维码扫描事件
qrCodeModule.on('qrcode:detected', (result) => {
  console.log('扫描到二维码:', result);
});

// 监听人脸检测事件
faceModule.on('face:detected', (result) => {
  console.log('检测到人脸:', result);
});

// 监听模块初始化事件
moduleManager.on('module:initialized', (data) => {
  console.log(`模块 ${data.name} 已初始化`);
});

详细的事件列表请参阅各模块的API文档。

配置选项

ID-Scanner-Lib 提供了丰富的配置选项,用于自定义各模块的行为。详细信息请参阅 配置选项

进阶用法

Web Worker 支持

ID-Scanner-Lib 支持在 Web Worker 中运行计算密集型任务,提高性能:

typescript
// 在创建模块时启用 Web Worker
const scanner = new IDScanner({
  idCard: {
    ocr: {
      useWorker: true
    }
  }
});

详细信息请参阅 Web Worker 指南

性能优化

ID-Scanner-Lib 提供了多种性能优化选项:

typescript
// 配置性能相关选项
const scanner = new IDScanner({
  idCard: {
    ocr: {
      maxImageDimension: 1280 // 限制处理图像的最大尺寸
    }
  }
});

详细信息请参阅 性能优化指南

基于 MIT 许可发布