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
package/package.json CHANGED
@@ -1,97 +1,96 @@
1
1
  {
2
2
  "name": "id-scanner-lib",
3
- "version": "1.3.2",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
- "main": "dist/id-scanner.js",
6
- "module": "dist/id-scanner-core.esm.js",
7
- "exports": {
8
- ".": {
9
- "import": "./dist/id-scanner-core.esm.js",
10
- "require": "./dist/id-scanner.js"
11
- },
12
- "./core": {
13
- "import": "./dist/id-scanner-core.esm.js",
14
- "require": "./dist/id-scanner-core.js"
15
- },
16
- "./ocr": {
17
- "import": "./dist/id-scanner-ocr.esm.js",
18
- "require": "./dist/id-scanner-ocr.js"
19
- },
20
- "./qr": {
21
- "import": "./dist/id-scanner-qr.esm.js",
22
- "require": "./dist/id-scanner-qr.js"
23
- }
24
- },
5
+ "description": "Browser-based ID card, QR code, and face recognition scanner with liveness detection",
6
+ "main": "dist/id-scanner-lib.js",
7
+ "module": "dist/id-scanner-lib.esm.js",
25
8
  "types": "dist/types/index.d.ts",
26
- "sideEffects": false,
9
+ "files": [
10
+ "dist",
11
+ "src",
12
+ "LICENSE",
13
+ "README.md"
14
+ ],
15
+ "bin": {
16
+ "id-scanner-scaffold": "./tools/scaffold.js"
17
+ },
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
27
21
  "scripts": {
28
- "build": "rollup -c",
29
- "dev": "rollup -c -w",
30
- "test": "echo \"No tests configured yet\"",
31
- "prepublishOnly": "npm run build",
32
- "publish:npm": "node scripts/publish.js",
33
- "auth:npm": "node scripts/npm-auth.js",
34
- "update:github": "node scripts/update-github.js",
35
- "analyze": "rollup -c --environment ANALYZE:true",
36
- "build:prod": "rollup -c --environment NODE_ENV:production",
37
- "size": "npm run build:prod && node scripts/size-report.js",
38
- "serve:demo": "npx http-server examples -o"
22
+ "build": "rimraf dist && rollup -c rollup.config.js",
23
+ "dev": "rollup -c -w rollup.config.js",
24
+ "test": "jest",
25
+ "lint": "eslint --ext .ts,.js src",
26
+ "format": "prettier --write \"src/**/*.{ts,js}\"",
27
+ "docs:dev": "vitepress dev docs",
28
+ "docs:build": "vitepress build docs",
29
+ "docs:serve": "vitepress serve docs",
30
+ "prepare": "npm run build",
31
+ "scaffold": "node ./tools/scaffold.js"
32
+ },
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/agions/id-scanner-lib.git"
39
36
  },
40
37
  "keywords": [
38
+ "id-scanner",
41
39
  "id-card",
42
40
  "qr-code",
43
41
  "scanner",
44
- "ocr",
45
- "barcode",
46
- "identity",
47
- "recognition",
48
- "image-processing"
42
+ "face-recognition",
43
+ "id-verification",
44
+ "face-detection",
45
+ "face-liveness",
46
+ "biometrics",
47
+ "webcam"
49
48
  ],
50
- "author": "agions",
49
+ "author": "Your Name",
51
50
  "license": "MIT",
52
- "description": "一款纯前端实现的TypeScript身份证&二维码识别库,无需后端支持,所有处理在浏览器端完成,新增图像批处理与优化",
53
- "repository": {
54
- "type": "git",
55
- "url": "git+https://github.com/agions/id-scanner-lib.git"
56
- },
57
51
  "bugs": {
58
52
  "url": "https://github.com/agions/id-scanner-lib/issues"
59
53
  },
60
54
  "homepage": "https://github.com/agions/id-scanner-lib#readme",
