您的位置:首页 > 移动开发 > IOS开发

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

2016-09-01 14:04 316 查看
最近由于公司需要一个扫描银行卡获取卡号的功能,网上找了很多相关的资料,完全扫描银行卡

获取卡号信息的都是价格贵的不得了的,而且仅仅只是授权而已,在此咱退而求次,找到一个可

以扫描信用卡的第三方框架,给大家伙分享一下,只能扫描信用卡……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版

Objective-C

- (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: %<a href="http://www.jobbole.com/members/uz441800">@,</a> expiry: %02i/%i, cvv: %@.", info.redactedCardNumber, info.expiryMonth, info.expiryYear, info.cvv);

[scanViewController dismissViewControllerAnimated:YES completion:nil];

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

-
(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: %<a href="http://www.jobbole.com/members/uz441800">@,</a>
expiry: %02i/%i, cvv: %@.", info.redactedCardNumber, info.expiryMonth, info.expiryYear, info.cvv);
 

    [scanViewController dismissViewControllerAnimated:YES completion:nil];
 

}

SWIFT版

Objective-C

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)
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

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)

    }  
}

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

最终的效果,识别的非常准确哦



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