# Setup Accura MICR

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

***

```
import AccuraOCR
var accuraMICRWrapper: AccuraMICRWrapper? = nil
accuraMICRWrapper = AccuraMICRWrapper.init()
        let sdkModel = accuraMICRWrapper.loadEngine(your PathForDirectories)
        if (sdkModel.i > 0) {
                if(sdkModel?.isMICREnable) {
                
                }
        }
```

**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.accuraMICRWrapper?.setBlurPercentage(60/*blurPercentage*/)
```

* Set Glare Percentage to detect Glare on document

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

### **Set CameraView**

Important Grant Camera and storage Permission.\
supports Landscape Camera

```
import AccuraOCR
import AVFoundation
var accuraMICRWrapper: AccuraMICRWrapper? = nil
override func viewDidLoad() {
	super.viewDidLoad()
    // initialize Camera for MICR
    accuraMICRWrapper = AccuraMICRWrapper.init(delegate: self, andImageView: /*setImageView*/ _imageView, andLabelMsg: */setLable*/ lblOCRMsg, andurl: */your PathForDirectories*/ NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String, type: bankCode/*MICRTYPE*/)   
}

override func viewDidAppear(_ animated: Bool) {
	super.viewDidAppear(animated)
	accuraMICRWrapper?.startCamera()
}

override func viewWillDisappear(_ animated: Bool) {
	accuraMICRWrapper?.stopCamera()
	accuraMICRWrapper = nil
	super.viewWillDisappear(animated)
}


extension ViewController: VideoCameraWrapperDelegate{
	//it sets ViewLayer border according to card image
	func  onUpdateLayout(_ frameSize: CGSize, borderRatio: Float) {
	frameSize:- get layer frame size
	borderRatio:- get layer ratio
	}

	//  it calls continues when detect frame from camera
	func processedImage(_ image: UIImage!) {
		image:- get camara image.
	}

	// it call when license key wrong or didnt get key.license file
	func recognizeFailed(_ message: String!) {
		message:- message is a set alert message.
	}
	//it calls when get MICR data
    func recognizeSucceedMICR(_ scanedInfo: String!, photoImage: UIImage!) {
		
	}

	// it calls when recieve error message
    func reco_msg(_ message: String!) {
        var msg = String();
        if(message == ACCURA_ERROR_CODE_MOTION) {
            msg = "Keep Document Steady";
        } else if(message == ACCURA_ERROR_CODE_DOCUMENT_IN_FRAME) {
            msg = "Keep document in frame";
        } else if(message == ACCURA_ERROR_CODE_PROCESSING) {
            msg = "Processing...";
        } else if(message == ACCURA_ERROR_CODE_MOVE_CLOSER) {
            msg = "Move Phone Closer"
        }else if(message == ACCURA_ERROR_CODE_MOVE_AWAY) {
            msg = "Move Phone Away"
        }else if(message == ACCURA_ERROR_CODE_KEEP_MICR_IN_FRAME) {
            msg = "Please Keep MICR in Frame"
        }else {
            msg = 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/micr-cheque-scanner/ios/setup-accura-micr.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.
