iOS开发之OCR光学识别储蓄卡以及信用卡

最近由于公司需要一个扫描银行卡获取卡号的功能,网上找了很多相关的资料,完全扫描银行卡 获取卡号信息的都是价格贵的不得了的,而且仅仅只是授权而已,在此咱退而求次,找到一个可 以扫描信用卡的第三方框架,给大家伙分享一下,只能扫描信用卡......o.0。 框架的名字叫CardIO 下载地址 在这里主要给大家演示一下怎么集成的,各位看官可得注意咯! 我的xcode是7.1版本的,首先是把框架整个拉进自己的工程,然后在 TARGETS---Build Phases---Link Binary With Libraries 里边分别加入下面这几个框架 Accelerate.framework MobileCoreServices.framework CoreMedia.framework AudioToolbox.framework AVFoundation.framework 再在TARGETS---Build Settings---Other Linker Flags中添加-ObjC-lc++

然后在我们需要调用的VC中导入头文件#import "CardIO.h"#import "CardIOPaymentViewControllerDelegate.h" 加上代理CardIOPaymentViewControllerDelegate

然后是实现的方法

OC版

- (void)viewDidLoad {
    [super viewDidLoad];

    [CardIOUtilities preload];
}

//开始调用扫描
- (IBAction)begin:(id)sender {

    CardIOPaymentViewController *scanViewController = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:self];

    [self presentViewController:scanViewController animated:YES completion:nil];
}


//取消扫描
- (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)scanViewController

{


    [scanViewController dismissViewControllerAnimated:YES completion:nil];

}

//扫描完成
-(void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)info inPaymentViewController:(CardIOPaymentViewController *)scanViewController

{

    //扫描结果
    NSLog(@"Received card info. Number: %@, expiry: %02i/%i, cvv: %@.", info.redactedCardNumber, info.expiryMonth, info.expiryYear, info.cvv);

    [scanViewController dismissViewControllerAnimated:YES completion:nil];

}

SWIFT版

import UIKit

class ViewController: UIViewController, CardIOPaymentViewControllerDelegate {

@IBOutlet weak var resultLabel: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
    
    CardIOUtilities.preload()
}

//开始调用扫描
@IBAction func scanCard(sender: AnyObject) {
    let cardIOVC = CardIOPaymentViewController(paymentDelegate: self)
    cardIOVC.modalPresentationStyle = .FormSheet
    presentViewController(cardIOVC, animated: true, completion: nil)
}
//取消扫描
func userDidCancelPaymentViewController(paymentViewController: CardIOPaymentViewController!) {
    resultLabel.text = "user canceled"
    paymentViewController?.dismissViewControllerAnimated(true, completion: nil)
}
//扫描完成
func userDidProvideCreditCardInfo(cardInfo: CardIOCreditCardInfo!, inPaymentViewController paymentViewController: CardIOPaymentViewController!) {
    if let info = cardInfo {
        let str = NSString(format: "Received card info.\\\\n Number: %@\\\\n expiry: %02lu/%lu\\\\n cvv: %@.", info.redactedCardNumber, info.expiryMonth, info.expiryYear, info.cvv)
        resultLabel.text = str as String
    }
        paymentViewController?.dismissViewControllerAnimated(true, completion: nil)
    }  
}

到此就大功告成了,老外封装的东西还是非常给力的,希望可以找到扫描银行卡比较好用的第三方。 最终的效果,识别的非常准确哦

backing.png

推荐一款学习iOS开发的app_____|______| | 传送门

更多经验请点击 技术交流群:534926022(免费) 511040024(0.8/人付费) 好文推荐:iOS开发内购全套图文教程

版权归©Bison所有 如需转载请保留原文超链接地址!否则后果自负!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏QQ音乐技术团队的专栏

Android O 新特性和行为变更总结

多窗口是 Android 7.1 之后引入的(关于多窗口适配需要注意的地方,但是趁此机会了解一下 Android O 版本的新特性也不错,而且 Google I...

5741
来自专栏小樱的经验随笔

CTF---Web入门第八题 Guess Next Session

Guess Next Session分值:10 来源: iFurySt 难度:易 参与人数:3870人 Get Flag:1672人 答题人数:1690人 ...

3629
来自专栏吉浦迅科技

NVIDIA Jetpack 4.0开发者预览版发布

JetPack 4.0开发者预览EA(Early Access )版是为了让开发者能够立即开始用Jetson Xavier测试他们的应用程序,而不是一个产品版本...

674
来自专栏Android 开发者

理解音频焦点 (第 3/3 部分):三个步骤实现音频聚焦

3114
来自专栏张善友的专栏

在ASP.NET Core中使用brotli压缩

1975
来自专栏视频咖

100行代码搞定短视频App,终于可以和美女合唱了

最近某音最近又带了一波合唱的节奏,老板看到后果然又是要尽快跟进,希望隔壁公司加薪的时候他也能作出如此反应

1792
来自专栏ShaoYL

程序启动的完整过程

40415
来自专栏磨磨谈

Ceph实现数据的'不拆分'

之前看过一个朋友一篇文章,讲述的是Vsan为什么使用的是两副本,而ceph则大多数情况下需要三副本,当时个人观点是这个并不是关键点,但是在仔细考虑了问题的出发点...

612
来自专栏开源优测

Python学习资源大集合

874
来自专栏DeveWork

Google Fonts导致WordPress 速度问题的三个解决方案

本来实在是不想写这个的,因为相关方法在圈子里面已经烂大街了。但无奈,一些客户将近期的Google Fonts导致 WordPress 打开速度慢的现象归咎于我的...

2369

扫码关注云+社区