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.
- package/README.md +55 -460
- package/dist/id-scanner-lib.esm.js +4641 -0
- package/dist/id-scanner-lib.esm.js.map +1 -0
- package/dist/id-scanner-lib.js +14755 -0
- package/dist/id-scanner-lib.js.map +1 -0
- package/dist/types/core/base-module.d.ts +44 -0
- package/dist/types/core/camera-manager.d.ts +258 -0
- package/dist/types/core/config.d.ts +88 -0
- package/dist/types/core/errors.d.ts +111 -0
- package/dist/types/core/event-emitter.d.ts +55 -0
- package/dist/types/core/logger.d.ts +277 -0
- package/dist/types/core/module-manager.d.ts +78 -0
- package/dist/types/core/plugin-manager.d.ts +158 -0
- package/dist/types/core/resource-manager.d.ts +246 -0
- package/dist/types/core/result.d.ts +83 -0
- package/dist/types/core/scanner-factory.d.ts +93 -0
- package/dist/types/index.bundle.d.ts +1303 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/types/interfaces/external-types.d.ts +174 -0
- package/dist/types/interfaces/face-detection.d.ts +293 -0
- package/dist/types/interfaces/scanner-module.d.ts +280 -0
- package/dist/types/modules/face/face-detector.d.ts +170 -0
- package/dist/types/modules/face/index.d.ts +56 -0
- package/dist/types/modules/face/liveness-detector.d.ts +177 -0
- package/dist/types/modules/face/types.d.ts +136 -0
- package/dist/types/modules/id-card/anti-fake-detector.d.ts +170 -0
- package/dist/types/modules/id-card/id-card-detector.d.ts +131 -0
- package/dist/types/modules/id-card/index.d.ts +89 -0
- package/dist/types/modules/id-card/ocr-processor.d.ts +110 -0
- package/dist/types/modules/id-card/ocr-worker.d.ts +31 -0
- package/dist/types/modules/id-card/types.d.ts +181 -0
- package/dist/types/modules/qrcode/index.d.ts +51 -0
- package/dist/types/modules/qrcode/qr-code-scanner.d.ts +64 -0
- package/dist/types/modules/qrcode/types.d.ts +67 -0
- package/dist/types/utils/camera.d.ts +81 -0
- package/dist/types/utils/image-processing.d.ts +176 -0
- package/dist/types/utils/index.d.ts +175 -0
- package/dist/types/utils/performance.d.ts +81 -0
- package/dist/types/utils/resource-manager.d.ts +53 -0
- package/dist/types/utils/types.d.ts +166 -0
- package/dist/types/utils/worker.d.ts +52 -0
- package/dist/types/version.d.ts +7 -0
- package/package.json +76 -77
- package/src/core/base-module.ts +78 -0
- package/src/core/camera-manager.ts +798 -0
- package/src/core/config.ts +268 -0
- package/src/core/errors.ts +174 -0
- package/src/core/event-emitter.ts +110 -0
- package/src/core/logger.ts +549 -0
- package/src/core/module-manager.ts +165 -0
- package/src/core/plugin-manager.ts +429 -0
- package/src/core/resource-manager.ts +762 -0
- package/src/core/result.ts +163 -0
- package/src/core/scanner-factory.ts +237 -0
- package/src/index.ts +113 -936
- package/src/interfaces/external-types.ts +200 -0
- package/src/interfaces/face-detection.ts +309 -0
- package/src/interfaces/scanner-module.ts +384 -0
- package/src/modules/face/face-detector.ts +931 -0
- package/src/modules/face/index.ts +208 -0
- package/src/modules/face/liveness-detector.ts +908 -0
- package/src/modules/face/types.ts +133 -0
- package/src/modules/id-card/anti-fake-detector.ts +732 -0
- package/src/modules/id-card/id-card-detector.ts +474 -0
- package/src/modules/id-card/index.ts +425 -0
- package/src/modules/id-card/ocr-processor.ts +538 -0
- package/src/modules/id-card/ocr-worker.ts +259 -0
- package/src/modules/id-card/types.ts +178 -0
- package/src/modules/qrcode/index.ts +175 -0
- package/src/modules/qrcode/qr-code-scanner.ts +230 -0
- package/src/modules/qrcode/types.ts +65 -0
- package/src/types/browser-image-compression.d.ts +19 -0
- package/src/types/tesseract.d.ts +280 -0
- package/src/utils/image-processing.ts +432 -49
- package/src/utils/index.ts +426 -0
- package/src/utils/performance.ts +168 -131
- package/src/utils/resource-manager.ts +65 -146
- package/src/utils/types.ts +90 -2
- package/src/utils/worker.ts +123 -84
- package/src/version.ts +11 -0
- package/tools/scaffold.js +543 -0
- package/dist/id-scanner-core.esm.js +0 -11076
- package/dist/id-scanner-core.esm.js.map +0 -1
- package/dist/id-scanner-core.js +0 -11088
- package/dist/id-scanner-core.js.map +0 -1
- package/dist/id-scanner-core.min.js +0 -1
- package/dist/id-scanner-core.min.js.map +0 -1
- package/dist/id-scanner-ocr.esm.js +0 -1802
- package/dist/id-scanner-ocr.esm.js.map +0 -1
- package/dist/id-scanner-ocr.js +0 -1811
- package/dist/id-scanner-ocr.js.map +0 -1
- package/dist/id-scanner-ocr.min.js +0 -1
- package/dist/id-scanner-ocr.min.js.map +0 -1
- package/dist/id-scanner-qr.esm.js +0 -1023
- package/dist/id-scanner-qr.esm.js.map +0 -1
- package/dist/id-scanner-qr.js +0 -1032
- package/dist/id-scanner-qr.js.map +0 -1
- package/dist/id-scanner-qr.min.js +0 -1
- package/dist/id-scanner-qr.min.js.map +0 -1
- package/dist/id-scanner.js +0 -3740
- package/dist/id-scanner.js.map +0 -1
- package/dist/id-scanner.min.js +0 -1
- package/dist/id-scanner.min.js.map +0 -1
- package/src/core.ts +0 -138
- package/src/demo/demo.ts +0 -204
- package/src/id-recognition/anti-fake-detector.ts +0 -317
- package/src/id-recognition/data-extractor.ts +0 -262
- package/src/id-recognition/id-detector.ts +0 -363
- package/src/id-recognition/ocr-processor.ts +0 -334
- package/src/id-recognition/ocr-worker.ts +0 -156
- package/src/index-umd.ts +0 -477
- package/src/ocr-module.ts +0 -187
- package/src/qr-module.ts +0 -179
- package/src/scanner/barcode-scanner.ts +0 -251
- package/src/scanner/qr-scanner.ts +0 -167
package/README.md
CHANGED
|
@@ -1,505 +1,100 @@
|
|
|
1
1
|
# ID-Scanner-Lib
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
一个强大的浏览器端身份证识别、二维码扫描和人脸识别库,具有活体检测功能。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
[](https://github.com/agions/id-scanner-lib)
|
|
7
|
-
[](https://bundlephobia.com/package/id-scanner-lib)
|
|
8
|
-
[](https://github.com/agions/id-scanner-lib/blob/master/LICENSE)
|
|
5
|
+
## 功能特点
|
|
9
6
|
|
|
10
|
-
|
|
7
|
+
- **身份证识别**: 支持中国居民身份证识别,提取身份信息和照片
|
|
8
|
+
- **二维码扫描**: 支持多种二维码和条形码格式,实时视频扫描
|
|
9
|
+
- **人脸识别**: 人脸检测、特征点定位、属性分析和活体检测
|
|
10
|
+
- **轻量级**: 优化的代码结构,支持按需加载
|
|
11
|
+
- **易于集成**: 简洁的API,适用于各种Web应用
|
|
12
|
+
- **跨平台**: 支持PC和移动设备,多种浏览器兼容
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
- **二维码扫描**:基于jsQR实现高精度二维码识别与解码
|
|
14
|
-
- **条形码识别**:支持EAN-13、CODE-128等常见一维码格式
|
|
15
|
-
- **身份证OCR**:基于Tesseract.js的优化OCR引擎,精确提取身份证信息
|
|
16
|
-
- **身份证防伪检测**:检测多种防伪特征,有效识别伪造证件
|
|
17
|
-
- **图像处理优化**:内置多种图像预处理算法,提高识别率
|
|
18
|
-
- **支持多种数据源**:摄像头实时视频流、图片文件、URL、Base64等
|
|
19
|
-
- **高效缓存机制**:内置LRU缓存,避免重复识别,提升性能
|
|
20
|
-
- **Web Worker支持**:耗时操作可在后台线程执行,不阻塞UI
|
|
21
|
-
- **模块化设计**:支持按需加载,最小化应用体积
|
|
22
|
-
- **TypeScript支持**:完整类型定义,提供良好的开发体验
|
|
23
|
-
|
|
24
|
-
## 性能指标
|
|
25
|
-
|
|
26
|
-
| 功能 | 平均识别时间 | 识别率 | 备注 |
|
|
27
|
-
| ---------- | ------------ | ------ | ---------------- |
|
|
28
|
-
| 二维码识别 | 50-150ms | >98% | 取决于图像质量 |
|
|
29
|
-
| 条形码识别 | 70-200ms | >95% | 支持多种格式 |
|
|
30
|
-
| 身份证OCR | 300-800ms | >90% | 优化后的识别速度 |
|
|
31
|
-
| 防伪检测 | 100-200ms | >85% | 多特征综合分析 |
|
|
32
|
-
| 图像处理 | 20-100ms | - | 视处理操作而定 |
|
|
33
|
-
|
|
34
|
-
## 最新版本 (v1.3.2)
|
|
35
|
-
|
|
36
|
-
- **图像处理引擎升级**:
|
|
37
|
-
- 增强的图像锐化算法,提高低光照环境下的识别率
|
|
38
|
-
- 自适应阈值算法,优化二值化效果
|
|
39
|
-
- 基于OTSU算法的自动阈值选择
|
|
40
|
-
- **性能优化**:
|
|
41
|
-
- 代码压缩与Tree-shaking优化,减少30%以上的包体积
|
|
42
|
-
- 引入智能缓存机制,避免重复计算
|
|
43
|
-
- Web Worker支持,提高多核CPU利用率
|
|
44
|
-
- **新增功能**:
|
|
45
|
-
- 批量图像处理API
|
|
46
|
-
- 内置图像压缩功能
|
|
47
|
-
- 一体化演示组件
|
|
48
|
-
- **身份证防伪检测**:识别多种防伪特征,检测伪造证件
|
|
49
|
-
- 支持荧光油墨、微缩文字、光变图案等5种防伪特征检测
|
|
50
|
-
- 基于多特征综合评分,提供置信度评估
|
|
51
|
-
- 缓存机制提高重复检测性能
|
|
52
|
-
- **架构改进**:
|
|
53
|
-
- 资源自动释放机制
|
|
54
|
-
- 更精细的模块划分
|
|
55
|
-
- 增强的错误处理
|
|
56
|
-
|
|
57
|
-
## 版本路线图
|
|
58
|
-
|
|
59
|
-
### v1.4.0:人脸比对与活体检测
|
|
60
|
-
|
|
61
|
-
- **人脸比对模块**:
|
|
62
|
-
- 身份证照片与现场采集照片的比对功能
|
|
63
|
-
- 基于深度学习的人脸特征提取与分析
|
|
64
|
-
- 提供相似度评分与置信度
|
|
65
|
-
- **活体检测**:
|
|
66
|
-
- 眨眼、张嘴等动作检测防止照片欺骗
|
|
67
|
-
- 基于光线反射的3D检测技术
|
|
68
|
-
- 多帧分析提高检测准确率
|
|
69
|
-
- **安全增强**:
|
|
70
|
-
- 本地处理所有数据,保护隐私
|
|
71
|
-
- 结果加密存储选项
|
|
72
|
-
- 合规性验证工具
|
|
73
|
-
|
|
74
|
-
### v1.5.0:多证件类型支持
|
|
75
|
-
|
|
76
|
-
- **护照识别**:
|
|
77
|
-
- MRZ码(机读区)解析
|
|
78
|
-
- 多国护照模板适配
|
|
79
|
-
- 芯片信息读取(ePassport支持)
|
|
80
|
-
- **驾驶证识别**:
|
|
81
|
-
- 驾驶证OCR识别
|
|
82
|
-
- 驾驶资格与限制条件解析
|
|
83
|
-
- 国际驾照支持
|
|
84
|
-
- **营业执照识别**:
|
|
85
|
-
- 企业信息提取
|
|
86
|
-
- 统一社会信用代码验证
|
|
87
|
-
- 经营范围解析
|
|
88
|
-
- **银行卡识别**:
|
|
89
|
-
- 卡号、有效期识别
|
|
90
|
-
- 银行标识解析
|
|
91
|
-
- BIN码验证
|
|
92
|
-
|
|
93
|
-
### v1.6.0:UI/UX改进与组件库升级
|
|
94
|
-
|
|
95
|
-
- **现代化UI框架**:
|
|
96
|
-
- 基于Web Components的组件系统
|
|
97
|
-
- 自适应扫描界面
|
|
98
|
-
- 多主题支持(含暗色模式)
|
|
99
|
-
- **交互体验优化**:
|
|
100
|
-
- 实时扫描引导框
|
|
101
|
-
- 智能对焦与取景提示
|
|
102
|
-
- 证件边缘自动检测与校正
|
|
103
|
-
- **可访问性支持**:
|
|
104
|
-
- 屏幕阅读器兼容
|
|
105
|
-
- 键盘导航
|
|
106
|
-
- 多语言本地化
|
|
107
|
-
- **动效与反馈**:
|
|
108
|
-
- 平滑过渡动画
|
|
109
|
-
- 触觉反馈(移动设备)
|
|
110
|
-
- 声音反馈与语音提示
|
|
111
|
-
|
|
112
|
-
### v1.7.0:性能与架构优化
|
|
113
|
-
|
|
114
|
-
- **WebAssembly实现**:
|
|
115
|
-
- 核心图像处理算法WASM化
|
|
116
|
-
- 性能提升3-5倍
|
|
117
|
-
- 更低的CPU占用
|
|
118
|
-
- **离线支持**:
|
|
119
|
-
- 完整离线运行能力
|
|
120
|
-
- 基于IndexedDB的本地缓存
|
|
121
|
-
- Service Worker支持
|
|
122
|
-
- **微前端集成**:
|
|
123
|
-
- React/Vue/Angular专用组件
|
|
124
|
-
- 更简单的集成API
|
|
125
|
-
- TypeScript类型增强
|
|
126
|
-
- **渐进式加载**:
|
|
127
|
-
- 核心功能快速加载
|
|
128
|
-
- 按需延迟加载附加模块
|
|
129
|
-
- 预测性加载提高响应速度
|
|
130
|
-
|
|
131
|
-
### v2.0.0:企业级解决方案
|
|
132
|
-
|
|
133
|
-
- **云端协同验证**:
|
|
134
|
-
- 可选云端验证API
|
|
135
|
-
- 本地与云端结果比对
|
|
136
|
-
- 多级安全验证
|
|
137
|
-
- **高级分析功能**:
|
|
138
|
-
- 证件使用统计与分析
|
|
139
|
-
- 风险评估模型
|
|
140
|
-
- 异常检测系统
|
|
141
|
-
- **行业解决方案包**:
|
|
142
|
-
- 金融行业KYC流程集成
|
|
143
|
-
- 酒店/零售快速登记系统
|
|
144
|
-
- 政务/安防高安全性验证
|
|
145
|
-
- **企业级管理功能**:
|
|
146
|
-
- 多租户支持
|
|
147
|
-
- 批量处理队列
|
|
148
|
-
- 完整审计日志
|
|
149
|
-
|
|
150
|
-
## 系统架构
|
|
151
|
-
|
|
152
|
-
```
|
|
153
|
-
┌────────────────────────────────────────────────────────────┐
|
|
154
|
-
│ IDScanner 主模块 │
|
|
155
|
-
├─────────────┬─────────────────┬────────────────────────────┤
|
|
156
|
-
│ QRScanner │ BarcodeScanner │ IDCardDetector │
|
|
157
|
-
├─────────────┴─────────────────┴────────────────────────────┤
|
|
158
|
-
│ Camera (视频流捕获与处理) │
|
|
159
|
-
└────────────────────────────────────────────────────────────┘
|
|
160
|
-
▲
|
|
161
|
-
│
|
|
162
|
-
▼
|
|
163
|
-
┌────────────────────────────────────────────────────────────┐
|
|
164
|
-
│ 核心处理引擎 │
|
|
165
|
-
├─────────────────┬─────────────────┬────────────────────────┤
|
|
166
|
-
│ OCRProcessor │ DataExtractor │ ImageProcessor │
|
|
167
|
-
│ (文字识别) │ (数据提取验证) │ (图像预处理) │
|
|
168
|
-
├─────────────────┴─────────────────┴────────────────────────┤
|
|
169
|
-
│ AntiFakeDetector (身份证防伪检测) │
|
|
170
|
-
└────────────────────────────────────────────────────────────┘
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
## 安装与使用
|
|
174
|
-
|
|
175
|
-
### NPM安装
|
|
14
|
+
## 安装
|
|
176
15
|
|
|
177
16
|
```bash
|
|
178
|
-
npm install id-scanner-lib
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### CDN引入
|
|
182
|
-
|
|
183
|
-
```html
|
|
184
|
-
<!-- 生产环境 (压缩版) -->
|
|
185
|
-
<script src="https://cdn.jsdelivr.net/npm/id-scanner-lib@1.3.1/dist/id-scanner.min.js"></script>
|
|
186
|
-
|
|
187
|
-
<!-- 开发环境 (未压缩) -->
|
|
188
|
-
<script src="https://cdn.jsdelivr.net/npm/id-scanner-lib@1.3.1/dist/id-scanner.js"></script>
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## 包体积优化
|
|
192
|
-
|
|
193
|
-
v1.3.1版本通过代码分割和Tree-shaking极大地优化了包体积:
|
|
194
|
-
|
|
195
|
-
| 模块 | 大小 (gzip) | 说明 |
|
|
196
|
-
| --------------- | ----------- | ---------------- |
|
|
197
|
-
| 完整包(min.js) | 93KB | 包含所有功能 |
|
|
198
|
-
| 核心包(min.js) | 186KB | 基础功能,无OCR |
|
|
199
|
-
| OCR模块(min.js) | 70KB | 仅文字识别 |
|
|
200
|
-
| QR模块(min.js) | 60KB | 仅二维码识别 |
|
|
201
|
-
| ESM模块 | 各模块更小 | 支持Tree-shaking |
|
|
202
|
-
|
|
203
|
-
## 最佳实践:按需引入
|
|
204
|
-
|
|
205
|
-
### 完整引入
|
|
206
|
-
|
|
207
|
-
```javascript
|
|
208
|
-
// 引入完整功能
|
|
209
|
-
import { IDScanner } from 'id-scanner-lib';
|
|
210
|
-
|
|
211
|
-
const scanner = new IDScanner({
|
|
212
|
-
onQRCodeScanned: (result) => console.log('扫描结果:', result),
|
|
213
|
-
onIDCardScanned: (info) => console.log('身份证信息:', info),
|
|
214
|
-
onAntiFakeDetected: (result) => console.log('防伪检测结果:', result)
|
|
215
|
-
});
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### 轻量引入
|
|
219
|
-
|
|
220
|
-
```javascript
|
|
221
|
-
// 只引入二维码相关功能
|
|
222
|
-
import { ScannerModule } from 'id-scanner-lib/qr';
|
|
223
|
-
|
|
224
|
-
const qrScanner = new ScannerModule({
|
|
225
|
-
onQRCodeScanned: (result) => console.log('二维码:', result)
|
|
226
|
-
});
|
|
17
|
+
npm install id-scanner-lib
|
|
227
18
|
```
|
|
228
19
|
|
|
229
20
|
## 快速开始
|
|
230
21
|
|
|
231
|
-
### 二维码识别
|
|
232
|
-
|
|
233
|
-
```javascript
|
|
234
|
-
import { IDScanner } from 'id-scanner-lib';
|
|
235
|
-
|
|
236
|
-
// 创建扫描器实例
|
|
237
|
-
const scanner = new IDScanner({
|
|
238
|
-
onQRCodeScanned: (result) => {
|
|
239
|
-
console.log('扫描到二维码:', result);
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
// 初始化
|
|
244
|
-
await scanner.initialize();
|
|
245
|
-
|
|
246
|
-
// 启动扫描
|
|
247
|
-
const videoElement = document.getElementById('video');
|
|
248
|
-
await scanner.startQRScanner(videoElement);
|
|
249
|
-
|
|
250
|
-
// 处理静态图片
|
|
251
|
-
const qrResult = await scanner.processQRCodeImage('https://example.com/qr.jpg');
|
|
252
|
-
```
|
|
253
|
-
|
|
254
22
|
### 身份证识别
|
|
255
23
|
|
|
256
24
|
```javascript
|
|
257
25
|
import { IDScanner } from 'id-scanner-lib';
|
|
258
26
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
console.log('识别到身份证信息:', info);
|
|
262
|
-
document.getElementById('name').textContent = info.name;
|
|
263
|
-
document.getElementById('idNumber').textContent = info.idNumber;
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
|
|
27
|
+
// 创建并初始化扫描器
|
|
28
|
+
const scanner = new IDScanner();
|
|
267
29
|
await scanner.initialize();
|
|
268
|
-
await scanner.startIDCardScanner(document.getElementById('camera'));
|
|
269
|
-
|
|
270
|
-
// 使用文件输入处理
|
|
271
|
-
document.getElementById('fileInput').addEventListener('change', async (e) => {
|
|
272
|
-
const file = e.target.files[0];
|
|
273
|
-
try {
|
|
274
|
-
// 先压缩图片提高处理速度
|
|
275
|
-
const compressed = await scanner.compressImage(file, {
|
|
276
|
-
maxSizeMB: 1,
|
|
277
|
-
maxWidthOrHeight: 1920
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
// 处理身份证图像
|
|
281
|
-
const idInfo = await scanner.processIDCardImage(compressed);
|
|
282
|
-
console.log('身份证信息:', idInfo);
|
|
283
|
-
|
|
284
|
-
// 检查防伪检测结果
|
|
285
|
-
if (idInfo.antiFakeResult) {
|
|
286
|
-
console.log('防伪检测结果:', idInfo.antiFakeResult);
|
|
287
|
-
if (idInfo.antiFakeResult.isAuthentic) {
|
|
288
|
-
console.log('证件验证通过');
|
|
289
|
-
} else {
|
|
290
|
-
console.log('警告:可能为伪造证件');
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
} catch (error) {
|
|
294
|
-
console.error('处理失败:', error);
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
### 身份证防伪检测
|
|
300
|
-
|
|
301
|
-
```javascript
|
|
302
|
-
import { IDScanner } from 'id-scanner-lib';
|
|
303
30
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
onAntiFakeDetected: (result) => {
|
|
307
|
-
if (result.isAuthentic) {
|
|
308
|
-
console.log('身份证验证通过,检测到的防伪特征:', result.detectedFeatures);
|
|
309
|
-
} else {
|
|
310
|
-
console.log('警告:可能是伪造证件!', result.message);
|
|
311
|
-
// 显示安全提示
|
|
312
|
-
document.getElementById('warning').style.display = 'block';
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
});
|
|
31
|
+
// 获取身份证模块
|
|
32
|
+
const idCardModule = scanner.getIDCardModule();
|
|
316
33
|
|
|
317
|
-
|
|
34
|
+
// 识别身份证
|
|
35
|
+
const imageElement = document.getElementById('id-card-image');
|
|
36
|
+
const result = await idCardModule.recognize(imageElement);
|
|
318
37
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
console.log('
|
|
322
|
-
console.log('检测置信度:', antiFakeResult.confidence);
|
|
323
|
-
|
|
324
|
-
// 方法2:身份证识别时自动进行防伪检测
|
|
325
|
-
const idInfo = await scanner.processIDCardImage(idCardImage);
|
|
326
|
-
// 防伪检测结果包含在返回的信息中
|
|
327
|
-
if (idInfo.antiFakeResult && idInfo.antiFakeResult.isAuthentic) {
|
|
328
|
-
// 身份证真实,继续处理
|
|
329
|
-
} else {
|
|
330
|
-
// 提示可能为伪造证件
|
|
331
|
-
}
|
|
38
|
+
console.log('姓名:', result.name);
|
|
39
|
+
console.log('身份证号:', result.idNumber);
|
|
40
|
+
console.log('地址:', result.address);
|
|
332
41
|
```
|
|
333
42
|
|
|
334
|
-
###
|
|
43
|
+
### 二维码扫描
|
|
335
44
|
|
|
336
45
|
```javascript
|
|
337
|
-
|
|
46
|
+
// 获取二维码模块
|
|
47
|
+
const qrCodeModule = scanner.getQRCodeModule();
|
|
338
48
|
|
|
339
|
-
//
|
|
340
|
-
const
|
|
341
|
-
|
|
342
|
-
'result', // 结果显示元素ID
|
|
343
|
-
'switchButton', // 切换按钮ID
|
|
344
|
-
'imageInput' // 图片输入元素ID
|
|
345
|
-
);
|
|
49
|
+
// 从图像中扫描二维码
|
|
50
|
+
const qrImage = document.getElementById('qr-image');
|
|
51
|
+
const qrResult = await qrCodeModule.scan(qrImage);
|
|
346
52
|
|
|
347
|
-
|
|
53
|
+
console.log('二维码内容:', qrResult.data);
|
|
348
54
|
```
|
|
349
55
|
|
|
350
|
-
|
|
56
|
+
### 人脸识别
|
|
351
57
|
|
|
352
58
|
```javascript
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
// 从文件创建ImageData
|
|
356
|
-
const file = document.getElementById('fileInput').files[0];
|
|
357
|
-
const imageData = await ImageProcessor.createImageDataFromFile(file);
|
|
59
|
+
// 获取人脸模块
|
|
60
|
+
const faceModule = scanner.getFaceModule();
|
|
358
61
|
|
|
359
|
-
//
|
|
360
|
-
const
|
|
361
|
-
|
|
362
|
-
contrast: 25, // 提高对比度
|
|
363
|
-
sharpen: true, // 锐化图像
|
|
364
|
-
grayscale: false // 不转换为灰度
|
|
365
|
-
});
|
|
62
|
+
// 检测人脸
|
|
63
|
+
const faceImage = document.getElementById('face-image');
|
|
64
|
+
const faceResult = await faceModule.detectFace(faceImage);
|
|
366
65
|
|
|
367
|
-
|
|
368
|
-
|
|
66
|
+
console.log('检测到人脸:', faceResult.boundingBox);
|
|
67
|
+
console.log('置信度:', faceResult.confidence);
|
|
369
68
|
|
|
370
|
-
//
|
|
371
|
-
const
|
|
372
|
-
const
|
|
373
|
-
|
|
69
|
+
// 人脸比对
|
|
70
|
+
const face1 = document.getElementById('face1');
|
|
71
|
+
const face2 = document.getElementById('face2');
|
|
72
|
+
const comparison = await faceModule.compareFaces(face1, face2);
|
|
374
73
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
enhancedImage,
|
|
378
|
-
'processed.jpg',
|
|
379
|
-
'image/jpeg',
|
|
380
|
-
0.9
|
|
381
|
-
);
|
|
74
|
+
console.log('相似度:', comparison.similarity);
|
|
75
|
+
console.log('是否匹配:', comparison.isMatch);
|
|
382
76
|
```
|
|
383
77
|
|
|
384
|
-
##
|
|
385
|
-
|
|
386
|
-
### OCR引擎优化
|
|
387
|
-
|
|
388
|
-
OCR引擎基于Tesseract.js进行了一系列优化:
|
|
389
|
-
|
|
390
|
-
1. **预处理流水线**:图像经过多阶段处理,包括大小调整、增强对比度、锐化等
|
|
391
|
-
2. **字符集约束**:针对身份证特定字符集进行了优化,提高识别准确度
|
|
392
|
-
3. **多线程处理**:使用Web Worker避免主线程阻塞
|
|
393
|
-
4. **结果缓存**:相同图像指纹不重复计算,提高响应速度
|
|
394
|
-
|
|
395
|
-
### 身份证防伪检测技术
|
|
78
|
+
## 文档
|
|
396
79
|
|
|
397
|
-
|
|
80
|
+
完整文档请访问我们的[官方文档网站](https://agions.github.io/id-scanner-lib/)
|
|
398
81
|
|
|
399
|
-
|
|
400
|
-
2. **微缩文字**:识别证件上的微小文字,伪造证件难以复制
|
|
401
|
-
3. **光变图案**:检测特定角度下的光变效果
|
|
402
|
-
4. **雕刻凹印**:通过纹理检测特定的凹印模式
|
|
403
|
-
5. **隐形图案**:识别证件上的幽灵图像和隐形水印
|
|
82
|
+
## 演示
|
|
404
83
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
-
|
|
408
|
-
- 边缘检测与微文字模式识别
|
|
409
|
-
- 对比度与光照调整突出隐形特征
|
|
410
|
-
- 自适应阈值处理增强识别准确度
|
|
411
|
-
|
|
412
|
-
### 图像增强算法
|
|
413
|
-
|
|
414
|
-
针对不同场景提供最佳图像处理策略:
|
|
415
|
-
|
|
416
|
-
- **弱光环境**:自动提高亮度和对比度
|
|
417
|
-
- **模糊图像**:应用锐化算法提高清晰度
|
|
418
|
-
- **过度曝光**:自适应调整对比度
|
|
419
|
-
- **特殊角度**:透视校正(开发中)
|
|
84
|
+
- [身份证识别演示](https://agions.github.io/id-scanner-lib/demos/idcard.html)
|
|
85
|
+
- [二维码扫描演示](https://agions.github.io/id-scanner-lib/demos/qrcode.html)
|
|
86
|
+
- [人脸识别演示](https://agions.github.io/id-scanner-lib/demos/face.html)
|
|
420
87
|
|
|
421
88
|
## 浏览器兼容性
|
|
422
89
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
| Edge | 79+ | 完整支持 |
|
|
431
|
-
| iOS Safari | 11+ | 仅支持Safari,不支持WebView |
|
|
432
|
-
| Android Chrome | 60+ | 完整支持 |
|
|
433
|
-
| 微信浏览器 | 最新版 | 仅支持静态图像处理 |
|
|
434
|
-
|
|
435
|
-
## 性能优化建议
|
|
436
|
-
|
|
437
|
-
1. **按需加载**:仅引入所需模块,减少首次加载时间
|
|
438
|
-
2. **预加载模型**:提前加载OCR模型,避免首次识别延迟
|
|
439
|
-
3. **适当降低分辨率**:处理前将图像缩小到合适尺寸(约1000px宽)
|
|
440
|
-
4. **开启缓存**:对于相似图像,启用结果缓存
|
|
441
|
-
5. **使用Web Worker**:处理大量图像时开启多线程
|
|
442
|
-
|
|
443
|
-
## 应用场景
|
|
444
|
-
|
|
445
|
-
- **网上银行身份验证**:快速验证用户身份信息,检测伪造证件
|
|
446
|
-
- **酒店登记系统**:自动录入住客信息并验证证件真伪
|
|
447
|
-
- **自助服务终端**:无需人工,自动处理证件信息
|
|
448
|
-
- **企业内部系统**:员工证件信息采集与验证
|
|
449
|
-
- **活动签到系统**:快速扫码签到与证件登记
|
|
450
|
-
|
|
451
|
-
## 发布指南
|
|
452
|
-
|
|
453
|
-
### 发布到NPM
|
|
454
|
-
|
|
455
|
-
```bash
|
|
456
|
-
# 1. 确保版本号正确
|
|
457
|
-
npm version [patch|minor|major]
|
|
458
|
-
|
|
459
|
-
# 2. 构建生产版本
|
|
460
|
-
npm run build:prod
|
|
461
|
-
|
|
462
|
-
# 3. 发布到NPM
|
|
463
|
-
npm publish
|
|
464
|
-
|
|
465
|
-
# 4. 生成标签
|
|
466
|
-
git push origin --tags
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
### 发布到GitHub
|
|
470
|
-
|
|
471
|
-
```bash
|
|
472
|
-
# 1. 提交代码变更
|
|
473
|
-
git add .
|
|
474
|
-
git commit -m "发布 v1.x.x"
|
|
475
|
-
|
|
476
|
-
# 2. 推送到GitHub
|
|
477
|
-
git push origin main
|
|
478
|
-
|
|
479
|
-
# 3. 创建Release
|
|
480
|
-
# 访问 https://github.com/agions/id-scanner-lib/releases/new
|
|
481
|
-
# 选择对应的标签,填写Release说明
|
|
482
|
-
```
|
|
483
|
-
|
|
484
|
-
## 贡献指南
|
|
485
|
-
|
|
486
|
-
欢迎贡献代码、报告问题或提出新功能建议。请通过GitHub Issues或Pull Requests参与项目。
|
|
487
|
-
|
|
488
|
-
1. Fork项目仓库
|
|
489
|
-
2. 创建你的特性分支 (`git checkout -b feature/amazing-feature`)
|
|
490
|
-
3. 提交你的更改 (`git commit -m '添加一些很棒的功能'`)
|
|
491
|
-
4. 推送到分支 (`git push origin feature/amazing-feature`)
|
|
492
|
-
5. 打开Pull Request
|
|
90
|
+
- Chrome 60+
|
|
91
|
+
- Firefox 55+
|
|
92
|
+
- Safari 11+
|
|
93
|
+
- Edge 79+
|
|
94
|
+
- Opera 47+
|
|
95
|
+
- iOS Safari 11+
|
|
96
|
+
- Android Chrome 60+
|
|
493
97
|
|
|
494
98
|
## 许可证
|
|
495
99
|
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
---
|
|
499
|
-
|
|
500
|
-
<p align="center">
|
|
501
|
-
<a href="https://github.com/agions/id-scanner-lib">GitHub</a> •
|
|
502
|
-
<a href="https://www.npmjs.com/package/id-scanner-lib">NPM</a> •
|
|
503
|
-
<a href="https://github.com/agions/id-scanner-lib/issues">Issues</a> •
|
|
504
|
-
<a href="https://github.com/agions/id-scanner-lib/releases">Releases</a>
|
|
505
|
-
</p>
|
|
100
|
+
[MIT](LICENSE)
|