processSample static method
Implementation
static ScanResult processSample(SampleItem sample) {
switch (sample.mode) {
case ScanMode.qr:
return ScanResult(
mode: ScanMode.qr,
rawValue: sample.payload,
isValid: true,
confidence: 1.0,
fields: {
'Format': 'QR Code (2D)',
'Content Type': sample.payload.startsWith('WIFI:')
? 'WiFi Credentials'
: (sample.payload.startsWith('BEGIN:VCARD')
? 'vCard Contact'
: (sample.payload.startsWith('upi:')
? 'UPI Payment'
: 'URL / Text')),
'Payload': sample.payload,
},
);
case ScanMode.barcode:
return ScanResult(
mode: ScanMode.barcode,
rawValue: sample.payload,
isValid: true,
confidence: 1.0,
fields: {
'Format': sample.payload.length == 13 ? 'EAN-13' : 'Code-128',
'Value': sample.payload,
},
);
case ScanMode.pdf417:
return ScanResult(
mode: ScanMode.pdf417,
rawValue: sample.payload,
isValid: true,
confidence: 0.99,
fields: {
'Format': 'PDF417 (2D Stacked Barcode)',
'Raw Payload': sample.payload,
},
);
case ScanMode.passport:
return MrzPassportParser.parse(sample.payload);
case ScanMode.aadhaar:
return AadhaarParser.parse(sample.payload);
case ScanMode.pan:
return PanCardParser.parse(sample.payload);
case ScanMode.drivingLicense:
return DrivingLicenseParser.parse(sample.payload);
case ScanMode.vin:
return VinParser.parse(sample.payload);
case ScanMode.invoice:
return InvoiceParser.parse(sample.payload);
case ScanMode.receipt:
return ReceiptParser.parse(sample.payload);
case ScanMode.businessCard:
return BusinessCardParser.parse(sample.payload);
case ScanMode.ocr:
return ScanResult(
mode: ScanMode.ocr,
rawValue: sample.payload,
isValid: true,
confidence: 0.95,
fields: {
'Text Type': 'Document OCR',
'Extracted Lines':
'${sample.payload.split('\n').length} Lines Recognized',
'Full Text': sample.payload,
},
);
case ScanMode.document:
return ScanResult(
mode: ScanMode.document,
rawValue: 'Scanned Document Page',
isValid: true,
confidence: 0.99,
fields: {
'Document Edge Bounds': 'Detected Quad Corner Box',
'Perspective Matrix': 'Corrected 4-Corner Rect',
'Filter State': 'Shadow Removal Whitened Paper',
},
);
case ScanMode.multiCode:
return ScanResult(
mode: ScanMode.multiCode,
rawValue: sample.payload,
isValid: true,
confidence: 0.99,
fields: {
'Multi-Code Detection': '3 Codes Found',
'Code #1': '8901030748194',
'Code #2': 'https://flutter.dev',
'Code #3': 'WIFI:S:OfficeGuest;P:guest123;;',
},
metadata: {
'multiCodes': [
'8901030748194',
'https://flutter.dev',
'WIFI:S:OfficeGuest;P:guest123;;'
]
},
);
case ScanMode.face:
return ScanResult(
mode: ScanMode.face,
rawValue:
'Face Detected (Bounding Box: [L: 120, T: 180, R: 360, B: 480])',
isValid: true,
confidence: 0.98,
fields: {
'Face Detected': '1 Face in Frame',
'Liveness Check': 'Passed (Blink & Smile Detected) ✓',
'Left Eye Open': '98.5%',
'Right Eye Open': '97.2%',
'Smiling Probability': '89.4%',
'Head Pose Yaw': '1.2° (Centered)',
'Head Pose Pitch': '-0.5° (Straight)',
'Head Pose Roll': '0.1° (Level)',
},
metadata: {
'leftEyeOpen': 0.985,
'rightEyeOpen': 0.972,
'smile': 0.894,
'headYaw': 1.2,
'headPitch': -0.5,
},
);
case ScanMode.cheque:
final chequeInfo = BankChequeParser.parse(sample.payload);
return ScanResult(
mode: ScanMode.cheque,
rawValue: sample.payload,
isValid: chequeInfo.isValidMicr,
confidence: 0.98,
fields: chequeInfo.toFields(),
bankChequeInfo: chequeInfo,
);
case ScanMode.idCard:
return ScanResult(
mode: ScanMode.idCard,
rawValue: sample.payload,
isValid: true,
confidence: 0.95,
fields: {
'Card Type': 'National Identity Card',
'ID Number': 'ID-987654321',
'Name': 'Jane Doe',
'DOB': '15/05/1990',
'Nationality': 'US',
},
);
case ScanMode.licensePlate:
return ScanResult(
mode: ScanMode.licensePlate,
rawValue: sample.payload,
isValid: true,
confidence: 0.96,
fields: {
'Plate Number': sample.payload,
'Format': 'Standard Vehicle License Plate',
},
);
}
}