id-scanner-lib 1.3.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +55 -460
  2. package/dist/id-scanner-lib.esm.js +4641 -0
  3. package/dist/id-scanner-lib.esm.js.map +1 -0
  4. package/dist/id-scanner-lib.js +14755 -0
  5. package/dist/id-scanner-lib.js.map +1 -0
  6. package/dist/types/core/base-module.d.ts +44 -0
  7. package/dist/types/core/camera-manager.d.ts +258 -0
  8. package/dist/types/core/config.d.ts +88 -0
  9. package/dist/types/core/errors.d.ts +111 -0
  10. package/dist/types/core/event-emitter.d.ts +55 -0
  11. package/dist/types/core/logger.d.ts +277 -0
  12. package/dist/types/core/module-manager.d.ts +78 -0
  13. package/dist/types/core/plugin-manager.d.ts +158 -0
  14. package/dist/types/core/resource-manager.d.ts +246 -0
  15. package/dist/types/core/result.d.ts +83 -0
  16. package/dist/types/core/scanner-factory.d.ts +93 -0
  17. package/dist/types/index.bundle.d.ts +1303 -0
  18. package/dist/types/index.d.ts +86 -0
  19. package/dist/types/interfaces/external-types.d.ts +174 -0
  20. package/dist/types/interfaces/face-detection.d.ts +293 -0
  21. package/dist/types/interfaces/scanner-module.d.ts +280 -0
  22. package/dist/types/modules/face/face-detector.d.ts +170 -0
  23. package/dist/types/modules/face/index.d.ts +56 -0
  24. package/dist/types/modules/face/liveness-detector.d.ts +177 -0
  25. package/dist/types/modules/face/types.d.ts +136 -0
  26. package/dist/types/modules/id-card/anti-fake-detector.d.ts +170 -0
  27. package/dist/types/modules/id-card/id-card-detector.d.ts +131 -0
  28. package/dist/types/modules/id-card/index.d.ts +89 -0
  29. package/dist/types/modules/id-card/ocr-processor.d.ts +110 -0
  30. package/dist/types/modules/id-card/ocr-worker.d.ts +31 -0
  31. package/dist/types/modules/id-card/types.d.ts +181 -0
  32. package/dist/types/modules/qrcode/index.d.ts +51 -0
  33. package/dist/types/modules/qrcode/qr-code-scanner.d.ts +64 -0
  34. package/dist/types/modules/qrcode/types.d.ts +67 -0
  35. package/dist/types/utils/camera.d.ts +81 -0
  36. package/dist/types/utils/image-processing.d.ts +176 -0
  37. package/dist/types/utils/index.d.ts +175 -0
  38. package/dist/types/utils/performance.d.ts +81 -0
  39. package/dist/types/utils/resource-manager.d.ts +53 -0
  40. package/dist/types/utils/types.d.ts +166 -0
  41. package/dist/types/utils/worker.d.ts +52 -0
  42. package/dist/types/version.d.ts +7 -0
  43. package/package.json +76 -77
  44. package/src/core/base-module.ts +78 -0
  45. package/src/core/camera-manager.ts +798 -0
  46. package/src/core/config.ts +268 -0
  47. package/src/core/errors.ts +174 -0
  48. package/src/core/event-emitter.ts +110 -0
  49. package/src/core/logger.ts +549 -0
  50. package/src/core/module-manager.ts +165 -0
  51. package/src/core/plugin-manager.ts +429 -0
  52. package/src/core/resource-manager.ts +762 -0
  53. package/src/core/result.ts +163 -0
  54. package/src/core/scanner-factory.ts +237 -0
  55. package/src/index.ts +113 -936
  56. package/src/interfaces/external-types.ts +200 -0
  57. package/src/interfaces/face-detection.ts +309 -0
  58. package/src/interfaces/scanner-module.ts +384 -0
  59. package/src/modules/face/face-detector.ts +931 -0
  60. package/src/modules/face/index.ts +208 -0
  61. package/src/modules/face/liveness-detector.ts +908 -0
  62. package/src/modules/face/types.ts +133 -0
  63. package/src/modules/id-card/anti-fake-detector.ts +732 -0
  64. package/src/modules/id-card/id-card-detector.ts +474 -0
  65. package/src/modules/id-card/index.ts +425 -0
  66. package/src/modules/id-card/ocr-processor.ts +538 -0
  67. package/src/modules/id-card/ocr-worker.ts +259 -0
  68. package/src/modules/id-card/types.ts +178 -0
  69. package/src/modules/qrcode/index.ts +175 -0
  70. package/src/modules/qrcode/qr-code-scanner.ts +230 -0
  71. package/src/modules/qrcode/types.ts +65 -0
  72. package/src/types/browser-image-compression.d.ts +19 -0
  73. package/src/types/tesseract.d.ts +280 -0
  74. package/src/utils/image-processing.ts +432 -49
  75. package/src/utils/index.ts +426 -0
  76. package/src/utils/performance.ts +168 -131
  77. package/src/utils/resource-manager.ts +65 -146
  78. package/src/utils/types.ts +90 -2
  79. package/src/utils/worker.ts +123 -84
  80. package/src/version.ts +11 -0
  81. package/tools/scaffold.js +543 -0
  82. package/dist/id-scanner-core.esm.js +0 -11076
  83. package/dist/id-scanner-core.esm.js.map +0 -1
  84. package/dist/id-scanner-core.js +0 -11088
  85. package/dist/id-scanner-core.js.map +0 -1
  86. package/dist/id-scanner-core.min.js +0 -1
  87. package/dist/id-scanner-core.min.js.map +0 -1
  88. package/dist/id-scanner-ocr.esm.js +0 -1802
  89. package/dist/id-scanner-ocr.esm.js.map +0 -1
  90. package/dist/id-scanner-ocr.js +0 -1811
  91. package/dist/id-scanner-ocr.js.map +0 -1
  92. package/dist/id-scanner-ocr.min.js +0 -1
  93. package/dist/id-scanner-ocr.min.js.map +0 -1
  94. package/dist/id-scanner-qr.esm.js +0 -1023
  95. package/dist/id-scanner-qr.esm.js.map +0 -1
  96. package/dist/id-scanner-qr.js +0 -1032
  97. package/dist/id-scanner-qr.js.map +0 -1
  98. package/dist/id-scanner-qr.min.js +0 -1
  99. package/dist/id-scanner-qr.min.js.map +0 -1
  100. package/dist/id-scanner.js +0 -3740
  101. package/dist/id-scanner.js.map +0 -1
  102. package/dist/id-scanner.min.js +0 -1
  103. package/dist/id-scanner.min.js.map +0 -1
  104. package/src/core.ts +0 -138
  105. package/src/demo/demo.ts +0 -204
  106. package/src/id-recognition/anti-fake-detector.ts +0 -317
  107. package/src/id-recognition/data-extractor.ts +0 -262
  108. package/src/id-recognition/id-detector.ts +0 -363
  109. package/src/id-recognition/ocr-processor.ts +0 -334
  110. package/src/id-recognition/ocr-worker.ts +0 -156
  111. package/src/index-umd.ts +0 -477
  112. package/src/ocr-module.ts +0 -187
  113. package/src/qr-module.ts +0 -179
  114. package/src/scanner/barcode-scanner.ts +0 -251
  115. package/src/scanner/qr-scanner.ts +0 -167
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @file 人脸模块类型定义
3
+ * @description 人脸模块相关的类型和接口定义
4
+ * @module modules/face/types
5
+ */
6
+ /**
7
+ * 人脸检测结果
8
+ */
9
+ export interface FaceDetectionResult {
10
+ /** 人脸边界框 */
11
+ boundingBox: {
12
+ x: number;
13
+ y: number;
14
+ width: number;
15
+ height: number;
16
+ };
17
+ /** 人脸特征点 */
18
+ landmarks?: {
19
+ /** 左眼 */
20
+ leftEye: {
21
+ x: number;
22
+ y: number;
23
+ };
24
+ /** 右眼 */
25
+ rightEye: {
26
+ x: number;
27
+ y: number;
28
+ };
29
+ /** 鼻子 */
30
+ nose: {
31
+ x: number;
32
+ y: number;
33
+ };
34
+ /** 嘴巴 */
35
+ mouth: {
36
+ x: number;
37
+ y: number;
38
+ };
39
+ /** 下巴 */
40
+ chin: {
41
+ x: number;
42
+ y: number;
43
+ };
44
+ };
45
+ /** 人脸角度 */
46
+ angle?: {
47
+ /** 俯仰角 */
48
+ pitch: number;
49
+ /** 偏航角 */
50
+ yaw: number;
51
+ /** 翻滚角 */
52
+ roll: number;
53
+ };
54
+ /** 人脸属性 */
55
+ attributes?: {
56
+ /** 性别 */
57
+ gender?: {
58
+ /** 性别值 */
59
+ value: 'male' | 'female';
60
+ /** 置信度 */
61
+ confidence: number;
62
+ };
63
+ /** 年龄 */
64
+ age?: {
65
+ /** 年龄值 */
66
+ value: number;
67
+ /** 置信度 */
68
+ confidence: number;
69
+ };
70
+ /** 表情 */
71
+ emotion?: {
72
+ /** 表情值 */
73
+ value: 'neutral' | 'happiness' | 'surprise' | 'sadness' | 'anger' | 'disgust' | 'fear' | 'contempt';
74
+ /** 置信度 */
75
+ confidence: number;
76
+ };
77
+ };
78
+ /** 活体检测结果 */
79
+ liveness?: {
80
+ /** 是否通过活体检测 */
81
+ passed: boolean;
82
+ /** 活体检测分数 */
83
+ score: number;
84
+ /** 活体检测类型 */
85
+ type: 'blink' | 'mouth' | 'head' | 'passive';
86
+ };
87
+ /** 人脸图像 */
88
+ image?: ImageData;
89
+ /** 置信度 */
90
+ confidence: number;
91
+ }
92
+ /**
93
+ * 人脸比对结果
94
+ */
95
+ export interface FaceComparisonResult {
96
+ /** 是否匹配 */
97
+ isMatch: boolean;
98
+ /** 相似度分数 */
99
+ similarity: number;
100
+ /** 置信度 */
101
+ confidence: number;
102
+ }
103
+ /**
104
+ * 人脸模块配置选项
105
+ */
106
+ export interface FaceModuleOptions {
107
+ /** 是否启用模块 */
108
+ enabled?: boolean;
109
+ /** 检测器配置 */
110
+ detector?: {
111
+ /** 最小置信度 */
112
+ minConfidence?: number;
113
+ /** 是否检测特征点 */
114
+ detectLandmarks?: boolean;
115
+ /** 是否检测属性 */
116
+ detectAttributes?: boolean;
117
+ /** 是否返回人脸图像 */
118
+ returnFaceImage?: boolean;
119
+ };
120
+ /** 活体检测配置 */
121
+ liveness?: {
122
+ /** 是否启用活体检测 */
123
+ enabled?: boolean;
124
+ /** 活体检测类型 */
125
+ type?: 'blink' | 'mouth' | 'head' | 'passive';
126
+ /** 最小置信度 */
127
+ minConfidence?: number;
128
+ /** 检测超时时间(毫秒) */
129
+ timeout?: number;
130
+ };
131
+ /** 人脸比对配置 */
132
+ comparison?: {
133
+ /** 最小相似度阈值 */
134
+ minSimilarity?: number;
135
+ };
136
+ }
@@ -0,0 +1,170 @@
1
+ /**
2
+ * @file 身份证防伪检测模块
3
+ * @description 提供身份证防伪特征识别功能,区分真假身份证
4
+ * @module AntiFakeDetector
5
+ * @version 1.3.2
6
+ */
7
+ import { Disposable } from "../../utils/resource-manager";
8
+ /**
9
+ * 防伪检测结果
10
+ */
11
+ export interface AntiFakeDetectionResult {
12
+ isAuthentic: boolean;
13
+ confidence: number;
14
+ detectedFeatures: string[];
15
+ message: string;
16
+ processingTime?: number;
17
+ }
18
+ /**
19
+ * 防伪检测器配置选项
20
+ */
21
+ export interface AntiFakeDetectorOptions {
22
+ sensitivity?: number;
23
+ enableCache?: boolean;
24
+ cacheSize?: number;
25
+ logger?: (message: string) => void;
26
+ }
27
+ /**
28
+ * 身份证防伪特征检测器
29
+ *
30
+ * 基于图像分析技术检测身份证中的多种防伪特征,包括:
31
+ * 1. 荧光油墨特征
32
+ * 2. 微缩文字
33
+ * 3. 光变图案
34
+ * 4. 雕刻凹印
35
+ * 5. 隐形图案
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // 创建防伪检测器
40
+ * const antiFakeDetector = new AntiFakeDetector({
41
+ * sensitivity: 0.8,
42
+ * enableCache: true
43
+ * });
44
+ *
45
+ * // 分析身份证图像
46
+ * const imageData = await ImageProcessor.createImageDataFromFile(idCardFile);
47
+ * const result = await antiFakeDetector.detect(imageData);
48
+ *
49
+ * if (result.isAuthentic) {
50
+ * console.log('身份证真实,检测到防伪特征:', result.detectedFeatures);
51
+ * } else {
52
+ * console.log('警告!', result.message);
53
+ * }
54
+ * ```
55
+ */
56
+ export declare class AntiFakeDetector implements Disposable {
57
+ private options;
58
+ private resultCache;
59
+ /**
60
+ * 创建身份证防伪检测器实例
61
+ *
62
+ * @param options 防伪检测器配置
63
+ */
64
+ constructor(options?: AntiFakeDetectorOptions);
65
+ /**
66
+ * 检测身份证图像的防伪特征
67
+ *
68
+ * @param imageData 身份证图像数据
69
+ * @returns 防伪检测结果
70
+ */
71
+ detect(imageData: ImageData): Promise<AntiFakeDetectionResult>;
72
+ /**
73
+ * 增强身份证图像中的防伪特征
74
+ *
75
+ * @param imageData 原始图像数据
76
+ * @returns 增强后的图像数据
77
+ * @private
78
+ */
79
+ private enhanceAntiFakeFeatures;
80
+ /**
81
+ * 检测荧光油墨特征
82
+ *
83
+ * @param imageData 图像数据
84
+ * @returns [特征名称, 是否检测到, 置信度]
85
+ * @private
86
+ */
87
+ private detectUVInkFeatures;
88
+ /**
89
+ * 从图像数据中提取指定颜色通道
90
+ * @param imageData 原始图像数据
91
+ * @param channel 通道名称(red, green, blue)
92
+ */
93
+ private extractColorChannel;
94
+ /**
95
+ * 分析颜色通道分布特征
96
+ * @param channelData 颜色通道数据
97
+ */
98
+ private analyzeChannelDistribution;
99
+ /**
100
+ * 平滑直方图以减少噪声
101
+ */
102
+ private smoothHistogram;
103
+ /**
104
+ * 检测图像中的荧光颜色模式
105
+ */
106
+ private detectUVColorPattern;
107
+ /**
108
+ * 分析头像区域是否存在荧光特征
109
+ * 这个方法用于检测伪造的身份证,因为头像区域不应该有荧光特征
110
+ */
111
+ private analyzePortraitArea;
112
+ /**
113
+ * 检测微缩文字
114
+ *
115
+ * @param imageData 图像数据
116
+ * @returns [特征名称, 是否检测到, 置信度]
117
+ * @private
118
+ */
119
+ private detectMicroText;
120
+ /**
121
+ * 分析边缘图像的频率特征
122
+ * 微缩文字呈现高频的边缘过渡
123
+ */
124
+ private analyzeFrequencyFeatures;
125
+ /**
126
+ * 检测微缩文字区域
127
+ * 微缩文字通常呈现呈现规则的组合排列
128
+ */
129
+ private detectMicroTextRegions;
130
+ /**
131
+ * 深度优先搜索连通的边缘区域
132
+ */
133
+ private floodFillEdge;
134
+ /**
135
+ * 获取点集的外接矩形
136
+ */
137
+ private getBoundingBox;
138
+ /**
139
+ * 检测光变图案
140
+ *
141
+ * @param imageData 图像数据
142
+ * @returns [特征名称, 是否检测到, 置信度]
143
+ * @private
144
+ */
145
+ private detectOpticalVariable;
146
+ /**
147
+ * 检测凹印雕刻特征
148
+ *
149
+ * @param imageData 图像数据
150
+ * @returns [特征名称, 是否检测到, 置信度]
151
+ * @private
152
+ */
153
+ private detectIntaglioPrinting;
154
+ /**
155
+ * 检测隐形图案(幽灵图像)
156
+ *
157
+ * @param imageData 图像数据
158
+ * @returns [特征名称, 是否检测到, 置信度]
159
+ * @private
160
+ */
161
+ private detectGhostImage;
162
+ /**
163
+ * 清除结果缓存
164
+ */
165
+ clearCache(): void;
166
+ /**
167
+ * 释放资源
168
+ */
169
+ dispose(): void;
170
+ }
@@ -0,0 +1,131 @@
1
+ /**
2
+ * @file 身份证检测器
3
+ * @description 提供身份证检测和解析功能
4
+ * @module modules/id-card/id-card-detector
5
+ */
6
+ import { EventEmitter } from '../../core/event-emitter';
7
+ import { Result } from '../../core/result';
8
+ import { IDCardInfo } from './types';
9
+ /**
10
+ * 身份证检测器配置选项
11
+ */
12
+ export interface IDCardDetectorOptions {
13
+ /** 是否启用 */
14
+ enabled?: boolean;
15
+ /** 最小置信度 */
16
+ minConfidence?: number;
17
+ /** 是否检测身份证类型 */
18
+ detectType?: boolean;
19
+ /** 是否检测边缘 */
20
+ detectEdge?: boolean;
21
+ /** 是否启用边缘检测(用于更精确的边缘检测) */
22
+ enableEdgeDetection?: boolean;
23
+ /** 是否启用OCR识别 */
24
+ enableOCR?: boolean;
25
+ /** 是否裁剪并校正图像 */
26
+ cropAndAlign?: boolean;
27
+ /** 是否启用防伪检测 */
28
+ enableAntiFake?: boolean;
29
+ /** 是否返回原始图像 */
30
+ returnImage?: boolean;
31
+ /** 模型路径 */
32
+ modelPath?: string;
33
+ }
34
+ /**
35
+ * 图像处理配置选项
36
+ */
37
+ export interface ImageProcessOptions {
38
+ /** 是否进行预处理 */
39
+ preprocess?: boolean;
40
+ /** 是否校正图像 */
41
+ correctPerspective?: boolean;
42
+ /** 是否增强图像 */
43
+ enhance?: boolean;
44
+ /** 是否去噪 */
45
+ denoise?: boolean;
46
+ /** 是否二值化 */
47
+ binarize?: boolean;
48
+ }
49
+ /**
50
+ * 身份证检测器类
51
+ */
52
+ export declare class IDCardDetector extends EventEmitter {
53
+ private options;
54
+ private logger;
55
+ private initialized;
56
+ private models;
57
+ /**
58
+ * 构造函数
59
+ * @param options 配置选项
60
+ */
61
+ constructor(options?: IDCardDetectorOptions);
62
+ /**
63
+ * 初始化检测器
64
+ */
65
+ initialize(): Promise<void>;
66
+ /**
67
+ * 加载检测模型
68
+ * @private
69
+ */
70
+ private loadDetectionModel;
71
+ /**
72
+ * 加载OCR模型
73
+ * @private
74
+ */
75
+ private loadOCRModel;
76
+ /**
77
+ * 加载防伪模型
78
+ * @private
79
+ */
80
+ private loadAntiFakeModel;
81
+ /**
82
+ * 处理图像
83
+ * @param image 图像源(可以是ImageData、HTMLImageElement、HTMLCanvasElement等)
84
+ * @param processOptions 图像处理选项
85
+ * @returns 处理结果
86
+ */
87
+ processImage(image: ImageData | HTMLImageElement | HTMLCanvasElement, processOptions?: ImageProcessOptions): Promise<Result<IDCardInfo>>;
88
+ /**
89
+ * 预处理图像
90
+ * @param image 图像源
91
+ * @param options 处理选项
92
+ * @returns 处理后的图像
93
+ * @private
94
+ */
95
+ private preprocessImage;
96
+ /**
97
+ * 检测身份证
98
+ * @param image 图像数据
99
+ * @returns 检测结果
100
+ * @private
101
+ */
102
+ private detectIDCard;
103
+ /**
104
+ * 裁剪并校正图像
105
+ * @param image 图像数据
106
+ * @param edge 边缘信息
107
+ * @returns 校正后的图像
108
+ * @private
109
+ */
110
+ private cropAndAlign;
111
+ /**
112
+ * 识别文字
113
+ * @param image 图像数据
114
+ * @param type 身份证类型
115
+ * @returns 识别结果
116
+ * @private
117
+ */
118
+ private recognizeText;
119
+ /**
120
+ * 检测防伪特征
121
+ * @param image 图像数据
122
+ * @param detectionResult 检测结果
123
+ * @returns 防伪检测结果
124
+ * @private
125
+ */
126
+ private detectAntiFake;
127
+ /**
128
+ * 释放资源
129
+ */
130
+ dispose(): void;
131
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @file 身份证模块入口
3
+ * @description 提供身份证识别和验证功能的模块入口
4
+ * @module modules/id-card
5
+ */
6
+ import { BaseModule } from '../../core/base-module';
7
+ import { IDCardInfo, IDCardType, IDCardModuleOptions, IDCardVerificationResult } from './types';
8
+ /**
9
+ * 身份证识别模块
10
+ * 提供身份证检测、OCR识别、防伪检测等功能
11
+ */
12
+ export declare class IDCardModule extends BaseModule {
13
+ /** 模块名称 */
14
+ readonly name: string;
15
+ /** 模块配置 */
16
+ private options;
17
+ /** 身份证检测器 */
18
+ private detector;
19
+ /** OCR处理器 */
20
+ private ocrProcessor?;
21
+ /** 防伪检测器 */
22
+ private antiFakeDetector?;
23
+ /** 最后一次检测结果 */
24
+ private lastDetectionResult?;
25
+ /**
26
+ * 构造函数
27
+ * @param options 模块配置选项
28
+ */
29
+ constructor(options?: IDCardModuleOptions);
30
+ /**
31
+ * 初始化模块
32
+ */
33
+ initialize(): Promise<void>;
34
+ /**
35
+ * 识别身份证图像
36
+ * @param image 图像源
37
+ * @returns 识别结果
38
+ */
39
+ recognize(image: ImageData | HTMLImageElement | HTMLCanvasElement): Promise<IDCardInfo>;
40
+ /**
41
+ * 验证身份证信息
42
+ * @param idCardInfo 身份证信息
43
+ * @returns 验证结果
44
+ */
45
+ verify(idCardInfo: IDCardInfo): IDCardVerificationResult;
46
+ /**
47
+ * 获取最后一次识别结果
48
+ */
49
+ getLastRecognitionResult(): IDCardInfo | undefined;
50
+ /**
51
+ * 释放模块资源
52
+ */
53
+ dispose(): Promise<void>;
54
+ /**
55
+ * 验证身份证号码是否有效
56
+ * @param idNumber 身份证号码
57
+ * @returns 是否有效
58
+ */
59
+ private validateIDNumber;
60
+ /**
61
+ * 检查身份证是否过期
62
+ * @param validTo 有效期截止日期
63
+ * @returns 是否过期
64
+ */
65
+ private isIDCardExpired;
66
+ /**
67
+ * 检测身份证
68
+ * @param image 图像源
69
+ * @returns 检测结果
70
+ */
71
+ detect(image: ImageData | HTMLImageElement | HTMLCanvasElement): Promise<{
72
+ success: boolean;
73
+ type?: IDCardType;
74
+ confidence: number;
75
+ croppedImage?: ImageData;
76
+ }>;
77
+ /**
78
+ * 将图像转换为 ImageData
79
+ * @param image 图像源
80
+ * @returns ImageData 对象
81
+ */
82
+ private convertToImageData;
83
+ /**
84
+ * 确保模块已初始化
85
+ * @protected
86
+ */
87
+ protected ensureInitialized(): void;
88
+ }
89
+ export * from './types';
@@ -0,0 +1,110 @@
1
+ /**
2
+ * @file OCR处理器
3
+ * @description 提供身份证OCR识别功能
4
+ * @module modules/id-card/ocr-processor
5
+ */
6
+ /// <reference path="../../../../src/types/tesseract.d.ts" />
7
+ import { IDCardInfo } from './types';
8
+ import { LoggerMessage } from "tesseract.js";
9
+ import { Disposable } from "../../utils/resource-manager";
10
+ type LoggerFunction = ((message: string | LoggerMessage) => void) | undefined;
11
+ /**
12
+ * OCR处理器选项接口
13
+ */
14
+ export interface OCRProcessorOptions {
15
+ language?: string;
16
+ useWorker?: boolean;
17
+ maxImageDimension?: number;
18
+ timeout?: number;
19
+ brightness?: number;
20
+ contrast?: number;
21
+ onProgress?: (progress: number) => void;
22
+ enableCache?: boolean;
23
+ cacheSize?: number;
24
+ logger?: LoggerFunction;
25
+ }
26
+ /**
27
+ * OCR处理器类
28
+ *
29
+ * 使用Tesseract.js实现对身份证图像的OCR文字识别和信息提取功能
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * // 创建OCR处理器
34
+ * const ocrProcessor = new OCRProcessor();
35
+ *
36
+ * // 初始化OCR引擎
37
+ * await ocrProcessor.initialize();
38
+ *
39
+ * // 处理身份证图像
40
+ * const idInfo = await ocrProcessor.processIDCard(idCardImageData);
41
+ * console.log('识别到的身份证信息:', idInfo);
42
+ *
43
+ * // 使用结束后释放资源
44
+ * await ocrProcessor.terminate();
45
+ * ```
46
+ */
47
+ export declare class OCRProcessor implements Disposable {
48
+ private worker;
49
+ private ocrWorker;
50
+ private initialized;
51
+ private resultCache;
52
+ private options;
53
+ /**
54
+ * 创建OCR处理器实例
55
+ *
56
+ * @param options OCR处理器选项
57
+ */
58
+ constructor(options?: OCRProcessorOptions);
59
+ /**
60
+ * 初始化OCR引擎
61
+ *
62
+ * 加载Tesseract OCR引擎和中文简体语言包,并设置适合身份证识别的参数
63
+ *
64
+ * @returns {Promise<void>} 初始化完成的Promise
65
+ */
66
+ initialize(): Promise<void>;
67
+ /**
68
+ * 处理身份证图像并提取信息
69
+ * @param imageData 要处理的身份证图像数据
70
+ * @returns 提取的身份证信息
71
+ */
72
+ processIDCard(imageData: ImageData): Promise<IDCardInfo>;
73
+ /**
74
+ * 解析身份证文本信息
75
+ *
76
+ * 从OCR识别到的文本中提取结构化的身份证信息
77
+ *
78
+ * @private
79
+ * @param {string} text - OCR识别到的文本
80
+ * @returns {IDCardInfo} 提取到的身份证信息对象
81
+ */
82
+ /**
83
+ * 格式化日期字符串为标准格式 (YYYY-MM-DD)
84
+ * @param dateStr 原始日期字符串
85
+ * @returns 格式化后的日期字符串
86
+ */
87
+ private formatDateString;
88
+ /**
89
+ * 验证身份证号是否符合规则
90
+ * @param idNumber 身份证号
91
+ * @returns 是否有效
92
+ */
93
+ private validateIDNumber;
94
+ private parseIDCardText;
95
+ /**
96
+ * 清除结果缓存
97
+ */
98
+ clearCache(): void;
99
+ /**
100
+ * 终止OCR引擎并释放资源
101
+ *
102
+ * @returns {Promise<void>} 终止完成的Promise
103
+ */
104
+ terminate(): Promise<void>;
105
+ /**
106
+ * 释放资源
107
+ */
108
+ dispose(): Promise<void>;
109
+ }
110
+ export {};
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @file OCR Worker
3
+ * @description OCR处理的Worker线程实现
4
+ * @module modules/id-card/ocr-worker
5
+ */
6
+ /// <reference path="../../../../src/types/tesseract.d.ts" />
7
+ import { IDCardInfo } from './types';
8
+ import { LoggerMessage } from 'tesseract.js';
9
+ /**
10
+ * OCR处理输入参数
11
+ */
12
+ export interface OCRProcessInput {
13
+ /** 图像Base64数据 */
14
+ imageBase64: string;
15
+ /** Tesseract Worker选项 */
16
+ tessWorkerOptions?: {
17
+ /** 语言 */
18
+ language?: string;
19
+ /** 日志回调 */
20
+ logger?: (message: LoggerMessage) => void;
21
+ };
22
+ }
23
+ /**
24
+ * 在Worker中处理OCR识别
25
+ * @param input OCR处理输入参数
26
+ * @returns OCR处理结果
27
+ */
28
+ export declare function processOCRInWorker(input: OCRProcessInput): Promise<{
29
+ idCardInfo: IDCardInfo;
30
+ processingTime: number;
31
+ }>;