SDK Response

The response of the SDK will return in the following delegate

func onOCRResult(result: VIDVOCRResponse)

It will return an enum result of type VIDVOCRResponse

VIDVOCRResponse Cases

Success : Process finished successfully

CapturedImages: Images captured are returned in real-time

Note: For theCapturedImagesinstance, images are not processed yet

UserExit : Process terminated by the user with no errors

ServiceFailure : Process finished with the user's failure to pass the service requirements

BuilderError : Process terminated due to an error in the builder

Example

switch result {
case .success(let data):
    // data of type VIDVOCRResult
case .builderError(let code, let message):
    // builder error code & error message
case .serviceFailure(let code, let message, let data):
    // service faluire error code & error message & data of type VIDVOCRResult
case .userExit(let step, let data):
    // last step in the SDK & data of type VIDVOCRResult
case .capturedImages(capturedImageData: let capturedImageData):
    // capturedImageData of type CapturedImageData
    
}

Document verification plus - Case Handling

When using VIDVOCRResult.getData(), the returned ocrResult may include a documentVerificationPlusobject. This object contains validation flags and quality signals that help you determine whether the document should be accepted, reviewed, recaptured, or rejected.


Fields Returned Under documentVerificationPlus

Field
Type
Meaning

frontDataValidity

boolean

Overall validity of the front side based on greyscale flags + invalid fields list

backDataValidity

boolean

Overall validity of the back side based on greyscale flags + invalid fields list

isFrontGreyscale

boolean

Indicates whether the front side is greyscale

isBackGreyscale

boolean

Indicates whether the back side is greyscale

expired

boolean

Whether the document is recognized as expired

reviewRequired

List<String>

Fields that require attention (e.g. Nid, gender, expirydate…)


How to Read These Values

  • frontDataValidity and backDataValidity act as parent flags → You can take action directly based on them if you want a simple validation flow.

  • For more control, you can check detailed signals:

    • use greyscale flags if you want to reject black-and-white copies

    • use reviewRequiredto apply different logic per field e.g. reject if nid is invalid but allow if gender is inconsistent

This allows fully customizable decision logic depending on your business rules.

Example Handling Logic

Advance confidence - Case Handling

When using VIDVOCRResult.getData(), the returned ocrResult may include a advancedConfidence object. This object contains manipulation flags that help you determine whether the document should be accepted, reviewed, recaptured, or rejected.


Fields Returned Under advanceConfidence

Field
Type
Meaning

fraudDetectionZone

int

Parent zone flag → Result of face + image manipulation combined

faceFraudZone

int

Fraud confidence specifically related to face physical tampering

frontImageManipulationZone

int

Indicates signs of front image physical manpulation

Zone Meaning

Value
Color
Meaning

0

Green

No manipulation detected

1

Yellow

Requires human review (suspicious)

2

Red

Strong indicators of fraud / manipulation


Example Handling Logic

Primary Response Object

VIDVOCRResult

Note: This is the first-level object that contains all the second-level objects

Object Body

  • sessionID <string>

ocrResult <sub-object>
  • firstName <string>

  • fullName <string>

  • religion <string>

  • gender <string>

  • dateOfBirth <string>

  • age <int>

  • maritalStatus <string>

  • husbandName <string>

  • street <string>

  • birthGovernorate <string>

  • policeStation <string>

  • governorate <string>

  • profession <string>

  • releaseDate <string>

  • expiryDate <string>

  • serialNumber <string>

  • frontNid <string>

  • backNid <string>

  • isRootOfTrustCompatible <boolean>

  • transactionIdFront <string>

  • transactionIdBack <string>

  • combinationID <string>

  • documentVerificationPlus <object>

    • frontDataValidity <boolean>

    • backDataValidity <boolean>

    • frontConfidence <int>

    • backConfidence <int>

    • expired <boolean>

  • advancedConfidence <sub-object>

    • fraudDetectionZone <int>

    • fraudDetectionDetails <sub-object>

      • faceFraudZone <int>

      • faceFraudConfidence <double>

      • frontImageManipulationZone <int>

      • frontImageManipulationConfidence <double>

documentVerificationResult <sub-object>
  • success <boolean>

captures <sub-object>
  • nationalIdFront <base64-string>

  • nationalIdBack <base64-string>

hmacDataList <list>
  • serviceID: ocr

  • hmacDigest <string>

  • rawResponse <string>

decryptionKeys <sub-object>
  • nationalIdFrontRequestKey [UInt8]

  • nationalIdBackRequestKey [UInt8]

  • combineResponseKey [UInt8]

The raw response in hmacDataList should be mapped to the result object as per the HMAC Validation Documentation

SDK Event Logs Response

Note: If the associated delegate is confirmed, event logs will be received through the two objects below

VIDVEvent <object>
  • key <string>

  • Screen <string>

  • type: <string>

  • sessionId: <string>

  • payload <string>

  • timestamp <int64>

  • date <date>

VIDVError <object>
  • code <int16>

  • message <string>

  • screen <string>

  • type <string>

  • sessionId: <string>

  • timestamp <int64>

  • date <date>

Instance Responses

Success

  • VIDVOCRResult <object>

CapturedImages

CapturedImageData <object>
  • nationalIDLabel <string>

  • nationalIdImage <base64-string>

UserExit

  • VIDVOCRResult <object>

  • step <string>

Note: step <string> identifies the point where the user chose to exit the SDK

ServiceFailure

  • VIDVOCRResult <object>

  • code <string>

  • message <string>

BuilderError

  • code <string>

  • message <string>

Last updated