1. 人脸离线采集集成
1.1 开发文档
开发文档地址: 人脸离线采集集成
1.2 遇到的问题
1.2.1 按文档操作到步骤 2.3
错误信息如下:
错误信息:dyld: Library not loaded: @rpath/IDLFaceSDK.framework/IDLFaceSDK
Referenced from: /private/var/containers/Bundle/Application/5B25B8BA-34B3-4AC8-8DFA-E6EC3ED6913C/沈阳智慧医保.app/沈阳智慧医保
Reason: image not found
dyld: launch, loading dependent libraries
DYLD_LIBRARY_PATH=/usr/lib/system/introspection
DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/GPUTools.framework/libglInterpose.dylib:/usr/lib/libMTLCapture.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib
Message from debugger: Terminated due to signal 6
报错原因是:IDLFaceSDK 未被 load
解决办法:
step 1: Build Phases 中 + New Copy Files Phase
step 2: Copy Files 中,Destination 选择 Frameworks, + IDLFaceSDK.framework 即可。
1.2.2 按文档操作到步骤 3.4
百度提供的 demo 中,人脸采集后的数据位于 BDFaceLivenessViewController 的 - (void)faceProcesss:(UIImage *)image 中。
在活体动作设置时,numberOfLiveness 与 liveActionArray 的数量应该是一致的。
注意:并不是我理解的动作全部开启,numberOfLiveness 设置为 1,就会每次运行时,随机选择一种动作进行活体验证。
项目中实现如下,每次随机显示一种动作来进行活体验证
// 设置活体检测动作
NSArray *livenesswithList = @[
@(FaceLivenessActionTypeLiveEye),
@(FaceLivenessActionTypeLiveMouth),
@(FaceLivenessActionTypeLiveYawRight),
@(FaceLivenessActionTypeLiveYawLeft),
@(FaceLivenessActionTypeLivePitchUp),
@(FaceLivenessActionTypeLivePitchDown),
];
int x = arc4random() % 6;
[BDFaceLivingConfigModel.sharedInstance.liveActionArray addObject:livenesswithList[x]];
BDFaceLivingConfigModel.sharedInstance.isByOrder = NO;
BDFaceLivingConfigModel.sharedInstance.numOfLiveness = 1;
2. OCR 集成
2.1 遇到的问题
2.1.1 集成 sdk 后保错,无法运行
保错信息如下:
/aip-ocr-ios-sdk-3/AipOcrDemo/AipOcrDemo.xcodeproj Building for iOS Simulator, but the linked and embedded framework 'IdcardQuality.framework' was built for iOS.
或
build for ios but the linked and embedded framework was built for ios + ios simulator
解决办法参考 博客
移除x86_64, i386 ,用真机调试就好了,没必要纠结模拟器,相关命令如下:
cd lib
# 使用lipo -info 可以查看包含的架构
lipo -info AipBase.framework/AipBase # Architectures in the fat file: AipBase are: i386 x86_64 armv7 armv7s arm64
# 移除x86_64, i386
lipo -remove x86_64 AipBase.framework/AipBase -o AipBase.framework/AipBase
lipo -remove i386 AipBase.framework/AipBase -o AipBase.framework/AipBase
lipo -remove x86_64 AipOcrSdk.framework/AipOcrSdk -o AipOcrSdk.framework/AipOcrSdk
lipo -remove i386 AipOcrSdk.framework/AipOcrSdk -o AipOcrSdk.framework/AipOcrSdk
# 再次查看
lipo -info AipBase.framework/AipBase # Architectures in the fat file: AipBase are: armv7 armv7s arm64