id-scanner-lib 1.2.2 → 1.3.2

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 (67) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +375 -363
  3. package/dist/id-scanner-core.esm.js +427 -221
  4. package/dist/id-scanner-core.esm.js.map +1 -1
  5. package/dist/id-scanner-core.js +427 -221
  6. package/dist/id-scanner-core.js.map +1 -1
  7. package/dist/id-scanner-core.min.js +1 -9
  8. package/dist/id-scanner-core.min.js.map +1 -1
  9. package/dist/id-scanner-ocr.esm.js +451 -276
  10. package/dist/id-scanner-ocr.esm.js.map +1 -1
  11. package/dist/id-scanner-ocr.js +451 -276
  12. package/dist/id-scanner-ocr.js.map +1 -1
  13. package/dist/id-scanner-ocr.min.js +1 -9
  14. package/dist/id-scanner-ocr.min.js.map +1 -1
  15. package/dist/id-scanner-qr.esm.js +483 -233
  16. package/dist/id-scanner-qr.esm.js.map +1 -1
  17. package/dist/id-scanner-qr.js +482 -232
  18. package/dist/id-scanner-qr.js.map +1 -1
  19. package/dist/id-scanner-qr.min.js +1 -9
  20. package/dist/id-scanner-qr.min.js.map +1 -1
  21. package/dist/id-scanner.js +2138 -358
  22. package/dist/id-scanner.js.map +1 -1
  23. package/dist/id-scanner.min.js +1 -9
  24. package/dist/id-scanner.min.js.map +1 -1
  25. package/package.json +27 -7
  26. package/src/demo/demo.ts +178 -62
  27. package/src/id-recognition/anti-fake-detector.ts +317 -0
  28. package/src/id-recognition/id-detector.ts +184 -155
  29. package/src/id-recognition/ocr-processor.ts +193 -146
  30. package/src/id-recognition/ocr-worker.ts +82 -72
  31. package/src/index-umd.ts +347 -110
  32. package/src/index.ts +866 -91
  33. package/src/ocr-module.ts +108 -60
  34. package/src/qr-module.ts +104 -54
  35. package/src/scanner/barcode-scanner.ts +145 -58
  36. package/src/scanner/qr-scanner.ts +86 -47
  37. package/src/utils/image-processing.ts +479 -294
  38. package/dist/core.d.ts +0 -77
  39. package/dist/demo/demo.d.ts +0 -14
  40. package/dist/id-recognition/data-extractor.d.ts +0 -105
  41. package/dist/id-recognition/id-detector.d.ts +0 -100
  42. package/dist/id-recognition/ocr-processor.d.ts +0 -64
  43. package/dist/id-scanner.esm.js +0 -94656
  44. package/dist/id-scanner.esm.js.map +0 -1
  45. package/dist/index-umd.d.ts +0 -96
  46. package/dist/index.d.ts +0 -78
  47. package/dist/ocr-module.d.ts +0 -67
  48. package/dist/qr-module.d.ts +0 -68
  49. package/dist/scanner/barcode-scanner.d.ts +0 -90
  50. package/dist/scanner/qr-scanner.d.ts +0 -80
  51. package/dist/types/core.d.ts +0 -77
  52. package/dist/types/demo/demo.d.ts +0 -14
  53. package/dist/types/id-recognition/data-extractor.d.ts +0 -105
  54. package/dist/types/id-recognition/id-detector.d.ts +0 -100
  55. package/dist/types/id-recognition/ocr-processor.d.ts +0 -64
  56. package/dist/types/index-umd.d.ts +0 -96
  57. package/dist/types/index.d.ts +0 -78
  58. package/dist/types/ocr-module.d.ts +0 -67
  59. package/dist/types/qr-module.d.ts +0 -68
  60. package/dist/types/scanner/barcode-scanner.d.ts +0 -90
  61. package/dist/types/scanner/qr-scanner.d.ts +0 -80
  62. package/dist/types/utils/camera.d.ts +0 -81
  63. package/dist/types/utils/image-processing.d.ts +0 -75
  64. package/dist/types/utils/types.d.ts +0 -65
  65. package/dist/utils/camera.d.ts +0 -81
  66. package/dist/utils/image-processing.d.ts +0 -75
  67. package/dist/utils/types.d.ts +0 -65
