身份证、银行卡、车牌、图片文字识别、黄图识别、驾驶证识别库实现功能
预览图效果:原文来自:http://code.662p.com/view/19388.html ,需要自己去下载就可以了。使用依赖implementation 'com.shouzhong:Scanner:1.1.3'以下选择自己需要的// zxingimplementation 'com.google.zxing:core:3.3.3'// zbarimplementation 'com.sho
·
预览图效果:

原文来自:http://code.662p.com/view/19388.html ,需要自己去下载就可以了。
使用
依赖
implementation 'com.shouzhong:Scanner:1.1.3'
以下选择自己需要的
// zxing
implementation 'com.google.zxing:core:3.3.3'
// zbar
implementation 'com.shouzhong:ScannerZBarLib:1.0.0'
// 银行卡识别
implementation 'com.shouzhong:ScannerBankCardLib:1.0.3'
// 身份证识别
implementation 'com.shouzhong:ScannerIdCardLib:1.0.4'
// 车牌识别
implementation 'com.shouzhong:ScannerLicensePlateLib:1.0.3'
// 图片文字识别
implementation 'com.shouzhong:ScannerTextLib:1.0.0'
// 黄图识别
implementation 'com.shouzhong:ScannerNsfwLib:1.0.0'
// 驾驶证识别
implementation 'com.shouzhong:ScannerDrivingLicenseLib:1.0.1'
// 身份证识别(第二种方式)
implementation 'com.shouzhong:ScannerIdCard2Lib:1.0.0'
代码
基本使用
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.shouzhong.scanner.ScannerView
android:id="@+id/sv"
android:layout_width="match_parent"
android:layout_height="1080px"
android:background="#000000"/>
</RelativeLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scanner);
scannerView = findViewById(R.id.sv);
scannerView.setViewFinder(new ViewFinder(this));
scannerView.setSaveBmp(true);
scannerView.setEnableZXing(true);
scannerView.setEnableZBar(true);
scannerView.setEnableBankCard(true);
scannerView.setEnableIdCard(true);
scannerView.setEnableLicensePlate(true);
scannerView.setCallback(new Callback() {
@Override
public void result(Result result) {
tvResult.setText("识别结果:\n" + result.toString());
scannerView.restartPreviewAfterDelay(2000);
}
});
}
@Override
protected void onResume() {
super.onResume();
scannerView.onResume();
}
@Override
protected void onPause() {
super.onPause();
scannerView.onPause();
}
开启或者关闭某个识别器
// 启用zxing识别器
scannerView.setEnableZXing(true);
// 启用zbar识别器
scannerView.setEnableZBar(true);
// 启用银行卡识别器
scannerView.setEnableBankCard(true);
// 启用身份证识别器(这里只支持2代身份证)
scannerView.setEnableIdCard(true);
// 启用车牌识别
scannerView.setEnableLicensePlate(true);
// 启用驾驶证识别
scannerView.setEnableDrivingLicense(true);
// 启用身份证识别(第二种方式)
scannerView.setEnableIdCard2(true);
如果你想自定义识别器
scannerView.setScanner(new IScanner() {
/**
* 这里实现自己的识别器,并把识别结果返回
*
* @param data 矩形框内nv21图像数据
* @param width 图像宽度
* @param height 图像高度
* @return
* @throws Exception
*/
@Override
public Result scan(byte[] data, int width, int height) throws Exception {
// 如果你想转为Bitmap,请使用NV21.nv21ToBitmap(byte[] nv21, int width, int height)
return null;
}
});
这里没给默认的预览页面,需要自己自定义,请参考demo
回调说明
Result
| 属性 | 说明 |
|---|---|
| TYPE_CODE | 类型:二维码/条码 |
| TYPE_ID_CARD_FRONT | 类型:身份证人头面 |
| TYPE_ID_CARD_BACK | 类型:身份证国徽面 |
| TYPE_BANK_CARD | 类型:银行卡 |
| TYPE_LICENSE_PLATE | 类型:车牌 |
| TYPE_DRIVING_LICENSE | 类型:驾驶证 |
| type | 结果类型 |
| path | 保存的图片路径 |
| data | 数据 |
// 以下是对data的说明
// 当type为TYPE_CODE,TYPE_BANK_CARD,TYPE_LICENSE_PLATE时,data为字符串
// 当type为TYPE_ID_CARD_FRONT时,data为json字符串,格式如下
{
"cardNumber": "21412412421",// 身份证号
"name": "张三",// 姓名
"sex": "男",// 性别
"nation": "汉",// 民族
"birth": "1999-01-01",// 出生
"address": "地址"// 地址
}
// 当type为TYPE_ID_CARD_BACK时,data为json字符串,格式如下
{
"organization": "签发机关",// 签发机关
"validPeriod": "20180101-20380101"// 有效期限
}
// 当type为TYPE_DRIVING_LICENSE时,data为json字符串,格式如下
{
"cardNumber": "43623446432",// 证号
"name": "张三",// 姓名
"sex": "男",// 性别
"nationality": "中国",// 国籍
"address": "地址",// 地址
"birth": "1999-01-01",// 出生日期
"firstIssue": "2018-01-01",// 初次领证日期
"_class": "C1",// 准驾车型
"validPeriod": "20180101-20240101"// 有效期限
}
BankCardInfoBean
| 属性或方法 | 说明 |
|---|---|
| cardNumber | 银行卡号 |
| cardType | 银行卡(英文)类型 |
| bank | 银行(英文)名称 |
| getCNBankName | 获取银行(中文)名称 |
| getBankId | 获取银行编号 |
| getCNCardType | 获取银行卡(中文)类型 |
方法说明
ScannerView
| 方法名 | 说明 |
|---|---|
| setViewFinder | 扫描区域 |
| setCallback | 扫码成功后的回调 |
| setCameraDirection | 摄像头方向,后置为Camera.CameraInfo.CAMERA_FACING_BACK,前置为Camera.CameraInfo.CAMERA_FACING_FRONT |
| setEnableZXing | 是否启用zxing识别器,默认false |
| setEnableZBar | 是否启用zbar识别器,默认false |
| setEnableQrcode | 是否启动二维码识别,默认true,只有在zxing或者zbar开启时有效 |
| setEnableBarcode | 是否启动条码识别,默认true,只有在zxing或者zbar开启时有效 |
| setEnableBankCard | 是否启用银行卡识别器,默认false |
| setEnableIdCard | 是否启用身份证识别器,默认false |
| setEnableIdCard2 | 是否启用身份证识别器(第二种方式),默认false |
| setEnableDrivingLicense | 是否启用驾驶证识别器,默认false |
| setEnableLicensePlate | 是否启用车牌识别器,默认false |
| setScanner | 自定义识别器 |
| onResume | 开启扫描 |
| onPause | 停止扫描 |
| restartPreviewAfterDelay | 设置多少毫秒后重启扫描 |
| setFlash | 开启/关闭闪光灯 |
| toggleFlash | 切换闪光灯的点亮状态 |
| isFlashOn | 闪光灯是否被点亮 |
| setShouldAdjustFocusArea | 设置是否要根据扫码框的位置去调整对焦区域的位置,部分手机不支持,默认false |
| setSaveBmp | 设置是否保存识别的图片,默认false |
| setRotateDegree90Recognition | 是否在原来识别的图像基础上旋转90度继续识别,默认false |
ScannerUtils
| 方法名 | 说明 |
|---|---|
| decodeCode | 二维码/条码识别,建议在子线程运行 |
| decodeBank | 银行卡识别,建议在子线程运行 |
| getBankCardInfo | 获取银行卡信息,请在子线程运行 |
| decodeIdCard | 身份证识别,建议在子线程运行 |
| decodeId2Card | 身份证识别(第二种方式),建议在子线程运行 |
| decodeDrivingLicense | 驾驶证识别,建议在子线程运行 |
| decodeLicensePlate | 车牌识别,建议在子线程运行 |
| decodeText | 图片文字识别,请在子线程运行 |
| decodeNsfw | 黄图识别,大于0.3可以说图片涉黄,建议在子线程运行 |
| createBarcode | 条码生成,建议在子线程运行 |
| createQRCode | 二维码生成,建议在子线程运行 |
| addLogo | 往图片中间加logo |
NV21
| 方法名 | 说明 |
|---|---|
| nv21ToBitmap | nv21转bitmap |
| bitmapToNv21 | bitmap转nv21 |
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)