61
- "files": [
62
- "dist",
63
- "src",
64
- "README.md",
65
- "LICENSE"
66
- ],
67
- "publishConfig": {
68
- "registry": "https://registry.npmjs.org/",
69
- "access": "public"
55
+ "dependencies": {
56
+ "@tensorflow/tfjs": "^4.16.0",
57
+ "@vladmandic/face-api": "^1.7.13",
58
+ "jsqr": "^1.4.0"
70
59
  },
71
60
  "devDependencies": {
72
- "@rollup/plugin-commonjs": "^28.0.3",
73
- "@rollup/plugin-json": "^6.1.0",
74
- "@rollup/plugin-node-resolve": "^16.0.1",
61
+ "@babel/core": "^7.23.7",
62
+ "@babel/preset-env": "^7.23.7",
63
+ "@babel/preset-typescript": "^7.23.7",
64
+ "@rollup/plugin-babel": "^6.0.4",
65
+ "@rollup/plugin-commonjs": "^25.0.7",
66
+ "@rollup/plugin-json": "^6.0.1",
67
+ "@rollup/plugin-node-resolve": "^15.2.3",
75
68
  "@rollup/plugin-terser": "^0.4.4",
76
- "@rollup/plugin-typescript": "^12.1.2",
77
- "@types/node": "^22.13.10",
78
- "picocolors": "^1.1.1",
79
- "rollup": "^4.35.0",
80
- "rollup-plugin-bundle-analyzer": "^1.6.6",
81
- "rollup-plugin-visualizer": "^5.9.2",
82
- "tslib": "^2.8.1",
83
- "typescript": "^5.8.2"
84
- },
85
- "dependencies": {
86
- "browser-image-compression": "^2.0.2",
87
- "jsqr": "^1.4.0",
88
- "lodash-es": "^4.17.21",
89
- "tesseract.js": "^6.0.0"
69
+ "@rollup/plugin-typescript": "^11.1.5",
70
+ "@types/jest": "^29.5.11",
71
+ "@typescript-eslint/eslint-plugin": "^6.19.1",
72
+ "@typescript-eslint/parser": "^6.19.1",
73
+ "dts-bundle-generator": "^9.2.4",
74
+ "eslint": "^8.56.0",
75
+ "eslint-config-prettier": "^9.1.0",
76
+ "eslint-plugin-prettier": "^5.1.3",
77
+ "jest": "^29.7.0",
78
+ "prettier": "^3.2.4",
79
+ "rimraf": "^5.0.5",
80
+ "rollup": "^4.9.6",
81
+ "rollup-plugin-copy": "^3.5.0",
82
+ "rollup-plugin-dts": "^6.1.0",
83
+ "rollup-plugin-livereload": "^2.0.5",
84
+ "rollup-plugin-polyfill-node": "^0.13.0",
85
+ "rollup-plugin-serve": "^1.1.1",
86
+ "rollup-plugin-typescript2": "^0.36.0",
87
+ "ts-jest": "^29.1.1",
88
+ "tslib": "^2.6.2",
89
+ "typedoc": "^0.25.7",
90
+ "typescript": "^5.3.3",
91
+ "vitepress": "^1.0.0-rc.25"
90
92
  },
91
- "browserslist": [
92
- ">0.2%",
93
- "not dead",
94
- "not op_mini all",
95
- "last 2 versions"
96
- ]
97
- }
93
+ "engines": {
94
+ "node": ">=14.0.0"
95
+ }
96
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @file 基础模块
3
+ * @description 提供基础模块实现,作为所有功能模块的基类
4
+ * @module core/base-module
5
+ */
6
+
7
+ import { EventEmitter } from './event-emitter';
8
+ import { Logger } from './logger';
9
+ import { Module } from './module-manager';
10
+ import { VERSION } from '../version';
11
+
12
+ /**
13
+ * 基础模块类
14
+ * 提供模块的基本功能和生命周期管理
15
+ */
16
+ export abstract class BaseModule extends EventEmitter implements Module {
17
+ /** 模块名称 */
18
+ public abstract readonly name: string;
19
+
20
+ /** 模块版本 */
21
+ public readonly version: string = VERSION;
22
+
23
+ /** 模块是否已初始化 */
24
+ protected _isInitialized: boolean = false;
25
+
26
+ /** 日志工具 */
27
+ protected logger: Logger;
28
+
29
+ /**
30
+ * 构造函数
31
+ */
32
+ constructor() {
33
+ super();
34
+ this.logger = Logger.getInstance();
35
+ }
36
+
37
+ /**
38
+ * 获取模块是否已初始化
39
+ */
40
+ public get isInitialized(): boolean {
41
+ return this._isInitialized;
42
+ }
43
+
44
+ /**
45
+ * 初始化模块
46
+ * 子类必须实现此方法
47
+ */
48
+ public abstract initialize(): Promise<void>;
49
+
50
+ /**
51
+ * 释放模块资源
52
+ * 子类可以覆盖此方法以添加额外的资源释放逻辑
53
+ */
54
+ public async dispose(): Promise<void> {
55
+ if (!this._isInitialized) {
56
+ return;
57
+ }
58
+
59
+ this.logger.debug(this.name, '释放模块资源');
60
+
61
+ // 重置初始化状态
62
+ this._isInitialized = false;
63
+
64
+ // 删除所有事件监听器
65
+ this.removeAllListeners();
66
+
67
+ this.logger.debug(this.name, '模块资源已释放');
68
+ }
69
+
70
+ /**
71
+ * 检查模块是否已初始化,如果未初始化则抛出错误
72
+ */
73
+ protected ensureInitialized(): void {
74
+ if (!this._isInitialized) {
75
+ throw new Error(`模块 ${this.name} 尚未初始化`);
76
+ }
77
+ }
78
+ }