• Stars
    star
    117
  • Rank 301,828 (Top 6 %)
  • Language
    Java
  • Created almost 7 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

新增银行卡识别功能。可快速高效对身份证进行识别,可识别头像面(姓名、性别、民族、住址、身份证号码) 和 国徽面(签发机关、有效期),烦请点个Star!

一:简介

快捷支付涉及到方方面面,同时安全问题既是用户所关心的,也是制作者不容忽视的重要部分。 比如涉及到支付和金钱的app,商户端app等等,都需要进行实名认证,实名认证可以通过银行卡认证和身份证认证。 通常办法是通过上传照片,并且手动输入基本信息进行认证,这种方法不仅操作复杂,而且容易出错。 网上很多资源,识别率低,速度慢,用户体验很差。今天我就和大家介绍一下我使用的方法,可以快速、高效的识别中国身份证信息。

二:原理

在拍摄框中右上区域加了一个人像区域提示框,并将该区域设为扫描人脸的区域,只有该区域扫描到身份证上的人脸时(确保用户的确将身份证人像对准了拍摄框中的人像框),才执行读取身份证信息的操作。

三:项目展示

扫描身份证面截图

头像面扫描

国徽面扫描

信息展示页面

头像页信息

国徽页信息

四: 使用流程介绍

4.1 身份验证

由于使用的是百度云的图像文字识别sdk,首先需要去百度云[管理控制台 ](https://console.bce.baidu.com/ai/?_=1515636851708&fromai=1#/ai/ocr/app/list)获得API Key / Secret Key。

管理控制台

管理控制台

4.2 下载demo

  1. 将下载的demo中libs目录下的ocr-sdk.jar文件拷贝到工程libs目录中,并加入工程依赖
  2. 将libs目录下armeabi,arm64-v8a,armeabi-v7a,x86文件夹按需添加到android studio工程src/main/jniLibs目录中, eclipse用户默认为libs目录。
  3. 在Android studio中以模块方式导入下载包中的identify文件夹,模块方式导入流程如下: 首先要在顶层工程目录下的settings.gradle文件中include模块名
include ':app',':identify'

然后直接复制粘贴identify文件导入到项目的文件夹中!!!然后Build>Rebuild Project,重新构建项目。

4.3 权限配置

  1. 在工程AndroidManifest.xml文件中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  1. 在Proguard配置文件中增加, 防止release发布时打包报错:
-keep class com.baidu.ocr.sdk.**{*;}
-dontwarn com.baidu.ocr.**

4.4 核心函数介绍

  1. 初始化函数
OCR.getInstance().initAccessTokenWithAkSk(new OnResultListener<AccessToken>() {
            @Override
            public void onResult(AccessToken result) {

            }

            @Override
            public void onError(OCRError error) {
                error.printStackTrace();
                Log.d("onError", "msg: " + error.getMessage());
            }
        }, getApplicationContext(), "你注册的appkey", "你注册的sk");
  1. 身份证拍照
Intent intent = new Intent(MainActivity.this, CameraActivity.class);
intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
    FileUtil.getSaveFile(getApplication()).getAbsolutePath());
intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_FRONT);
startActivityForResult(intent, REQUEST_CODE_CAMERA);
  1. 图像回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_CODE_CAMERA && resultCode == Activity.RESULT_OK) {
        if (data != null) {
            String contentType = data.getStringExtra(CameraActivity.KEY_CONTENT_TYPE);
            String filePath = FileUtil.getSaveFile(getApplicationContext()).getAbsolutePath();
            if (!TextUtils.isEmpty(contentType)) {
                if (CameraActivity.CONTENT_TYPE_ID_CARD_FRONT.equals(contentType)) {
                    recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, filePath);
                } else if (CameraActivity.CONTENT_TYPE_ID_CARD_BACK.equals(contentType)) {
                    recIDCard(IDCardParams.ID_CARD_SIDE_BACK, filePath);
                }
            }
        }
    }
}
  1. 数据解析
private void recIDCard(String idCardSide, String filePath) {
    IDCardParams param = new IDCardParams();
    param.setImageFile(new File(filePath));
    param.setIdCardSide(idCardSide);
    param.setDetectDirection(true);
    OCR.getInstance().recognizeIDCard(param, new OnResultListener<IDCardResult>() {
        @Override
        public void onResult(IDCardResult result) {
            if (result != null) {
                Log.d("onResult", "result: " + result.toString());
            }
        }

        @Override
        public void onError(OCRError error) {
            Log.d("onError", "error: " + error.getMessage());
        }
    });
}

到此身份证识别接入就结束了!!!

