OCR即光学字符识别技术,身份证号、银行卡号识别就是它在项目中的应用。在GitHub上几个排名比较靠前的ios库中,我觉得SwiftOCR还是比较好用的,这个库提供了两个接口,大体上可以满足银行卡等的识别。
SwiftOCR只能识别英文和数字,如果想要识别汉字,还需要借助如百度云,腾讯云等三方库,这些都是要收费的,这里不做详述。本文主要讲述在OC项目中集成SwiftOCR,Swift项目集成比较简单。
SwiftOCR集成
1.生成SwiftOCR.framework
在GitHub上下载SwiftOCR,按下图路径打开项目,生成真机和模拟器包,合并得到SwiftOCR.framework。由于SwiftOCR依赖于GPUImage,所以在生成过程中也会产生GPUImage.framework。
2.项目的一些设置
将生成的SwiftOCR.framework和GPUImage.framework拖入到项目中,由于SwiftOCR.framework和GPUImage.framework包含了一些资源文件,所以需要在Build Phases - Copy Files 中添加这两个framework。
运行代码不报错则集成成功。
遇到的一些坑
本来到了这一步基本上就成功了,#import <SwiftOCR/SwiftOCR-Swift.h>,然后使用里面已经翻译成OC语言的类就可以了。但是查看SwiftOCR-Swift.h这个文件发现什么都没有。
仔细查看SwiftOCR的源码后发现,SwiftOCR这个类并没有继承NSobject,所以在SwiftOCR-Swift.h这个文件中不能查看翻译过来的OC代码。
于是需要修改源码中SwiftOCR类的代码,将SwiftOCR继承NSObject,这时候两个init方法会报错
,我直接把这两个init方法删除掉。解决掉错误之后,生成frameWork,重复上文步骤。此时生成的SwiftOCR-Swift.h文件如下图所示:
swiftOCR的使用
识别图片所有字符使用第一个方法,识别局部字符使用第二个方法。如果使用摄像机扫描,首先需要对画面进行截图然后再进行字符识别。
SwiftOCR *ocr = [[SwiftOCR alloc] init];
UIImage *image = [UIImage imageNamed:@"QQ"];
[ocr recognize:image :^(NSString * _Nonnull string) {
NSLog(@"%@",string);
}];