@@ -1 +1 @@
1
- {"version":3,"file":"id-scanner.min.js","sources":["../src/utils/camera.ts","../src/scanner/qr-scanner.ts","../src/utils/image-processing.ts","../src/scanner/barcode-scanner.ts","../src/utils/performance.ts","../src/id-recognition/id-detector.ts","../src/id-recognition/ocr-worker.ts","../src/id-recognition/ocr-processor.ts","../src/utils/worker.ts","../src/id-recognition/data-extractor.ts","../src/index-umd.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["Camera","constructor","options","this","stream","videoElement","width","height","facingMode","start","initialize","stop","release","constraints","video","ideal","navigator","mediaDevices","getUserMedia","srcObject","Promise","resolve","onloadedmetadata","play","then","error","console","Error","captureFrame","canvas","document","createElement","videoWidth","videoHeight","context","getContext","drawImage","getImageData","getTracks","forEach","track","QRScanner","scanning","scanTimer","scanInterval","camera","scan","onError","String","imageData","code","jsQR","data","onScan","window","setTimeout","clearTimeout","ImageProcessor","imageDataToCanvas","ctx","putImageData","canvasToImageData","adjustBrightnessContrast","brightness","contrast","imgData","factor","i","length","truncate","value","Math","min","max","toGrayscale","avg","resize","newWidth","newHeight","tempCanvas","downsampleForProcessing","maxDimension","scale","round","imageDataToBase64","toDataURL","base64ToImageData","base64","reject","img","Image","onload","onerror","src","processImageInParallel","processingFunction","chunks","Worker","resultCanvas","resultCtx","isWide","chunkSize","floor","promises","chunkCanvas","chunkCtx","chunkImageData","startX","startY","workerCode","toString","blob","Blob","type","workerUrl","URL","createObjectURL","worker","promise","onmessage","e","terminate","revokeObjectURL","postMessage","index","buffer","push","results","all","sort","a","b","result","BarcodeScanner","enhancedImage","detectBarcode","log","random","mockResult","LRUCache","maxSize","cache","Map","get","key","has","delete","set","size","oldestKey","keys","next","undefined","clear","calculateImageFingerprint","tempCtx","smallImgData","grayValues","r","g","gray","reduce","sum","val","fingerprint","IDCardDetector","detecting","detectTimer","frameCount","lastDetectionTime","onDetected","detectionInterval","maxImageDimension","enableCache","cacheSize","logger","onDetection","resultCache","throttledDetect","fn","delay","lastCall","timeoutId","args","now","Date","remaining","apply","throttle","performDetection","bind","detect","cancelAnimationFrame","requestAnimationFrame","performance","frame","cachedResult","updatedResult","downsampledFrame","detectIDCard","success","detectionResult","message","rectWidth","rectHeight","rectX","rectY","corners","x","y","boundingBox","croppedImage","confidence","clearCache","dispose","async","processOCRInWorker","input","startTime","createWorker","import","tessWorkerOptions","m","load","loadLanguage","setParameters","tessedit_char_whitelist","recognize","imageBase64","idCardInfo","text","info","lines","split","filter","line","trim","idNumberRegex","idNumberMatch","match","idNumber","includes","test","name","replace","genderNationalityRegex","genderMatch","gender","nationalityText","nationality","substring","indexOf","birthDateRegex","birthDateMatch","birthDate","addressRegex","addressMatch","address","authorityRegex","authorityMatch","issuingAuthority","validPeriodRegex","validPeriodMatch","validPeriod","parseIDCardText","processingTime","OCRProcessor","ocrWorker","initialized","useWorker","workerFunction","promiseMap","messageCounter","id","promiseHandlers","workerError","stack","createCustomWorker","processIDCard","downsampledImage","base64Image","toFixed","DataExtractor","validateIDNumber","year","parseInt","substr","month","day","date","getFullYear","getMonth","getDate","extractBirthDateFromID","extractGenderFromID","charAt","extractRegionFromID","enhanceIDCardInfo","ocrInfo","extractAndValidate","enhancedInfo","normalizeIDNumber","normalizeDate","normalizeAddress","toUpperCase","sexCode","qrScanner","barcodeScanner","idDetector","ocrProcessor","dataExtractor","scanMode","cameraOptions","handleError","startQRScanner","qrScannerOptions","handleQRScan","startBarcodeScanner","barcodeScannerOptions","handleBarcodeScan","startIDCardScanner","handleIDDetection","onQRCodeScanned","onBarcodeScanned","extractedInfo","onIDCardScanned"],"mappings":"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"}
1
+ {"version":3,"file":"id-scanner.min.js","sources":["../src/utils/camera.ts","../src/scanner/qr-scanner.ts","../src/utils/image-processing.ts","../src/scanner/barcode-scanner.ts","../src/utils/performance.ts","../src/id-recognition/id-detector.ts","../src/id-recognition/ocr-worker.ts","../src/id-recognition/ocr-processor.ts","../src/utils/worker.ts","../src/id-recognition/data-extractor.ts","../src/index.ts","../src/demo/demo.ts","../src/index-umd.ts","../src/ocr-module.ts","../src/qr-module.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Camera","constructor","options","this","stream","videoElement","width","height","facingMode","start","initialize","stop","release","constraints","video","ideal","navigator","mediaDevices","getUserMedia","srcObject","Promise","resolve","onloadedmetadata","play","then","error","console","Error","captureFrame","canvas","document","createElement","videoWidth","videoHeight","context","getContext","drawImage","getImageData","getTracks","forEach","track","QRScanner","scanning","scanTimer","scanInterval","camera","scan","onError","String","imageData","code","jsQR","data","onScan","window","setTimeout","clearTimeout","processImageData","ImageProcessor","imageDataToCanvas","ctx","putImageData","canvasToImageData","adjustBrightnessContrast","brightness","contrast","imgData","factor","i","length","truncate","value","Math","min","max","toGrayscale","avg","resize","newWidth","newHeight","tempCanvas","downsampleForProcessing","maxDimension","scale","round","imageDataToBase64","toDataURL","base64ToImageData","base64","reject","img","Image","onload","onerror","src","processImageInParallel","processingFunction","chunks","Worker","resultCanvas","resultCtx","isWide","chunkSize","floor","promises","chunkCanvas","chunkCtx","chunkImageData","startX","startY","workerCode","toString","blob","Blob","type","workerUrl","URL","createObjectURL","worker","promise","onmessage","e","terminate","revokeObjectURL","postMessage","index","buffer","push","results","all","sort","a","b","result","BarcodeScanner","enhancedImage","detectBarcode","log","random","mockResult","simulateBarcodeDetection","midX","midY","sampleWidth","edgeCount","lastPixel","x","pixelPos","pixelValue","abs","LRUCache","maxSize","cache","Map","get","key","has","delete","set","size","oldestKey","keys","next","undefined","clear","calculateImageFingerprint","tempCtx","smallImgData","grayValues","r","g","gray","reduce","sum","val","fingerprint","IDCardDetector","detecting","detectTimer","frameCount","lastDetectionTime","onDetected","detectionInterval","maxImageDimension","enableCache","cacheSize","logger","onDetection","resultCache","throttledDetect","fn","delay","lastCall","timeoutId","args","now","Date","remaining","apply","throttle","performDetection","bind","detect","cancelAnimationFrame","requestAnimationFrame","performance","frame","cachedResult","updatedResult","downsampledFrame","detectIDCard","success","detectionResult","message","rectWidth","rectHeight","rectX","rectY","corners","y","boundingBox","croppedImage","confidence","clearCache","dispose","async","processOCRInWorker","input","startTime","createWorker","import","tessWorkerOptions","m","load","loadLanguage","setParameters","tessedit_char_whitelist","recognize","imageBase64","idCardInfo","text","info","lines","split","filter","line","trim","idNumberRegex","idNumberMatch","match","idNumber","includes","test","name","replace","genderNationalityRegex","genderMatch","gender","nationalityText","nationality","substring","indexOf","birthDateRegex","birthDateMatch","birthDate","addressRegex","addressMatch","address","authorityRegex","authorityMatch","issuingAuthority","validPeriodRegex","validPeriodMatch","validPeriod","parseIDCardText","processingTime","OCRProcessor","ocrWorker","initialized","useWorker","workerFunction","promiseMap","messageCounter","id","promiseHandlers","workerError","stack","createCustomWorker","processIDCard","downsampledImage","base64Image","toFixed","DataExtractor","validateIDNumber","year","parseInt","substr","month","day","date","getFullYear","getMonth","getDate","extractBirthDateFromID","extractGenderFromID","charAt","extractRegionFromID","enhanceIDCardInfo","ocrInfo","extractAndValidate","enhancedInfo","normalizeIDNumber","normalizeDate","normalizeAddress","toUpperCase","sexCode","scanMode","qrModule","ocrModule","isQRModuleLoaded","isOCRModuleLoaded","cameraOptions","OCRModule","onIDCardScanned","handleError","startQRScanner","ScannerModule","qrScannerOptions","barcodeScannerOptions","onQRCodeScanned","onBarcodeScanned","startBarcodeScanner","startIDCardScanner","processQRCodeImage","imageSource","imageElement","crossOrigin","HTMLImageElement","HTMLCanvasElement","dataURL","naturalWidth","naturalHeight","processBarcodeImage","processIDCardImage","IDScannerDemo","videoElementId","resultContainerId","switchButtonId","imageInputId","imageInput","currentMode","getElementById","resultContainer","switchButton","addEventListener","handleImageInput","scanner","IDScanner","handleQRCodeResult","handleIDCardResult","toggleScanMode","textContent","innerHTML","event","target","files","file","startsWith","imageUrl","qrScanner","barcodeScanner","idDetector","ocrProcessor","dataExtractor","handleQRScan","handleBarcodeScan","handleIDDetection","extractedInfo","ocrResult","isRunning","processedImage"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "id-scanner-lib",
3
- "version": "1.2.2",
3
+ "version": "1.3.2",
4
4
  "type": "module",
5
5
  "main": "dist/id-scanner.js",
6
6
  "module": "dist/id-scanner-core.esm.js",
@@ -27,20 +27,29 @@
27
27
  "scripts": {
28
28
  "build": "rollup -c",
29
29
  "dev": "rollup -c -w",
30
- "test": "echo \"Error: no test specified\" && exit 1",
30
+ "test": "echo \"No tests configured yet\"",
31
31
  "prepublishOnly": "npm run build",
32
32
  "publish:npm": "node scripts/publish.js",
33
- "update:github": "node scripts/update-github.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"
34
39
  },
35
40
  "keywords": [
36
41
  "id-card",
37
42
  "qr-code",
38
43
  "scanner",
39
- "ocr"
44
+ "ocr",
45
+ "barcode",
46
+ "identity",
47
+ "recognition",
48
+ "image-processing"
40
49
  ],
41
50
  "author": "agions",
42
51
  "license": "MIT",
43
- "description": "一款纯前端实现的TypeScript身份证&二维码识别库,无需后端支持,所有处理在浏览器端完成",
52
+ "description": "一款纯前端实现的TypeScript身份证&二维码识别库,无需后端支持,所有处理在浏览器端完成,新增图像批处理与优化",
44
53
  "repository": {
45
54
  "type": "git",
46
55
  "url": "git+https://github.com/agions/id-scanner-lib.git"
@@ -56,6 +65,7 @@
56
65
  "LICENSE"
57
66
  ],
58
67
  "publishConfig": {
68
+ "registry": "https://registry.npmjs.org/",
59
69
  "access": "public"
60
70
  },
61
71
  "devDependencies": {
@@ -65,13 +75,23 @@
65
75
  "@rollup/plugin-terser": "^0.4.4",
66
76
  "@rollup/plugin-typescript": "^12.1.2",
67
77
  "@types/node": "^22.13.10",
78
+ "picocolors": "^1.1.1",
68
79
  "rollup": "^4.35.0",
80
+ "rollup-plugin-bundle-analyzer": "^1.6.6",
81
+ "rollup-plugin-visualizer": "^5.9.2",
69
82
  "tslib": "^2.8.1",
70
83
  "typescript": "^5.8.2"
71
84
  },
72
85
  "dependencies": {
86
+ "browser-image-compression": "^2.0.2",
73
87
  "jsqr": "^1.4.0",
74
88
  "lodash-es": "^4.17.21",
75
89
  "tesseract.js": "^6.0.0"
76
- }
77
- }
90
+ },
91
+ "browserslist": [
92
+ ">0.2%",
93
+ "not dead",
94
+ "not op_mini all",
95
+ "last 2 versions"
96
+ ]
97
+ }
package/src/demo/demo.ts CHANGED
@@ -1,88 +1,204 @@
1
- import { IDScanner, IDCardInfo } from '../index';
1
+ import { IDScanner, IDCardInfo } from "../index"
2
2
 
3
3
  export class IDScannerDemo {
4
- private scanner: IDScanner;
5
- private videoElement: HTMLVideoElement;
6
- private resultContainer: HTMLElement;
7
- private switchButton: HTMLButtonElement;
8
-
9
- constructor(videoElementId: string, resultContainerId: string, switchButtonId: string) {
10
- this.videoElement = document.getElementById(videoElementId) as HTMLVideoElement;
11
- this.resultContainer = document.getElementById(resultContainerId) as HTMLElement;
12
- this.switchButton = document.getElementById(switchButtonId) as HTMLButtonElement;
13
-
14
- this.scanner = new IDScanner({
15
- onQRCodeScanned: this.handleQRCodeResult.bind(this),
16
- onBarcodeScanned: this.handleQRCodeResult.bind(this), // 复用QR码结果处理
17
- onIDCardScanned: this.handleIDCardResult.bind(this),
18
- onError: this.handleError.bind(this)
19
- });
20
-
21
- this.switchButton.addEventListener('click', this.toggleScanMode.bind(this));
4
+ private scanner: IDScanner
5
+ private videoElement: HTMLVideoElement
6
+ private resultContainer: HTMLElement
7
+ private switchButton: HTMLButtonElement
8
+ private imageInput: HTMLInputElement | null = null
9
+
10
+ constructor(
11
+ videoElementId: string,
12
+ resultContainerId: string,
13
+ switchButtonId: string,
14
+ imageInputId?: string
15
+ ) {
16
+ // 获取DOM元素
17
+ this.videoElement = document.getElementById(
18
+ videoElementId
19
+ ) as HTMLVideoElement
20
+ this.resultContainer = document.getElementById(
21
+ resultContainerId
22
+ ) as HTMLElement
23
+ this.switchButton = document.getElementById(
24
+ switchButtonId
25
+ ) as HTMLButtonElement
26
+
27
+ // 如果提供了图片输入元素ID,初始化图片输入功能
28
+ if (imageInputId) {
29
+ this.imageInput = document.getElementById(
30
+ imageInputId
31
+ ) as HTMLInputElement
32
+ if (this.imageInput) {
33
+ this.imageInput.addEventListener(
34
+ "change",
35
+ this.handleImageInput.bind(this)
36
+ )
37
+ }
38
+ }
39
+
40
+ try {
41
+ // 创建IDScanner实例
42
+ this.scanner = new IDScanner({
43
+ onQRCodeScanned: this.handleQRCodeResult.bind(this),
44
+ onBarcodeScanned: this.handleQRCodeResult.bind(this), // 复用QR码结果处理
45
+ onIDCardScanned: this.handleIDCardResult.bind(this),
46
+ onError: this.handleError.bind(this),
47
+ })
48
+ } catch (error) {
49
+ console.error("创建IDScanner实例失败:", error)
50
+ this.handleError(error instanceof Error ? error : new Error("初始化失败"))
51
+ // 创建一个空对象以避免空引用错误
52
+ this.scanner = {} as IDScanner
53
+ }
54
+
55
+ // 添加模式切换按钮事件监听
56
+ this.switchButton.addEventListener("click", this.toggleScanMode.bind(this))
22
57
  }
23
-
58
+
24
59
  async initialize(): Promise<void> {
25
- await this.scanner.initialize();
26
- await this.scanner.startQRScanner(this.videoElement);
27
- this.switchButton.textContent = '切换到身份证模式';
28
- this.currentMode = 'qr';
60
+ try {
61
+ await this.scanner.initialize()
62
+ await this.scanner.startQRScanner(this.videoElement)
63
+ this.switchButton.textContent = "切换到身份证模式"
64
+ this.currentMode = "qr"
65
+ } catch (error) {
66
+ this.handleError(error instanceof Error ? error : new Error("初始化失败"))
67
+ }
29
68
  }
30
-
31
- private currentMode: 'qr' | 'barcode' | 'idcard' = 'qr';
32
-
69
+
70
+ private currentMode: "qr" | "barcode" | "idcard" = "qr"
71
+
33
72
  private async toggleScanMode(): Promise<void> {
34
- this.scanner.stop();
35
-
36
- if (this.currentMode === 'qr') {
37
- this.currentMode = 'barcode';
38
- await this.scanner.startBarcodeScanner(this.videoElement);
39
- this.switchButton.textContent = '切换到身份证模式';
40
- } else if (this.currentMode === 'barcode') {
41
- this.currentMode = 'idcard';
42
- await this.scanner.startIDCardScanner(this.videoElement);
43
- this.switchButton.textContent = '切换到二维码模式';
44
- } else {
45
- this.currentMode = 'qr';
46
- await this.scanner.startQRScanner(this.videoElement);
47
- this.switchButton.textContent = '切换到条形码模式';
73
+ try {
74
+ this.scanner.stop()
75
+
76
+ if (this.currentMode === "qr") {
77
+ this.currentMode = "barcode"
78
+ await this.scanner.startBarcodeScanner(this.videoElement)
79
+ this.switchButton.textContent = "切换到身份证模式"
80
+ } else if (this.currentMode === "barcode") {
81
+ this.currentMode = "idcard"
82
+ await this.scanner.startIDCardScanner(this.videoElement)
83
+ this.switchButton.textContent = "切换到二维码模式"
84
+ } else {
85
+ this.currentMode = "qr"
86
+ await this.scanner.startQRScanner(this.videoElement)
87
+ this.switchButton.textContent = "切换到条形码模式"
88
+ }
89
+
90
+ this.resultContainer.innerHTML = ""
91
+ } catch (error) {
92
+ this.handleError(
93
+ error instanceof Error ? error : new Error("切换模式失败")
94
+ )
95
+ }
96
+ }
97
+
98
+ /**
99
+ * 处理图片输入
100
+ * 支持从文件选择器获取图片并进行识别
101
+ */
102
+ private async handleImageInput(event: Event): Promise<void> {
103
+ const input = event.target as HTMLInputElement
104
+ if (!input.files || input.files.length === 0) return
105
+
106
+ const file = input.files[0]
107
+
108
+ try {
109
+ // 检查文件类型
110
+ if (!file.type.startsWith("image/")) {
111
+ throw new Error("请选择图片文件")
112
+ }
113
+
114
+ // 创建一个本地URL以显示图片
115
+ const imageUrl = URL.createObjectURL(file)
116
+
117
+ // 显示处理中的提示
118
+ this.resultContainer.innerHTML = `
119
+ <h3>正在处理图片...</h3>
120
+ <img src="${imageUrl}" style="max-width: 100%; max-height: 300px; margin-bottom: 10px;">
121
+ `
122
+
123
+ // 根据当前模式处理图片
124
+ try {
125
+ if (this.currentMode === "qr") {
126
+ const result = await this.scanner.processQRCodeImage(imageUrl)
127
+ if (result) {
128
+ this.handleQRCodeResult(result)
129
+ }
130
+ } else if (this.currentMode === "barcode") {
131
+ const result = await this.scanner.processBarcodeImage(imageUrl)
132
+ if (result) {
133
+ this.handleQRCodeResult(result)
134
+ }
135
+ } else if (this.currentMode === "idcard") {
136
+ const result = await this.scanner.processIDCardImage(imageUrl)
137
+ if (result) {
138
+ this.handleIDCardResult(result)
139
+ }
140
+ }
141
+ } catch (error) {
142
+ // 如果处理失败,显示错误
143
+ this.resultContainer.innerHTML = `
144
+ <h3>识别结果:</h3>
145
+ <img src="${imageUrl}" style="max-width: 100%; max-height: 300px; margin-bottom: 10px;">
146
+ <p class="error">未能识别内容,请尝试其他图片或调整图片质量</p>
147
+ <p class="error">${
148
+ error instanceof Error ? error.message : "未知错误"
149
+ }</p>
150
+ `
151
+ }
152
+
153
+ // 清除文件选择,允许再次选择相同的文件
154
+ input.value = ""
155
+ } catch (error) {
156
+ this.handleError(
157
+ error instanceof Error ? error : new Error(String(error))
158
+ )
159
+
160
+ // 清除文件选择
161
+ input.value = ""
48
162
  }
49
-
50
- this.resultContainer.innerHTML = '';
51
163
  }
52
-
164
+
53
165
  private handleQRCodeResult(result: string): void {
54
166
  this.resultContainer.innerHTML = `
55
167
  <h3>扫描结果:</h3>
56
168
  <p>${result}</p>
57
- `;
169
+ `
58
170
  }
59
-
171
+
60
172
  private handleIDCardResult(info: IDCardInfo): void {
61
173
  this.resultContainer.innerHTML = `
62
174
  <h3>身份证信息:</h3>
63
- <p>姓名: ${info.name || '未识别'}</p>
64
- <p>性别: ${info.gender || '未识别'}</p>
65
- <p>民族: ${info.nationality || '未识别'}</p>
66
- <p>出生日期: ${info.birthDate || '未识别'}</p>
67
- <p>地址: ${info.address || '未识别'}</p>
68
- <p>身份证号: ${info.idNumber || '未识别'}</p>
69
- <p>签发机关: ${info.issuingAuthority || '未识别'}</p>
70
- <p>有效期限: ${info.validPeriod || '未识别'}</p>
71
- `;
175
+ <p>姓名: ${info.name || "未识别"}</p>
176
+ <p>性别: ${info.gender || "未识别"}</p>
177
+ <p>民族: ${info.nationality || "未识别"}</p>
178
+ <p>出生日期: ${info.birthDate || "未识别"}</p>
179
+ <p>地址: ${info.address || "未识别"}</p>
180
+ <p>身份证号: ${info.idNumber || "未识别"}</p>
181
+ <p>签发机关: ${info.issuingAuthority || "未识别"}</p>
182
+ <p>有效期限: ${info.validPeriod || "未识别"}</p>
183
+ `
72
184
  }
73
-
185
+
74
186
  private handleError(error: Error): void {
75
- console.error('扫描错误:', error);
187
+ console.error("扫描错误:", error)
76
188
  this.resultContainer.innerHTML = `
77
189
  <div class="error">
78
190
  <h3>错误:</h3>
79
191
  <p>${error.message}</p>
80
192
  </div>
81
- `;
193
+ `
82
194
  }
83
-
195
+
84
196
  stop(): void {
85
- this.scanner.stop();
86
- this.scanner.terminate();
197
+ if (this.scanner && typeof this.scanner.stop === "function") {
198
+ this.scanner.stop()
199
+ }
200
+ if (this.scanner && typeof this.scanner.terminate === "function") {
201
+ this.scanner.terminate()
202
+ }
87
203
  }
88
- }
204
+ }