/WeScan

Document Scanning Made Easy for iOS

Primary LanguageSwiftMIT LicenseMIT

WeScan

WeScan makes it easy to add scanning functionalities to your iOS app! It's modelled after UIImagePickerController, which makes it a breeze to use.

Features

  • Live scanning of documents
  • Edit detected rectangle
  • Fast
  • Lightweight dependency
  • Batch scanning

Example

Requirements

  • Swift 4.0
  • iOS 10.0+
  • Xcode 9.x

Installation

Cocoapods

CocoaPods is a dependency manager for Cocoa projects.

To integrate WeScan 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 'WeScan', '>= 0.9'
end

Then, run the following command:

$ pod install

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

To integrate WeScan into your Xcode project using Carthage, specify it in your Cartfile:

github "WeTransfer/WeScan" >= 0.9

Run carthage update to build the framework and drag the built WeScan.framework into your Xcode project.

Manually

Just download the project, and drag and drop the "WeScan" folder in your project.

Usage

  1. Make sure that your ViewController conforms to the ImageScannerControllerDelegate protocol
class YourViewController: UIViewController, ImageScannerControllerDelegate {
  1. Implement the delegate functions
// Somewhere on your ViewController that conforms to ImageScannerControllerDelegate
func imageScannerController(_ scanner: ImageScannerController, didFailWithError error: Error) {
    print(error)
}

func imageScannerController(_ scanner: ImageScannerController, didFinishScanningWithResults results: ImageScannerResults) {
    // Your ViewController is responsible for dismissing the ImageScannerController
    scanner.dismiss(animated: true, completion: nil)
}

func imageScannerControllerDidCancel(_ scanner: ImageScannerController) {
    // Your ViewController is responsible for dismissing the ImageScannerController
    scanner.dismiss(animated: true, completion: nil)
}
  1. Simply present the ImageScannerController instance on your ViewController
// Somewhere on your ViewController
let scannerVC = ImageScannerController()
scannerVC.imageScannerDelegate = self
self.present(scannerVC, animated: true, completion: nil)

Communication

  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

License

WeScan is available under the MIT license. See the LICENSE file for more info.