相同方式均可实现银行卡识别、驾驶证识别、行驶证识别、车牌识别、营业执照识别等等,如有需要demo可联系我。

希望可以帮助大家,可加微信:FBY-fan 拉你进群交流

如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议

如需转载请联系我,经过授权方可转载,谢谢


欢迎关注公众号「网罗开发」

网罗开发

More Repositories

1

FBYBankCardRecognition-iOS

可快速高效对银行卡进行识别,可识别卡号是平的和凹凸的银行卡,烦请点个Star!
Objective-C
127
star
2

FBYIDCardRecognition-iOS

可快速高效对身份证进行识别,可识别头像面(姓名、性别、民族、住址、身份证号码) 和 国徽面(签发机关、有效期),烦请点个Star!
Objective-C
119
star
3

FBYInterview-iOS

整理 14 类 iOS 常问面试题,大佬面经,校招面经,大师班考题。
84
star
4

FBYDataDisplay-iOS

(新增柱状统计图、环形统计图),码出一个高颜值原生折线图,烦请点个Star!
Objective-C
55
star
5

FBYFaceRecognitionDemo_iOS

demo人脸识别功能是对讯飞 sdk 二次封装,活体检测功能是自己开发封装,烦请点个Star,你的支持是我最大的动力!
Objective-C
39
star
6

FBYBankCardOC

iOS 仿支付宝银行卡界面(支持Swift和OC),烦请点个Star,你的支持是我最大的动力!
Objective-C
14
star
7

FlutterToutiao

Flutter 实战 -- 仿今日头条
Dart
12
star
8

FBYImageZoom-iOS

iOS 实现点击图片放大到全屏
Objective-C
11
star
9

PowerBoot

android 开机自启动app
Java
11
star
10

QrCodeScan-master

QR code
Java
10
star
11

AppUIDesign

App 设计灵感
8
star
12

Alipay-Wechat-UPPay_Android

Android 支付宝、微信、银联支付demo,烦请点个Star,你的支持是我最大的动力!
Java
7
star
13

FBYVideoPlayer-iOS

基于AVFoundation封装的一个视频播放器,如有问题可加QQ群: 668562416 交流
Objective-C
7
star
14

FBYCardRecognition-iOS

可快速高效对身份证和银行卡进行识别。希望可以帮助大家,如有问题可加QQ群: 668562416 交流
Objective-C
7
star
15

zxing

Android-ZXing 二维码扫描和生成二维码Demo
Java
6
star
16

GesturePassword

手势密码锁
Objective-C
5
star
17

Gesturepsd-Android

Android 手势密码锁
Java
5
star
18

Amap

高德地图
Objective-C
5
star
19

FFDropDownMenu-master

下拉菜单
Objective-C
4
star
20

FBYThirdLogin-Swift

实现 GitHub、Google、Apple 登录
Swift
4
star
21

FBYTablayoutUseCase

Tablayout所有使用场景,包括修改指示线长度、设置自定义图标、可滚动
Java
3
star
22

FBYTouchID

指纹识别
Objective-C
3
star
23

GiveRedEnvelopes

来源:来自 qq:668562416 "西安 - 梦龙雪糕" 的捐赠
Objective-C
3
star
24

iOS-QRcode

iOS 使用原生库实现二维码一维码扫描
Objective-C
2
star
25

keyboard

自定义金额键盘
Objective-C
2
star
26

iOS-PasswordTextField

密码输入框
Objective-C
2
star
27

videoLoginDemo-master

优步登录页面
Objective-C
2
star
28

FBYWiFiAutomaticConnection

iOS App 无需跳转系统设置自动连接 Wi-Fi
Objective-C
2
star
29

FBYGFPage

高仿 TB 秒杀页面
Objective-C
2
star
30

FBYAlipay

C
1
star
31

TAGChat

第三方即时聊天
Objective-C
1
star
32

WWDC-FBYApplePay

Swift
1
star
33

fanbaoying.github.io

HTML
1
star
34

AndroidGuideDemo

SDK
Java
1
star
35

agreeDemo

ios pay SDK
Objective-C
1
star
36

SHBus

上海公交
Objective-C
1
star
37

FBYFMDBDemo

FMDB | 实现数据的增删改查
Objective-C
1
star
38

FBYUPPay

新版本银联控件支付开发源码
Objective-C
1
star
39

FBYSDKDemo

静态库生成demo
Objective-C
1
star
40

PSDrawerManage

仿QQ侧边栏
Objective-C
1
star
41

FBYURLSDKDemo

静态库使用demo
Objective-C
1
star