Captured ID
Defined under the namespace Scandit.Datacapture.Id
- CapturedId
class CapturedIdAdded in version 6.13.0
This class represents the result of a document scan. It provides commonly present information, such as the holder’s name and date of birth, directly accessible at the top level. Additional document-specific details can be accessed through properties representing different zones of the document, such as the barcode, machine-readable zone (MRZ), and visual inspection zone (VIZ).
Note that not all properties are relevant to every document type. If a property is not applicable or the corresponding data could not be read, it will be set to null.
- firstName
get firstName(): string | null
Added in version 6.16.0
The first name of the document holder. Separated by spaces if more than one name is present. Characters can be all uppercase for document types which don’t capitalize names (for example names encoded in ICAO Machine Readable Zones).
- lastName
get lastName(): string | null
Added in version 6.16.0
The last name of the document holder. Separated by spaces if more than one name is present. Characters can be all uppercase for document types which don’t capitalize names (for example names encoded in ICAO Machine Readable Zones).
- fullName
get fullName(): string | null
Added in version 6.16.0
The full name of the document holder. Characters can be all uppercase for document types which don’t capitalize names (for example names encoded in ICAO Machine Readable Zones).
- dateOfBirth
get dateOfBirth(): DateResult | null
Added in version 6.16.0
The date of birth of the document holder. If the document doesn’t provide two first digits of the year then the date of birth is always set to be earlier than or equal to the scan date. For example if the year of scanning is 2021 and the document returns that the year of birth is 14 then the returned year is set to 2014. However if the document returns that the year of birth is 24 then the returned year is set to 1924.
- age
get age(): number | null
Added in version 6.16.0
The age of the document holder. Calculated as the difference in full years between the birth date and the current local date. If null is returned it means that the full birth date is not available. The returned value depends on the device date. The same document may result in different values for devices with different dates (e.g. in different time zones, or with a date set manually by the user).
- nationality
get nationality(): string | null
Added in version 6.16.0
The nationality of the document holder as raw OCR text from the document. The format and language vary by jurisdiction (e.g., “DEUTSCH”, “AMERICAN”, “POLSKA”, “DEU”).
For a standardized ISO 3166-1 alpha-3 country code representation, use nationalityISO.
- nationalityISO
get nationalityISO(): string | null
Added in version 8.1.0
The holder’s nationality as an ISO 3166-1 alpha-3 country code (e.g., “DEU”, “USA”, “POL”).
Returns null if the nationality cannot be determined or is ambiguous.
- usRealIdStatus
get usRealIdStatus(): UsRealIdStatus
Added in version 7.1.0
Indicates whether the document is REAL ID compliant.
- document
get document(): IdCaptureDocument | null
Added in version 7.0.0
The document type.
- issuingCountryIso
get issuingCountryIso(): string | null
Added in version 6.16.0
The ISO (Alpha-3 code) abbreviation of the issuing country of the document.
- issuingCountry
get issuingCountry(): Region
Added in version 7.0.0
Issuing country of the document.
- documentNumber
get documentNumber(): string | null
Added in version 6.16.0
The document number.
If IdCaptureSettings.anonymizationMode is enabled for the field results, the returned value might be null for certain documents.
- documentAdditionalNumber
get documentAdditionalNumber(): string | null
Added in version 6.19.0
If IdCaptureSettings.anonymizationMode is enabled for the field results, the returned value might be null for certain documents.
If IdCaptureSettings.anonymizationMode is enabled for the field results, the returned value might be null for certain documents.
- dateOfExpiry
get dateOfExpiry(): DateResult | null
Added in version 6.16.0
The date of expiry of the document. Returning null with isExpired = false indicates that the document never expires.
- isExpired
get isExpired(): boolean | null
Added in version 6.16.0
Whether this document is expired. Calculated by comparing the document’s expiration date with the current local date. true if the document is expired and false when either not expired, or never expires. null is returned if the value of this property could not be determined - for example if the date of expiry is not present, or if the date of expiry couldn’t be captured. Please note that the system time is used for computation of this field so users of the device are capable of changing the result of the field by changing the system time.
- isCapturingComplete
get isCapturingComplete(): boolean
Added in version 7.5.0
Whether the document capture is complete. Returns true when all sides of a multi-sided document have been captured, or when capturing a single-sided document. Returns false when only partial data is available (e.g., front side of a two-sided document). This property is particularly useful when IdCaptureSettings.notifyOnSideCapture is enabled to distinguish between partial and complete results.
- dateOfIssue
get dateOfIssue(): DateResult | null
Added in version 6.16.0
The date of issue of the document. Please note that some documents may specify the exact date of issue, while other the month and the year only.
- barcode
get barcode(): BarcodeResult | null
Added in version 7.0.0
The additional information extracted from a barcode on a document.
- mobileDocumentOCRResult
get mobileDocumentOCRResult(): MobileDocumentOCRResult | null
Added in version 8.0.0
The additional information extracted from a mobile document using optical character recognition (OCR). This property is populated when scanning mobile driver licenses with OCR-based capture enabled (for example, Australian mobile driver licenses when the mobile scanner is enabled).
- mrzResult
get mrzResult(): MRZResult | null
Added in version 6.13.0
The additional information extracted from the Machine Readable Zone (MRZ) of a Machine Readable Travel Document (MRTD).
- vizResult
get vizResult(): VIZResult | null
Added in version 6.13.0
The additional information extracted from a documents or its part intended to be read by humans (for example Visual Inspection Zone (VIZ) of a Machine-Readable Travel Document (MRTD)).
- isIdCard()
isIdCard(): boolean
Added in version 7.0.0
Indicates whether the document is of type IdCard.
- isDriverLicense()
isDriverLicense(): boolean
Added in version 7.0.0
Indicates whether the document is of type DriverLicense.
- isPassport()
isPassport(): boolean
Added in version 7.0.0
Indicates whether the document is of type Passport.
- isCitizenPassport
get isCitizenPassport(): boolean
Added in version 8.0.0
Indicates whether the passport was issued to a citizen of the issuing country. Returns false for travel documents such as refugee, stateless, or alien passports, and for any passports issued by organizations rather than states.
- isVisaIcao()
isVisaIcao(): boolean
Added in version 7.0.0
Indicates whether the document is of type VisaIcao.
- isResidencePermit()
isResidencePermit(): boolean
Added in version 7.0.0
Indicates whether the document is of type ResidencePermit.
- isHealthInsuranceCard()
isHealthInsuranceCard(): boolean
Added in version 7.0.0
Indicates whether the document is of type HealthInsuranceCard.
- isRegionSpecific(subtype)
isRegionSpecific(subtype: RegionSpecificSubtype): boolean
Added in version 7.0.0
Indicates whether the document is of type RegionSpecificSubtype.
- verificationResult
get verificationResult(): VerificationResult
Added in version 7.1.0
Results of verifications automatically performed when IdCaptureSettings.rejectInconsistentData is enabled.
- isAnonymized(field)
isAnonymized(field: IdFieldType): boolean
Added in version 8.0.0
Checks whether the specified field has been anonymized.
Returns true if the field was present in the captured document and was anonymized according to the IdCaptureSettings.anonymizationMode setting, false otherwise.
A field that is not present in the document always returns false, even if anonymization is enabled for that field type.
This method is useful for determining which fields have been redacted, particularly when using IdCaptureSettings.anonymizationMode set to IdAnonymizationMode.FieldsOnly or IdAnonymizationMode.FieldsAndImages.
- Param IdFieldType field
The field type to check for anonymization.
- anonymizedFields
get anonymizedFields(): IdFieldType[]
Added in version 8.0.0
Returns all fields that have been anonymized in this captured document.
Only fields that were actually present in the captured document and were subsequently anonymized are included.
- rejectionDiagnosticJSON
get rejectionDiagnosticJSON(): string | null
Added in version 8.0.0
Attention
This property is experimental and its format is subject to change in future releases. We recommend using it for debugging and diagnostics purposes only, and not relying on its structure in production code.
Returns diagnostic information about why a document was rejected, serialized as a JSON string.
This property is only populated when a document is rejected with RejectionReason.Timeout and contains detailed information about document quality issues that prevented successful capture, such as detected blur, glare, occlusion, or lighting problems.
For all other rejection reasons, this property returns an empty string.
JSON Structure
The diagnostic JSON contains aggregated information from frames captured during the timeout period. It includes diagnostics from one or more zones (VIZ, MRZ, or Barcode). For zones that were expected but not captured, the JSON includes information about what issues prevented successful capture.
Example 1 - All zones detected:
{ "rejectionReason": "timeout", "side": "front", "zones": [ { "captured": false, "expectation": "optional", "issues": [ { "category": "blur" } ], "localized": true, "zone": "viz" }, { "captured": false, "expectation": "optional", "localized": true, "zone": "mrz" }, { "captured": false, "expectation": "optional", "localized": true, "zone": "barcode" } ] }
Example 2 - Partial success (one zone captured, one failed):
{ "rejectionReason": "timeout", "side": "back", "zones": [ { "captured": false, "expectation": "required", "issues": [ { "category": "mandatoryFieldsMissing", "issue": ["issuingAuthority"] } ], "localized": true, "zone": "viz" }, { "captured": true, "localized": true, "zone": "mrz" } ] }
Field Descriptions
side: The side of the document being scanned ("front"or"back").rejectionReason: The reason for rejection, always"timeout"for this diagnostic JSON.zones: Array of zone-level diagnostics. Each zone represents a different detector (VIZ, MRZ, or Barcode).zone: The zone identifier ("viz","mrz", or"barcode").captured: Boolean indicating whether this zone was successfully captured (true) or not (false).localized: Boolean indicating whether this zone was detected during the timeout period.expectation: Indicates whether this zone is"required"or"optional". Only present for zones that were not successfully captured.issues: Array of diagnostic issues detected for this zone. Each issue is an object with acategoryfield and optionally anissuefield:Simple issues (no additional details):
{"category": "blur"}: Blur was detected in the zone.{"category": "glare"}: Glare was detected in the zone.{"category": "occlusion"}: Occlusion (covering/blocking) was detected in the zone.
Lighting issues (with
issuefield):{"category": "lighting", "issue": "tooDark"}: Document is underexposed.{"category": "lighting", "issue": "tooBright"}: Document is overexposed.
Missing fields (with
issuearray):{"category": "mandatoryFieldsMissing", "issue": ["field1", "field2"]}: Array of mandatory field names that could not be read. Examples:"dateOfBirth","documentNumber","fullName".
Notes
Successfully captured zones (
"captured": true) only include thezone,captured, andlocalizedfields. They do not includeexpectationorissuesfields.The
issuesarray will be empty if the zone was localized but no quality issues were detected.Diagnostic information is aggregated across multiple frames during the timeout period.
Zones that were not detected during the timeout (
"localized": false) will only appear if they are required. Optional zones that were not detected are omitted from the output.