@trustchex/react-native-sdk 1.512.1 → 1.513.1
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/android/src/main/java/com/trustchex/reactnativesdk/camera/TrustchexCameraView.kt +9 -2
- package/android/src/main/java/com/trustchex/reactnativesdk/opencv/OpenCVModule.kt +54 -0
- package/ios/Camera/TrustchexCameraView.swift +6 -2
- package/ios/OpenCV/OpenCVModule.mm +59 -0
- package/lib/module/Screens/Dynamic/AddressCaptureScreen.js +427 -112
- package/lib/module/Screens/Dynamic/IdentityDocumentEIDScanningScreen.js +9 -4
- package/lib/module/Screens/Static/ResultScreen.js +46 -0
- package/lib/module/Shared/Animations/address-scan.json +1 -0
- package/lib/module/Shared/Components/DebugNavigationPanel.js +10 -0
- package/lib/module/Shared/Components/EIDScanner.js +16 -4
- package/lib/module/Shared/Components/IdentityDocumentCamera.js +100 -19
- package/lib/module/Shared/Components/IdentityDocumentCamera.utils.js +47 -0
- package/lib/module/Shared/Libs/addressProofHeuristic.js +130 -0
- package/lib/module/Shared/Libs/demo.utils.js +4 -0
- package/lib/module/Shared/Libs/sendDiagnosticReport.js +47 -1
- package/lib/module/Shared/Libs/vizName.js +138 -16
- package/lib/module/Translation/Resources/en.js +16 -3
- package/lib/module/Translation/Resources/tr.js +16 -3
- package/lib/module/version.js +1 -1
- package/lib/typescript/src/Screens/Dynamic/AddressCaptureScreen.d.ts.map +1 -1
- package/lib/typescript/src/Screens/Dynamic/IdentityDocumentEIDScanningScreen.d.ts.map +1 -1
- package/lib/typescript/src/Screens/Static/ResultScreen.d.ts.map +1 -1
- package/lib/typescript/src/Shared/Components/DebugNavigationPanel.d.ts.map +1 -1
- package/lib/typescript/src/Shared/Components/EIDScanner.d.ts +8 -3
- package/lib/typescript/src/Shared/Components/EIDScanner.d.ts.map +1 -1
- package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.d.ts.map +1 -1
- package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.utils.d.ts +25 -0
- package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.utils.d.ts.map +1 -1
- package/lib/typescript/src/Shared/Libs/addressProofHeuristic.d.ts +34 -0
- package/lib/typescript/src/Shared/Libs/addressProofHeuristic.d.ts.map +1 -0
- package/lib/typescript/src/Shared/Libs/demo.utils.d.ts.map +1 -1
- package/lib/typescript/src/Shared/Libs/sendDiagnosticReport.d.ts.map +1 -1
- package/lib/typescript/src/Shared/Libs/vizName.d.ts +31 -6
- package/lib/typescript/src/Shared/Libs/vizName.d.ts.map +1 -1
- package/lib/typescript/src/Shared/Types/identificationInfo.d.ts +0 -5
- package/lib/typescript/src/Shared/Types/identificationInfo.d.ts.map +1 -1
- package/lib/typescript/src/Translation/Resources/en.d.ts +13 -0
- package/lib/typescript/src/Translation/Resources/en.d.ts.map +1 -1
- package/lib/typescript/src/Translation/Resources/tr.d.ts +13 -0
- package/lib/typescript/src/Translation/Resources/tr.d.ts.map +1 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/Screens/Dynamic/AddressCaptureScreen.tsx +434 -75
- package/src/Screens/Dynamic/IdentityDocumentEIDScanningScreen.tsx +14 -4
- package/src/Screens/Static/ResultScreen.tsx +59 -0
- package/src/Shared/Animations/address-scan.json +1 -0
- package/src/Shared/Components/DebugNavigationPanel.tsx +13 -0
- package/src/Shared/Components/EIDScanner.tsx +38 -12
- package/src/Shared/Components/IdentityDocumentCamera.tsx +109 -17
- package/src/Shared/Components/IdentityDocumentCamera.utils.ts +53 -0
- package/src/Shared/Libs/addressProofHeuristic.ts +197 -0
- package/src/Shared/Libs/demo.utils.ts +5 -0
- package/src/Shared/Libs/sendDiagnosticReport.ts +65 -7
- package/src/Shared/Libs/vizName.ts +158 -20
- package/src/Shared/Types/identificationInfo.ts +0 -5
- package/src/Translation/Resources/en.ts +28 -3
- package/src/Translation/Resources/tr.ts +28 -3
- package/src/version.ts +1 -1
|
@@ -19,11 +19,47 @@
|
|
|
19
19
|
* - `scanDataJson` — the scanned identity data (PII),
|
|
20
20
|
* - `images` — the captured document/face images (base64, PII).
|
|
21
21
|
*/
|
|
22
|
+
import { NativeModules } from 'react-native';
|
|
22
23
|
import { diagnostics } from "./diagnostics.js";
|
|
23
24
|
import { gatherDeviceDetails } from "./native-device-info.utils.js";
|
|
24
25
|
import { buildDiagnosticReport } from "./diagnosticReport.js";
|
|
25
26
|
import { solvePowAsync, PowCancelledError } from "./diagnosticPow.js";
|
|
26
27
|
import { logError } from "./debug.utils.js";
|
|
28
|
+
// Diagnostic images are for a support inbox, not archival — full capture
|
|
29
|
+
// resolution is wasteful and makes the upload (and the on-JS-thread
|
|
30
|
+
// JSON.stringify of the payload) slow. Cap the longest edge and recompress so
|
|
31
|
+
// the whole bundle is a few hundred KB instead of several MB.
|
|
32
|
+
const DIAGNOSTIC_IMAGE_MAX_DIM = 1024;
|
|
33
|
+
const DIAGNOSTIC_IMAGE_JPEG_QUALITY = 70;
|
|
34
|
+
/**
|
|
35
|
+
* Downscale + recompress the report images off the JS thread (native OpenCV
|
|
36
|
+
* module), in parallel. Best-effort per image: if the native method is missing
|
|
37
|
+
* or throws, that image falls back to its original base64 so the report still
|
|
38
|
+
* sends. Already-small images are returned near-unchanged (native never
|
|
39
|
+
* upscales).
|
|
40
|
+
*/
|
|
41
|
+
async function shrinkDiagnosticImages(images) {
|
|
42
|
+
const opencv = NativeModules.OpenCVModule;
|
|
43
|
+
if (!opencv?.resizeAndCompress) return images;
|
|
44
|
+
return Promise.all(images.map(async img => {
|
|
45
|
+
if (!img.base64) return img;
|
|
46
|
+
try {
|
|
47
|
+
const shrunk = await opencv.resizeAndCompress(img.base64, DIAGNOSTIC_IMAGE_MAX_DIM, DIAGNOSTIC_IMAGE_JPEG_QUALITY);
|
|
48
|
+
// On any failure the native side resolves the ORIGINAL base64 unchanged
|
|
49
|
+
// (same string) — in that case keep the original mime, since a PNG that
|
|
50
|
+
// failed to shrink is still PNG. Only when it actually recompressed (a
|
|
51
|
+
// new string) is the output guaranteed JPEG, so relabel then.
|
|
52
|
+
if (!shrunk || shrunk === img.base64) return img;
|
|
53
|
+
return {
|
|
54
|
+
...img,
|
|
55
|
+
base64: shrunk,
|
|
56
|
+
mime: 'jpg'
|
|
57
|
+
};
|
|
58
|
+
} catch {
|
|
59
|
+
return img;
|
|
60
|
+
}
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
27
63
|
const mimeToType = mime => mime === 'png' ? 'image/png' : 'image/jpeg';
|
|
28
64
|
|
|
29
65
|
/**
|
|
@@ -63,6 +99,16 @@ export const sendDiagnosticReport = async params => {
|
|
|
63
99
|
const nfc = snapshot.nfc;
|
|
64
100
|
const failingSw = nfc.failureStep ? nfc.steps.find(s => s.step === nfc.failureStep && !s.ok)?.sw : undefined;
|
|
65
101
|
const nfcErrorCode = nfc.attempted && !nfc.succeeded ? `NFC-${(nfc.errorCategory ?? 'reading_error').toUpperCase()}${failingSw ? `-${failingSw}` : ''}` : null;
|
|
102
|
+
|
|
103
|
+
// Shrink images natively before they go into the (JS-stringified) payload —
|
|
104
|
+
// this is the dominant cost of the send, not the proof-of-work.
|
|
105
|
+
const shrunkImages = await shrinkDiagnosticImages(images.filter(img => img.base64));
|
|
106
|
+
if (shouldCancel?.()) {
|
|
107
|
+
return {
|
|
108
|
+
uploaded: false,
|
|
109
|
+
cancelled: true
|
|
110
|
+
};
|
|
111
|
+
}
|
|
66
112
|
const payload = {
|
|
67
113
|
// metadata (stored in plaintext, no PII)
|
|
68
114
|
platform: device.platform,
|
|
@@ -76,7 +122,7 @@ export const sendDiagnosticReport = async params => {
|
|
|
76
122
|
// full report (PII, encrypted at rest by the backend)
|
|
77
123
|
diagnosticsJson: report.diagnosticsJson,
|
|
78
124
|
scanDataJson: report.scanDataJson,
|
|
79
|
-
images:
|
|
125
|
+
images: shrunkImages.map(img => ({
|
|
80
126
|
name: img.name,
|
|
81
127
|
base64: img.base64,
|
|
82
128
|
mimeType: mimeToType(img.mime)
|
|
@@ -54,21 +54,61 @@ export async function recognizeVizBlocks(base64Image) {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
|
-
* Fold
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
57
|
+
* Fold diacritics to bare ASCII letters but PRESERVE digits, spaces and other
|
|
58
|
+
* separators (uppercased). This is the shared normalization core: strip
|
|
59
|
+
* combining marks via NFD, then map the handful of letters that have no
|
|
60
|
+
* combining decomposition. Used by both {@link foldAscii} (which then drops
|
|
61
|
+
* non-letters) and the address-proof heuristic (which keeps digits/separators
|
|
62
|
+
* so it can tokenize and detect postal codes).
|
|
62
63
|
*/
|
|
63
|
-
export function
|
|
64
|
+
export function foldDiacritics(value) {
|
|
64
65
|
if (!value) return '';
|
|
65
66
|
return value.normalize('NFD').replace(/[̀-ͯ]/g, '') // combining diacritical marks
|
|
66
|
-
.replace(/ı/g, 'i').replace(/İ/g, 'I').replace(/ø/gi, 'O').replace(/ł/gi, 'L').replace(/đ/gi, 'D').replace(/ð/gi, 'D').replace(/þ/gi, 'TH').replace(/ß/g, 'SS').replace(/æ/gi, 'AE').replace(/œ/gi, 'OE').toUpperCase()
|
|
67
|
+
.replace(/ı/g, 'i').replace(/İ/g, 'I').replace(/ø/gi, 'O').replace(/ł/gi, 'L').replace(/đ/gi, 'D').replace(/ð/gi, 'D').replace(/þ/gi, 'TH').replace(/ß/g, 'SS').replace(/æ/gi, 'AE').replace(/œ/gi, 'OE').toUpperCase();
|
|
68
|
+
}
|
|
69
|
+
export function foldAscii(value) {
|
|
70
|
+
// Bare letters only — drop digits, spaces and punctuation after folding.
|
|
71
|
+
return foldDiacritics(value).replace(/[^A-Z]/g, '');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* True when a line looks like a machine-readable-zone (MRZ) line rather than a
|
|
76
|
+
* printed field. MRZ lines are long OCR-B runs of `[A-Z0-9<]` padded with `<`
|
|
77
|
+
* filler (e.g. `P<TURSIMSEK<<CAGRI<<<<<…`). They MUST be excluded from the name
|
|
78
|
+
* search: the MRZ literally contains the folded target name, so if an MRZ line
|
|
79
|
+
* leaked into the candidate lines it would "match" and return the ASCII name
|
|
80
|
+
* with no diacritics restored — silently defeating the whole VIZ recovery. This
|
|
81
|
+
* is a content check (not a position guess), so it holds no matter where the OCR
|
|
82
|
+
* places the MRZ block or how many blocks it spans.
|
|
83
|
+
*/
|
|
84
|
+
function isMrzLine(line) {
|
|
85
|
+
const compact = line.replace(/\s+/g, '');
|
|
86
|
+
// A run of ≥2 consecutive fillers is unique to the MRZ; printed name lines
|
|
87
|
+
// never contain `<<`. Also treat a long, dense OCR-B run as MRZ.
|
|
88
|
+
return /<{2,}/.test(compact) || compact.length >= 20 && /^[A-Z0-9<]+$/i.test(compact) && /</.test(compact);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Upper-case a printed token for display, honouring Turkish casing when the
|
|
93
|
+
* document is Turkish, and normalising to NFC.
|
|
94
|
+
*
|
|
95
|
+
* Two Turkish-specific glitches this fixes (both reported from the field):
|
|
96
|
+
* - "different i": the default (invariant) `toUpperCase()` maps a lower-case
|
|
97
|
+
* dotted `i` to a DOTLESS `I`, so an OCR'd "İsmail" becomes "İSMAIL" instead
|
|
98
|
+
* of the correct "İSMAİL". Turkish-locale uppercasing maps `i`→`İ` and the
|
|
99
|
+
* dotless `ı`→`I`, preserving the dot distinction Turkish depends on.
|
|
100
|
+
* - "dot leaned to the right": some sources/fonts carry the dotted capital as a
|
|
101
|
+
* DECOMPOSED `I`+combining-dot (U+0049 U+0307), which renders with an offset
|
|
102
|
+
* dot. NFC precomposes it to the single glyph `İ` (U+0130).
|
|
103
|
+
*/
|
|
104
|
+
function upperForDisplay(word, locale) {
|
|
105
|
+
const upper = locale ? word.toLocaleUpperCase(locale) : word.toUpperCase();
|
|
106
|
+
return upper.normalize('NFC');
|
|
67
107
|
}
|
|
68
108
|
|
|
69
109
|
/** Split a printed-name line into upper-case word tokens (letters + marks). */
|
|
70
|
-
function tokenize(line) {
|
|
71
|
-
return line.split(/[\s,]+/).map(w => w.trim()).filter(w => w.length > 0 && /\p{L}/u.test(w)).map(w => w
|
|
110
|
+
function tokenize(line, locale) {
|
|
111
|
+
return line.split(/[\s,]+/).map(w => w.trim()).filter(w => w.length > 0 && /\p{L}/u.test(w)).map(w => upperForDisplay(w, locale));
|
|
72
112
|
}
|
|
73
113
|
|
|
74
114
|
/**
|
|
@@ -80,11 +120,11 @@ function tokenize(line) {
|
|
|
80
120
|
* Because the comparison is on the FOLDED form, only an exact same-name match
|
|
81
121
|
* succeeds — a different printed name will not fold-match and yields null.
|
|
82
122
|
*/
|
|
83
|
-
function recoverPrintedName(lines, mrzName) {
|
|
123
|
+
function recoverPrintedName(lines, mrzName, locale) {
|
|
84
124
|
const target = foldAscii(mrzName);
|
|
85
125
|
if (!target) return null;
|
|
86
126
|
for (const line of lines) {
|
|
87
|
-
const tokens = tokenize(line);
|
|
127
|
+
const tokens = tokenize(line, locale);
|
|
88
128
|
// Slide a window over the tokens; the printed name may sit among other
|
|
89
129
|
// label text on the same block ("Surname / Nom ÖZTÜRK").
|
|
90
130
|
for (let start = 0; start < tokens.length; start++) {
|
|
@@ -114,13 +154,23 @@ function recoverPrintedName(lines, mrzName) {
|
|
|
114
154
|
* sit ABOVE the MRZ on the data page; passing this restricts the
|
|
115
155
|
* search to blocks above it, avoiding false matches in the MRZ
|
|
116
156
|
* itself. When undefined, all blocks are searched.
|
|
157
|
+
* @param issuingCountry ICAO 3-letter issuing state, used to pick locale-correct
|
|
158
|
+
* casing for the recovered name (Turkish `i`/`İ` handling). When
|
|
159
|
+
* omitted, invariant uppercasing is used.
|
|
117
160
|
*/
|
|
118
|
-
export function recoverVizName(blocks, mrzFirst, mrzLast, mrzTop) {
|
|
161
|
+
export function recoverVizName(blocks, mrzFirst, mrzLast, mrzTop, issuingCountry) {
|
|
162
|
+
// Turkish needs locale-aware uppercasing so the dotted/dotless i distinction
|
|
163
|
+
// survives (i→İ, ı→I). Other Latin scripts are unaffected by invariant casing.
|
|
164
|
+
const locale = issuingCountry?.toUpperCase() === 'TUR' ? 'tr' : undefined;
|
|
119
165
|
const above = typeof mrzTop === 'number' ? blocks.filter(b => b.top < mrzTop) : blocks;
|
|
120
|
-
// Each block's text may hold several printed lines.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
166
|
+
// Each block's text may hold several printed lines. Drop any MRZ line: the
|
|
167
|
+
// `mrzTop` position filter above is only a hint (the caller can't always know
|
|
168
|
+
// the true MRZ block, and the MRZ may span several blocks), so we also exclude
|
|
169
|
+
// MRZ lines by content — otherwise the MRZ's own name text would fold-match
|
|
170
|
+
// the target and be returned as the "printed" name with diacritics stripped.
|
|
171
|
+
const lines = above.flatMap(b => b.text.split(/\r?\n/)).filter(l => !isMrzLine(l));
|
|
172
|
+
const vizFirst = mrzFirst ? recoverPrintedName(lines, mrzFirst, locale) : null;
|
|
173
|
+
const vizLast = mrzLast ? recoverPrintedName(lines, mrzLast, locale) : null;
|
|
124
174
|
|
|
125
175
|
// Detect a letter-level discrepancy: a printed line clearly carries the name
|
|
126
176
|
// field but its fold does not equal the MRZ name. We approximate this by
|
|
@@ -137,4 +187,76 @@ export function recoverVizName(blocks, mrzFirst, mrzLast, mrzTop) {
|
|
|
137
187
|
vizLast,
|
|
138
188
|
mismatch
|
|
139
189
|
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Pick the most frequent non-null value from a list of candidates.
|
|
194
|
+
*
|
|
195
|
+
* OCR is noisy: the same printed name can come back slightly different across
|
|
196
|
+
* passes (a diacritic dropped, an i-variant flipped, a stray combining mark).
|
|
197
|
+
* Rather than trust a single read, we run recovery over several images/frames
|
|
198
|
+
* and take the value that appeared MOST OFTEN as the truth. Ties are broken by
|
|
199
|
+
* first appearance (stable), and null/empty candidates never win — a pass that
|
|
200
|
+
* failed to recover the name doesn't dilute the ones that succeeded.
|
|
201
|
+
*
|
|
202
|
+
* Values are compared by NFC form so two spellings that only differ by
|
|
203
|
+
* composition (precomposed İ vs I+combining-dot) are counted as the same vote.
|
|
204
|
+
*/
|
|
205
|
+
function voteMostFrequent(values, minAgree) {
|
|
206
|
+
const counts = new Map();
|
|
207
|
+
let total = 0;
|
|
208
|
+
for (const v of values) {
|
|
209
|
+
if (!v) continue;
|
|
210
|
+
total += 1;
|
|
211
|
+
const key = v.normalize('NFC');
|
|
212
|
+
const entry = counts.get(key);
|
|
213
|
+
if (entry) entry.count += 1;else counts.set(key, {
|
|
214
|
+
count: 1,
|
|
215
|
+
display: key
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
let winner = null;
|
|
219
|
+
for (const entry of counts.values()) {
|
|
220
|
+
if (!winner || entry.count > winner.count) winner = entry;
|
|
221
|
+
}
|
|
222
|
+
if (!winner) return null;
|
|
223
|
+
// Require the winner to be corroborated by multiple samples — the name is
|
|
224
|
+
// only "decided" when frames AGREE. The exception is when there is only a
|
|
225
|
+
// single sample available at all (total < minAgree): with one OCR pass we
|
|
226
|
+
// can't reach a quorum, so we accept that lone reading rather than discard a
|
|
227
|
+
// legitimately-recovered name. (It is still non-destructive — recoverVizName
|
|
228
|
+
// only ever returns a value that folds to the same ASCII as the MRZ.)
|
|
229
|
+
if (winner.count < minAgree && total >= minAgree) return null;
|
|
230
|
+
return winner.display;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Fuse several VIZ recovery results into one by majority vote per field.
|
|
235
|
+
*
|
|
236
|
+
* Run {@link recoverVizName} over multiple frames/images (e.g. several camera
|
|
237
|
+
* frames of the data page, or the passport page plus ID front/back), then pass
|
|
238
|
+
* the candidates here. Each field (first/last) is decided independently by the
|
|
239
|
+
* value that MULTIPLE samples agree on — a single noisy OCR pass can neither
|
|
240
|
+
* corrupt the name nor decide it alone. When only one sample exists we fall
|
|
241
|
+
* back to it (can't form a quorum from one frame).
|
|
242
|
+
*
|
|
243
|
+
* Non-destructive by construction: this only ever surfaces a diacritic form
|
|
244
|
+
* that {@link recoverVizName} already confirmed folds to the same ASCII as the
|
|
245
|
+
* MRZ name, so the authoritative MRZ letters are never changed — only their
|
|
246
|
+
* diacritics restored. `mismatch` is reported only when NO sample recovered a
|
|
247
|
+
* field yet at least one saw printed name text that disagreed with the MRZ.
|
|
248
|
+
*
|
|
249
|
+
* @param candidates One {@link VizNameCandidate} per frame/image.
|
|
250
|
+
* @param minAgree Minimum agreeing samples to "decide" a field (default 2).
|
|
251
|
+
*/
|
|
252
|
+
export function voteVizName(candidates, minAgree = 2) {
|
|
253
|
+
const vizFirst = voteMostFrequent(candidates.map(c => c.vizFirst), minAgree);
|
|
254
|
+
const vizLast = voteMostFrequent(candidates.map(c => c.vizLast), minAgree);
|
|
255
|
+
const anyMismatch = candidates.some(c => c.mismatch);
|
|
256
|
+
const mismatch = anyMismatch && (vizFirst === null || vizLast === null);
|
|
257
|
+
return {
|
|
258
|
+
vizFirst,
|
|
259
|
+
vizLast,
|
|
260
|
+
mismatch
|
|
261
|
+
};
|
|
140
262
|
}
|
|
@@ -101,11 +101,24 @@ export default {
|
|
|
101
101
|
'addressCaptureScreen.addressLabel': 'Address',
|
|
102
102
|
'addressCaptureScreen.addressPlaceholder': 'Street, number, city, country',
|
|
103
103
|
'addressCaptureScreen.proofLabel': 'Proof of address',
|
|
104
|
-
'addressCaptureScreen.proofHint': 'A residence certificate,
|
|
104
|
+
'addressCaptureScreen.proofHint': 'A residence certificate, a utility bill issued within the last 3 months, or a document from a public authority. Capture the whole document.',
|
|
105
105
|
'addressCaptureScreen.captureProof': 'Capture proof document',
|
|
106
|
-
'addressCaptureScreen.retakeProof': 'Retake
|
|
107
|
-
'addressCaptureScreen.proofCameraHint': '
|
|
106
|
+
'addressCaptureScreen.retakeProof': 'Retake',
|
|
107
|
+
'addressCaptureScreen.proofCameraHint': 'Fit the whole document inside the frame, then capture.',
|
|
108
108
|
'addressCaptureScreen.capture': 'Capture',
|
|
109
|
+
'addressCaptureScreen.previewHint': 'Make sure the whole document is readable.',
|
|
110
|
+
'addressCaptureScreen.warnNoName': "We couldn't find your name on this document. Make sure your name is visible, or continue if it's correct.",
|
|
111
|
+
'addressCaptureScreen.warnNoAddress': "We couldn't detect an address on this document. Make sure the address is visible, or continue if it's correct.",
|
|
112
|
+
'addressCaptureScreen.warnNoText': "We couldn't read this document. Make sure the whole page is in frame and readable, or continue if it's correct.",
|
|
113
|
+
'addressCaptureScreen.guideHeader': 'Proof of address',
|
|
114
|
+
'addressCaptureScreen.guideText': 'Please ensure the following for best results:',
|
|
115
|
+
'addressCaptureScreen.guidePointWholeDocument': 'Fit the entire document inside the frame.',
|
|
116
|
+
'addressCaptureScreen.guidePointLighting': 'Use good lighting and avoid glare or shadows.',
|
|
117
|
+
'addressCaptureScreen.guidePointSteady': 'Hold the device steady so the photo is sharp.',
|
|
118
|
+
'addressCaptureScreen.guidePointDocuments': 'A residence certificate, a utility bill no older than 3 months, or a public-authority document.',
|
|
119
|
+
'addressCaptureScreen.retakeTooDark': 'Too dark — move to better lighting and retake.',
|
|
120
|
+
'addressCaptureScreen.retakeTooBright': 'Too bright or glare — adjust the angle and retake.',
|
|
121
|
+
'addressCaptureScreen.retakeBlurry': 'Photo is blurry — hold steady and retake.',
|
|
109
122
|
'eidScannerScreen.faceImageNotFound': 'Photo data not found on document.',
|
|
110
123
|
'eidScannerScreen.documentCode': 'Document Type',
|
|
111
124
|
'eidScannerScreen.nationality': 'Nationality',
|
|
@@ -101,11 +101,24 @@ export default {
|
|
|
101
101
|
'addressCaptureScreen.addressLabel': 'Adres',
|
|
102
102
|
'addressCaptureScreen.addressPlaceholder': 'Cadde, numara, şehir, ülke',
|
|
103
103
|
'addressCaptureScreen.proofLabel': 'Adres kanıtı',
|
|
104
|
-
'addressCaptureScreen.proofHint': 'Yerleşim yeri belgesi
|
|
104
|
+
'addressCaptureScreen.proofHint': 'Yerleşim yeri belgesi, son 3 ay içinde düzenlenmiş bir fatura ya da bir kamu kurumu tarafından verilen belge. Belgenin tamamını çekin.',
|
|
105
105
|
'addressCaptureScreen.captureProof': 'Kanıt belgesini çek',
|
|
106
|
-
'addressCaptureScreen.retakeProof': '
|
|
107
|
-
'addressCaptureScreen.proofCameraHint': '
|
|
106
|
+
'addressCaptureScreen.retakeProof': 'Yeniden çek',
|
|
107
|
+
'addressCaptureScreen.proofCameraHint': 'Belgenin tamamını çerçeveye sığdırın ve fotoğraf çekin.',
|
|
108
108
|
'addressCaptureScreen.capture': 'Çek',
|
|
109
|
+
'addressCaptureScreen.previewHint': 'Belgenin tamamının okunaklı olduğundan emin olun.',
|
|
110
|
+
'addressCaptureScreen.warnNoName': 'Bu belgede adınızı bulamadık. Adınızın göründüğünden emin olun ya da doğruysa devam edin.',
|
|
111
|
+
'addressCaptureScreen.warnNoAddress': 'Bu belgede bir adres tespit edemedik. Adresin göründüğünden emin olun ya da doğruysa devam edin.',
|
|
112
|
+
'addressCaptureScreen.warnNoText': 'Bu belgeyi okuyamadık. Sayfanın tamamının kadraja girdiğinden ve okunaklı olduğundan emin olun ya da doğruysa devam edin.',
|
|
113
|
+
'addressCaptureScreen.guideHeader': 'Adres kanıtı',
|
|
114
|
+
'addressCaptureScreen.guideText': 'En iyi sonuç için lütfen şunları sağlayın:',
|
|
115
|
+
'addressCaptureScreen.guidePointWholeDocument': 'Belgenin tamamını çerçeveye sığdırın.',
|
|
116
|
+
'addressCaptureScreen.guidePointLighting': 'İyi aydınlatma kullanın; yansıma ve gölgeden kaçının.',
|
|
117
|
+
'addressCaptureScreen.guidePointSteady': 'Fotoğrafın net olması için cihazı sabit tutun.',
|
|
118
|
+
'addressCaptureScreen.guidePointDocuments': 'Yerleşim yeri belgesi, son 3 aydan eski olmayan bir fatura ya da bir kamu kurumu belgesi.',
|
|
119
|
+
'addressCaptureScreen.retakeTooDark': 'Çok karanlık — daha aydınlık bir yere geçip tekrar çekin.',
|
|
120
|
+
'addressCaptureScreen.retakeTooBright': 'Çok parlak veya yansıma var — açıyı değiştirip tekrar çekin.',
|
|
121
|
+
'addressCaptureScreen.retakeBlurry': 'Fotoğraf bulanık — sabit tutup tekrar çekin.',
|
|
109
122
|
'eidScannerScreen.faceImageNotFound': 'Belgede fotoğraf verisi bulunamadı.',
|
|
110
123
|
'eidScannerScreen.documentCode': 'Belge Türü',
|
|
111
124
|
'eidScannerScreen.nationality': 'Uyruk',
|
package/lib/module/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressCaptureScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Dynamic/AddressCaptureScreen.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddressCaptureScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Dynamic/AddressCaptureScreen.tsx"],"names":[],"mappings":"AAiFA;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,+CA0TzB,CAAC;AAyJF,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityDocumentEIDScanningScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Dynamic/IdentityDocumentEIDScanningScreen.tsx"],"names":[],"mappings":"AAsBA,QAAA,MAAM,iCAAiC,+
|
|
1
|
+
{"version":3,"file":"IdentityDocumentEIDScanningScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Dynamic/IdentityDocumentEIDScanningScreen.tsx"],"names":[],"mappings":"AAsBA,QAAA,MAAM,iCAAiC,+CA8QtC,CAAC;AAoBF,eAAe,iCAAiC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResultScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Static/ResultScreen.tsx"],"names":[],"mappings":"AA6EA,QAAA,MAAM,YAAY,+
|
|
1
|
+
{"version":3,"file":"ResultScreen.d.ts","sourceRoot":"","sources":["../../../../../src/Screens/Static/ResultScreen.tsx"],"names":[],"mappings":"AA6EA,QAAA,MAAM,YAAY,+CAovCjB,CAAC;AAoMF,eAAe,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DebugNavigationPanel.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/DebugNavigationPanel.tsx"],"names":[],"mappings":"AAmCA,QAAA,MAAM,oBAAoB,+
|
|
1
|
+
{"version":3,"file":"DebugNavigationPanel.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/DebugNavigationPanel.tsx"],"names":[],"mappings":"AAmCA,QAAA,MAAM,oBAAoB,+CA8ezB,CAAC;AA+MF,eAAe,oBAAoB,CAAC"}
|
|
@@ -11,14 +11,19 @@ interface eIDScannerProps {
|
|
|
11
11
|
*/
|
|
12
12
|
vizMrzFields?: MRZFields;
|
|
13
13
|
/**
|
|
14
|
-
* Full data-page image from the EID step's camera scan.
|
|
15
|
-
*
|
|
14
|
+
* Full data-page image(s) from the EID step's camera scan. Each is OCR'd to
|
|
15
|
+
* recover the diacritic printed name when the chip's DG11 is absent or
|
|
16
16
|
* one-sided — DG11 (the authenticated chip's own name) still takes precedence.
|
|
17
|
+
* When more than one image is available (e.g. passport page + ID front/back),
|
|
18
|
+
* the recovered names are fused by majority vote so a single noisy OCR pass
|
|
19
|
+
* can't corrupt the result.
|
|
17
20
|
*/
|
|
18
21
|
vizImage?: string;
|
|
22
|
+
/** Additional VIZ images to OCR and vote over, alongside `vizImage`. */
|
|
23
|
+
vizImages?: (string | undefined)[];
|
|
19
24
|
onScanSuccess?: (mrzInfo: MRZFields, faceImage: string, faceImageMimeType: string) => void;
|
|
20
25
|
isNFCSupported?: (supported: boolean) => void;
|
|
21
26
|
}
|
|
22
|
-
declare const EIDScanner: ({ documentNumber, dateOfBirth, dateOfExpiry, documentType, vizMrzFields, vizImage, onScanSuccess, isNFCSupported, }: eIDScannerProps) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
declare const EIDScanner: ({ documentNumber, dateOfBirth, dateOfExpiry, documentType, vizMrzFields, vizImage, vizImages, onScanSuccess, isNFCSupported, }: eIDScannerProps) => import("react/jsx-runtime").JSX.Element;
|
|
23
28
|
export default EIDScanner;
|
|
24
29
|
//# sourceMappingURL=EIDScanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EIDScanner.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/EIDScanner.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"EIDScanner.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/EIDScanner.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAkCpD,UAAU,eAAe;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,KACtB,IAAI,CAAC;IACV,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAED,QAAA,MAAM,UAAU,GAAI,gIAUjB,eAAe,4CA68BjB,CAAC;AAsOF,eAAe,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityDocumentCamera.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/IdentityDocumentCamera.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IdentityDocumentCamera.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/IdentityDocumentCamera.tsx"],"names":[],"mappings":"AA6EA,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,2BAA2B,EAK5B,MAAM,gCAAgC,CAAC;AAGxC,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAC;AAC5E,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAMnE,QAAA,MAAM,sBAAsB,GAAI,uDAI7B,2BAA2B,4CA02F7B,CAAC;AA0LF,eAAe,sBAAsB,CAAC"}
|
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
import type { ScanStep, ScanStatus, DocumentType, Face } from './IdentityDocumentCamera.types';
|
|
2
2
|
import type { MRZFields } from '../Types/mrzFields';
|
|
3
|
+
/**
|
|
4
|
+
* Debounced boolean with hysteresis, for stabilizing per-frame quality flags.
|
|
5
|
+
*
|
|
6
|
+
* The camera measures brightness/blur/glare on EVERY frame, and a single noisy
|
|
7
|
+
* frame (a momentary blur while the hand moves, one dark frame) would otherwise
|
|
8
|
+
* flip the on-screen guidance on and off many times a second — a distracting
|
|
9
|
+
* flicker. This smooths a raw per-frame boolean so it only turns ON after
|
|
10
|
+
* `raiseFrames` consecutive true readings and only turns OFF after `clearFrames`
|
|
11
|
+
* consecutive false readings; isolated opposite frames are absorbed. Asymmetric
|
|
12
|
+
* by design: warnings should appear promptly once a problem is real (small
|
|
13
|
+
* `raiseFrames`) but linger briefly so they don't strobe (larger `clearFrames`).
|
|
14
|
+
*/
|
|
15
|
+
export declare class StableFlag {
|
|
16
|
+
private readonly raiseFrames;
|
|
17
|
+
private readonly clearFrames;
|
|
18
|
+
private value;
|
|
19
|
+
private streak;
|
|
20
|
+
private lastRaw;
|
|
21
|
+
constructor(raiseFrames: number, clearFrames: number, initial?: boolean);
|
|
22
|
+
/** Feed one raw measurement; returns the current stabilized value. */
|
|
23
|
+
push(raw: boolean): boolean;
|
|
24
|
+
/** Force the stabilized value (e.g. on step change) without waiting. */
|
|
25
|
+
reset(value: boolean): void;
|
|
26
|
+
get current(): boolean;
|
|
27
|
+
}
|
|
3
28
|
/**
|
|
4
29
|
* Checks if a document code represents an ID card (TD1/TD2).
|
|
5
30
|
* Per ICAO 9303, valid ID card codes start with 'I', 'A', or 'C'.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityDocumentCamera.utils.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/IdentityDocumentCamera.utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IdentityDocumentCamera.utils.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Components/IdentityDocumentCamera.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* On-device, best-effort check that a captured address-proof photo actually
|
|
3
|
+
* looks like a document containing the holder's NAME and ADDRESS information.
|
|
4
|
+
*
|
|
5
|
+
* MASAK Tebliğ No. 32 Art. 4/C(1)(d) requires an OPERATOR to manually review the
|
|
6
|
+
* address proof, so this is only a soft quality gate: it nudges the user to
|
|
7
|
+
* retake an obviously-wrong photo (a selfie, a blank wall, the wrong document)
|
|
8
|
+
* before it wastes an operator's time. A negative result NEVER blocks the user.
|
|
9
|
+
*
|
|
10
|
+
* Input is the OCR text recognised on the captured proof photo (full image,
|
|
11
|
+
* via the native still-image recognizer), plus the holder's name and any chip
|
|
12
|
+
* (DG11) address tokens — no extra ML models, no network, works offline.
|
|
13
|
+
*/
|
|
14
|
+
export interface AddressProofSignals {
|
|
15
|
+
/** True if the holder's name appears (fuzzily) in the recognised text. */
|
|
16
|
+
hasName: boolean;
|
|
17
|
+
/** True if address-like signals (postal code, street/place keywords, or chip
|
|
18
|
+
* address tokens) appear in the recognised text. */
|
|
19
|
+
hasAddress: boolean;
|
|
20
|
+
/** True when both are present — the photo plausibly is an address document. */
|
|
21
|
+
ok: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface AddressProofContext {
|
|
24
|
+
/** Holder name parts (first/last, any Unicode form). Used to look for the name. */
|
|
25
|
+
nameParts: Array<string | null | undefined>;
|
|
26
|
+
/** The chip's DG11 address, if any — its tokens are strong address evidence. */
|
|
27
|
+
chipAddress?: string | null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Assess whether the OCR text from a captured proof plausibly contains the
|
|
31
|
+
* holder's name and an address. Best-effort and tolerant of OCR noise.
|
|
32
|
+
*/
|
|
33
|
+
export declare function assessAddressProof(recognizedText: string | undefined | null, ctx: AddressProofContext): AddressProofSignals;
|
|
34
|
+
//# sourceMappingURL=addressProofHeuristic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addressProofHeuristic.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/addressProofHeuristic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB;yDACqD;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,mFAAmF;IACnF,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC5C,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAyHD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACzC,GAAG,EAAE,mBAAmB,GACvB,mBAAmB,CAqCrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo.utils.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/demo.utils.ts"],"names":[],"mappings":"AAEA,KAAK,iBAAiB,GAClB,qBAAqB,GACrB,wBAAwB,GACxB,aAAa,GACb,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"demo.utils.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/demo.utils.ts"],"names":[],"mappings":"AAEA,KAAK,iBAAiB,GAClB,qBAAqB,GACrB,wBAAwB,GACxB,aAAa,GACb,sBAAsB,CAAC;AAiE3B,QAAA,MAAM,aAAa,GAAI,aAAa,MAAM,YACA,CAAC;AAE3C,QAAA,MAAM,oBAAoB,GAAI,SAAS,EAAE,KAAK,EAC5C,UAAU,iBAAiB,EAC3B,OAAO,KAAK,cAuBb,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendDiagnosticReport.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/sendDiagnosticReport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sendDiagnosticReport.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/sendDiagnosticReport.ts"],"names":[],"mappings":"AAsBA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB;AAoDD,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAKD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,oBAAoB,KAC3B,OAAO,CAAC,UAAU,CAkHpB,CAAC"}
|
|
@@ -51,12 +51,14 @@ export interface VizNameCandidate {
|
|
|
51
51
|
mismatch: boolean;
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
* Fold
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
54
|
+
* Fold diacritics to bare ASCII letters but PRESERVE digits, spaces and other
|
|
55
|
+
* separators (uppercased). This is the shared normalization core: strip
|
|
56
|
+
* combining marks via NFD, then map the handful of letters that have no
|
|
57
|
+
* combining decomposition. Used by both {@link foldAscii} (which then drops
|
|
58
|
+
* non-letters) and the address-proof heuristic (which keeps digits/separators
|
|
59
|
+
* so it can tokenize and detect postal codes).
|
|
59
60
|
*/
|
|
61
|
+
export declare function foldDiacritics(value: string | null | undefined): string;
|
|
60
62
|
export declare function foldAscii(value: string | null | undefined): string;
|
|
61
63
|
/**
|
|
62
64
|
* Recover the diacritic printed name from VIZ text blocks and reconcile it with
|
|
@@ -69,6 +71,29 @@ export declare function foldAscii(value: string | null | undefined): string;
|
|
|
69
71
|
* sit ABOVE the MRZ on the data page; passing this restricts the
|
|
70
72
|
* search to blocks above it, avoiding false matches in the MRZ
|
|
71
73
|
* itself. When undefined, all blocks are searched.
|
|
74
|
+
* @param issuingCountry ICAO 3-letter issuing state, used to pick locale-correct
|
|
75
|
+
* casing for the recovered name (Turkish `i`/`İ` handling). When
|
|
76
|
+
* omitted, invariant uppercasing is used.
|
|
72
77
|
*/
|
|
73
|
-
export declare function recoverVizName(blocks: VizTextBlock[], mrzFirst: string, mrzLast: string, mrzTop?: number): VizNameCandidate;
|
|
78
|
+
export declare function recoverVizName(blocks: VizTextBlock[], mrzFirst: string, mrzLast: string, mrzTop?: number, issuingCountry?: string | null): VizNameCandidate;
|
|
79
|
+
/**
|
|
80
|
+
* Fuse several VIZ recovery results into one by majority vote per field.
|
|
81
|
+
*
|
|
82
|
+
* Run {@link recoverVizName} over multiple frames/images (e.g. several camera
|
|
83
|
+
* frames of the data page, or the passport page plus ID front/back), then pass
|
|
84
|
+
* the candidates here. Each field (first/last) is decided independently by the
|
|
85
|
+
* value that MULTIPLE samples agree on — a single noisy OCR pass can neither
|
|
86
|
+
* corrupt the name nor decide it alone. When only one sample exists we fall
|
|
87
|
+
* back to it (can't form a quorum from one frame).
|
|
88
|
+
*
|
|
89
|
+
* Non-destructive by construction: this only ever surfaces a diacritic form
|
|
90
|
+
* that {@link recoverVizName} already confirmed folds to the same ASCII as the
|
|
91
|
+
* MRZ name, so the authoritative MRZ letters are never changed — only their
|
|
92
|
+
* diacritics restored. `mismatch` is reported only when NO sample recovered a
|
|
93
|
+
* field yet at least one saw printed name text that disagreed with the MRZ.
|
|
94
|
+
*
|
|
95
|
+
* @param candidates One {@link VizNameCandidate} per frame/image.
|
|
96
|
+
* @param minAgree Minimum agreeing samples to "decide" a field (default 2).
|
|
97
|
+
*/
|
|
98
|
+
export declare function voteVizName(candidates: VizNameCandidate[], minAgree?: number): VizNameCandidate;
|
|
74
99
|
//# sourceMappingURL=vizName.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vizName.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/vizName.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;CACb;AAWD;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,OAAO,CAAC,YAAY,EAAE,CAAC,CAczB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED
|
|
1
|
+
{"version":3,"file":"vizName.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Libs/vizName.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;CACb;AAWD;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,OAAO,CAAC,YAAY,EAAE,CAAC,CAczB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAgBvE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGlE;AAsFD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,gBAAgB,CAgClB;AA4CD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,QAAQ,SAAI,GACX,gBAAgB,CAYlB"}
|
|
@@ -126,11 +126,6 @@ export interface WorkflowStep {
|
|
|
126
126
|
* verdict and sends it to the backend, which decides. Defaults to off.
|
|
127
127
|
*/
|
|
128
128
|
enforceChipVizMatch?: boolean;
|
|
129
|
-
/**
|
|
130
|
-
* Whether a proof document is required in the ADDRESS_CAPTURE step
|
|
131
|
-
* (MASAK 4/C(1)(d)). Defaults to true; set false to allow address-only.
|
|
132
|
-
*/
|
|
133
|
-
addressProofRequired?: boolean;
|
|
134
129
|
/**
|
|
135
130
|
* Run Passive Authentication on the eID scan (ICAO 9303-11 §5.1 / MASAK
|
|
136
131
|
* 4/C(1)(b),(c)): read EF.SOD, verify on-device DG-hash integrity, and send
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identificationInfo.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Types/identificationInfo.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"identificationInfo.d.ts","sourceRoot":"","sources":["../../../../../src/Shared/Types/identificationInfo.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,6 +104,19 @@ declare const _default: {
|
|
|
104
104
|
'addressCaptureScreen.retakeProof': string;
|
|
105
105
|
'addressCaptureScreen.proofCameraHint': string;
|
|
106
106
|
'addressCaptureScreen.capture': string;
|
|
107
|
+
'addressCaptureScreen.previewHint': string;
|
|
108
|
+
'addressCaptureScreen.warnNoName': string;
|
|
109
|
+
'addressCaptureScreen.warnNoAddress': string;
|
|
110
|
+
'addressCaptureScreen.warnNoText': string;
|
|
111
|
+
'addressCaptureScreen.guideHeader': string;
|
|
112
|
+
'addressCaptureScreen.guideText': string;
|
|
113
|
+
'addressCaptureScreen.guidePointWholeDocument': string;
|
|
114
|
+
'addressCaptureScreen.guidePointLighting': string;
|
|
115
|
+
'addressCaptureScreen.guidePointSteady': string;
|
|
116
|
+
'addressCaptureScreen.guidePointDocuments': string;
|
|
117
|
+
'addressCaptureScreen.retakeTooDark': string;
|
|
118
|
+
'addressCaptureScreen.retakeTooBright': string;
|
|
119
|
+
'addressCaptureScreen.retakeBlurry': string;
|
|
107
120
|
'eidScannerScreen.faceImageNotFound': string;
|
|
108
121
|
'eidScannerScreen.documentCode': string;
|
|
109
122
|
'eidScannerScreen.nationality': string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../../src/Translation/Resources/en.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../../src/Translation/Resources/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBAsVE"}
|