快速入门

SDK工程结构

aip-ocr-ios-sdk-$version
    lib                                // 需要引用的框架
        |-AipBase.framework            // 鉴权等基础框架包,必须引入
        |-AipOcrSdk.framework          // OCR服务,UI框架包,必须引入
        |-IdcardQuality.framework      // 身份证本地质量控制框架包,按需引入
    AipOcrDemo                         // Demo 工程
    AipOcrSdk                          // AipOcrSdk.framework源码

AipOcrDemo工程Link了AipBase.framework、AipOcrSdk.framework、IdcardQuality.framework三个框架。

AipOcrSdk工程Link了AipBase.framework、IdcardQuality.framework两个框架

注意 !!! 以上框架为Dynamic框架,请务必使用Embedded Binary方式嵌入!!!

其中

  • AipBase.framework中包含了鉴权相关服务,必须引入。
  • AipOcrSdk.framework中包含OCR服务、UI,必须引入。
  • IdcardQuality.framework包含了身份证本地质量控制的功能,如果需要使用身份证扫描识别功能,需要引入。
  • AipOcrSdk目录下的工程为AipOcrSdk.framework的源码;开发者可自行根据需求修改并引用

如何运行Demo工程

iOS SDK提供了一个可快速运行的Demo工程,建议首先运行一下Demo工程,其中包含了使用SDK的主要步骤。

运行步骤如下:

  1. 官网下载iOS SDK 压缩包,
  2. 解压缩,双击打开 AipOcrDemo/AipOcrDemo.xcodeproj
  3. 管理控制台中新建文字识别应用,配置BundleId为AipOcrDemo的BunldeId(默认为com.baidu.AipOcrDemo)
  4. 在AipOcrDemo工程中AipOcrDemo/ViewController.m viewDidLoad方法中配置相应管理控制台中新建的应用的Api Key, Secret Key
  5. 运行AipOcrDemo
  6. 上传至AppStore前,必须使用lipo命令移除模拟器架构。请参考 FAQ-2。

身份验证与安全

百度AIP开放平台使用OAuth2.0授权调用开放API,调用API时必须在URL中带上accesss_token参数。AccessToken可用AK/SK或者授权文件的方式获得。

OCR iOS SDK提供了以下两种AccessToken管理方法.

API Key / Secret Key

此种身份验证方案使用AK/SK获得AccessToken,缓存在本地。

虽然SDK对网络传输的敏感数据进行了二次加密,但由于AK/SK是明文填写在代码中,在移动设备中可能会存在AK/SK被盗取的风险。有安全考虑的开发者可使用第二种授权方案。

使用步骤:

  1. 管理控制台中配置OCR应用
  2. 复制应用的Api Key(简称AK) 和 Secret Key(简称SK),初始化AipOcrService单例:
[[AipOcrService shardService] authWithAK:@"Api Key" andSK:@"Secret Key"];

授权文件(安全模式)

此种身份验证方案使用授权文件获得AccessToken,缓存在本地。建议有安全考虑的开发者使用此种身份验证方式。

在您的移动APP分发出去之后,APP存在被反编译的可能,所以直接将AK / SK 置于APP源码之中,存在被盗取的风险。采用授权文件的身份验证方法,可有效保护AK/SK在移动设备中的安全。攻击者即使拦截了流量,盗取了授权文件,也难以盗用您的配额。

使用步骤:

  1. 官网中配置应用
  2. 下载对应应用的授权文件(默认名字为aip.license)
  3. 将授权文件添加至XCode工程(配置为资源并拷贝,Target -> Build Phases -> Copy Bundle Resource 中添加该文件)
  4. 读取授权文件原始字节,NSData格式,初始化AipOcrService单例:
// 示例
// 若未添加至主工程,则[NSBundle mainBundle]修改为对应bundle
NSString *licenseFile = [[NSBundle mainBundle] pathForResource:@"aip" ofType:@"license"];
NSData *licenseFileData = [NSData dataWithContentsOfFile:licenseFile];
[[AipOcrService shardService] authWithLicenseFileData:licenseFileData];