# Setup Accura MRZ

## **To initialize sdk on app start:**

```
import AccuraMRZ

var accuraCameraWrapper: AccuraCameraWrapper? = nil
var arrCountryList = NSMutableArray()
accuraCameraWrapper = AccuraCameraWrapper.init()
	let sdkModel = accuraCameraWrapper.loadEngine(your PathForDirectories)
	if (sdkModel.i > 0) {
		if(sdkModel!.isMRZEnable) {
			self.arrCountryList.add("All MRZ")
			// ID MRZ
			// Visa MRZ
			// Passport MRZ
			// All MRZ
		}
		
	}

```

***

### **Update filters config like below.**

Call this function after initialize sdk if license is valid(sdkModel.i > 0)

* Set Blur Percentage to allow blur on document

```
// 0 for clean document and 100 for Blurry document
self.accuraCameraWrapper?.setBlurPercentage(60/*blurPercentage*/)
```

* Set Blur Face Percentage to allow blur on detected Face

```
// 0 for clean face and 100 for Blurry face
accuraCameraWrapper?.setFaceBlurPercentage(80/*faceBlurPercentage*/)
```

* Set Glare Percentage to detect Glare on document

```
// Set min and max percentage for glare
accuraCameraWrapper?.setGlarePercentage(6/*minPercentage*/, 98/*maxPercentage*/)
```

* Set Photo Copy to allow photocopy document or not

```
// Set allow photocopy document or not
accuraCameraWrapper?.setCheckPhotoCopy(false/*isCheckPhotoCopy*/)
```

* Set Hologram detection to verify the hologram on the face

```
// true to check hologram on face
accuraCameraWrapper?.setHologramDetection(true/*isDetectHologram*/)
```

* Set Low Light Tolerance to allow lighting to detect documant

```
// 0 for full dark document and 100 for full bright document
accuraCameraWrapper?.setLowLightTolerance(10/*lowlighttolerance*/)
```

* Set motion threshold to detect motion on camera document

```
// 1 - allows 1% motion on document and
// 100 - it can not detect motion and allow document to scan.
accuraCameraWrapper?.setMotionThreshold(25/*setMotionThreshold*/)
```

* Sets camera Facing front or back camera

```
accuraCameraWrapper?.setCameraFacing(.CAMERA_FACING_BACK)
```

* Flip camera

```
accuraCameraWrapper?.switchCamera()
```

* Set Front/Back Side Scan

```
accuraCameraWrapper?.cardSide(.FRONT_CARD_SCAN)
```

***

## **Set CameraView**

```
    import AccuraMRZ
    import AVFoundation
    
    var accuraCameraWrapper: AccuraCameraWrapper? = nil

  	override func viewDidLoad() {
    	super.viewDidLoad()
    	let status = AVCaptureDevice.authorizationStatus(for: .video)
    
    
    	if status == .authorized {
         	accuraCameraWrapper = AccuraCameraWrapper.init(delegate: self, andImageView: /*setImageView*/ _imageView, andLabelMsg: */setLable*/ lblOCRMsg, andurl: */your PathForDirectories*/ NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String, cardId: /*setCardId*/ Int32(0!), countryID: /*setcountryid*/ Int32(0!), isScanOCR:/*Bool*/ false, andLabelMsgTop:/*Lable*/ _lblTitle, andcardName:/*string*/  docName, andcardType: Int32(cardType), andMRZDocType: /*SetMRZDocumentType*/ Int32(MRZDocType!/*0 = OtherMRZ, 1 = PassportMRZ, 2 = IDMRZ, 3 = VisaMRZ*/))
    	} 
    }
    
    override func viewDidAppear(_ animated: Bool) {
      super.viewDidAppear(animated)
          accuraCameraWrapper?.startCamera()
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        accuraCameraWrapper?.stopCamera()
        accuraCameraWrapper = nil
        super.viewWillDisappear(animated)
    }
    
    extension ViewController: VideoCameraWrapperDelegate{
    
   		//  it calls continues when scan cards
   		func processedImage(_ image: UIImage!) {
    		image:- get camara image.
    	}
    
    	// it call when license key wrong otherwise didnt get key
    	func recognizeFailed(_ message: String!) {
    		message:- message is a set alert message.
    	}
    
    	// it calls when get MRZ data
    	func recognizeSucceed(_ scanedInfo: NSMutableDictionary!, recType: RecType, bRecDone: Bool, bFaceReplace: Bool, bMrzFirst: Bool, photoImage: UIImage, docFrontImage: UIImage!, docbackImage: UIImage!) {
    		scanedInfo :- get MRZ data.
    		photoImage:- get a document face Image.
    		docFrontImage:- get document frontside image.
   		 	docbackImage:- get document backside image.
    	}
        
    // it calls when recieve error message
    func reco_msg(_ messageCode: String!) {
			var message = String()
        if messageCode == ACCURA_ERROR_CODE_MOTION {
            message = "Keep Document Steady";
        } else if(messageCode == ACCURA_ERROR_CODE_DOCUMENT_IN_FRAME) {
            message = "Keep document in frame";
        } else if(messageCode == ACCURA_ERROR_CODE_BRING_DOCUMENT_IN_FRAME) {
            message = "Bring card near to frame";
        } else if(messageCode == ACCURA_ERROR_CODE_PROCESSING) {
            message = "Processing...";
        } else if(messageCode == ACCURA_ERROR_CODE_BLUR_DOCUMENT) {
            message = "Blur detect in document";
        } else if(messageCode == ACCURA_ERROR_CODE_FACE_BLUR) {
            message = "Blur detected over face";
        } else if(messageCode == ACCURA_ERROR_CODE_GLARE_DOCUMENT) {
            message = "Glare detect in document";
        } else if(messageCode == ACCURA_ERROR_CODE_HOLOGRAM) {
            message = "Hologram Detected";
        } else if(messageCode == ACCURA_ERROR_CODE_DARK_DOCUMENT) {
            message = "Low lighting detected";
        } else if(messageCode == ACCURA_ERROR_CODE_PHOTO_COPY_DOCUMENT) {
            message = "Can not accept Photo Copy Document";
        } else if(messageCode == ACCURA_ERROR_CODE_FACE) {
            message = "Face not detected";
        } else if(messageCode == ACCURA_ERROR_CODE_MRZ) {
            message = "MRZ not detected";
        } else if(messageCode == ACCURA_ERROR_CODE_PASSPORT_MRZ) {
            message = "Passport MRZ not detected";
        } else if(messageCode == ACCURA_ERROR_CODE_ID_MRZ) {
            message = "ID MRZ not detected"
        } else if(messageCode == ACCURA_ERROR_CODE_VISA_MRZ) {
            message = "Visa MRZ not detected"
        }else {
            message = message;
        }
    		print(message)
 	}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.accurascan.com/solutions/mrz/ios/setup-accura-mrz.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
