Makes it easy to add document scanning functionalities to your iOS app
MBDocCapture
MBDocCapture makes it easy to add document scanning functionalities to your iOS app but also image editing (Cropping and contrast enhacement).
Features
- [x] Doc scanning
- [x] Photo cropping and enhancement
- [x] Auto scan
Demo
Requirements
- Swift 4.2
- iOS 10.0+
Installation
Cocoapods
CocoaPods is a dependency manager for Cocoa projects.
To integrate MBDocCapture into your Xcode project using CocoaPods, specify it in your Podfile
:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'MBDocCapture'
end
Then, run the following command:
$ pod install
Usage
Swift
- Make sure that your view controller conforms to the
ImageScannerControllerDelegate
protocol:
class YourViewController: UIViewController, ImageScannerControllerDelegate {
// YourViewController code here
}
- Implement the delegate functions inside your view controller:
/// Tells the delegate that the user scanned a document.
///
/// - Parameters:
/// - scanner: The scanner controller object managing the scanning interface.
/// - results: The results of the user scanning with the camera.
/// - Discussion: Your delegate's implementation of this method should dismiss the image scanner controller.
func imageScannerController(_ scanner: ImageScannerController, didFinishScanningWithResults results: ImageScannerResults) {
scanner.dismiss()
}
/// Tells the delegate that the user scanned a document.
///
/// - Parameters:
/// - scanner: The scanner controller object managing the scanning interface.
/// - page1Results: The results of the user scanning page 1.
/// - page2Results: The results of the user scanning page 2.
/// - Discussion: Your delegate's implementation of this method should dismiss the image scanner controller.
func imageScannerController(_ scanner: ImageScannerController, didFinishScanningWithPage1Results page1Results: ImageScannerResults, andPage2Results page2Results: ImageScannerResults) {
scanner.dismiss()
}
/// Tells the delegate that the user cancelled the scan operation.
///
/// - Parameters:
/// - scanner: The scanner controller object managing the scanning interface.
/// - Discussion: Your delegate's implementation of this method should dismiss the image scanner controller.
func imageScannerControllerDidCancel(_ scanner: ImageScannerController) {
scanner.dismiss()
}
/// Tells the delegate that an error occured during the user's scanning experience.
///
/// - Parameters:
/// - scanner: The scanner controller object managing the scanning interface.
/// - error: The error that occured.
func imageScannerController(_ scanner: ImageScannerController, didFailWithError error: Error) {
scanner.dismiss()
}
- Finally, create and present a
ImageScannerController
instance somewhere within your view controller:
let scannerViewController = ImageScannerController(delegate: self)
//scannerViewController.shouldScanTwoFaces = false // Use this to scan the front and the back of a document
present(scannerViewController, animated: true)