身份证、银行卡、车牌、图片文字识别、黄图识别、驾驶证识别库实现功能
预览图效果:
原文来自: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.ScannerViewandroid: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() {@Overridepublic 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*/@Overridepublic 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 |
身份证、银行卡、车牌、图片文字识别、黄图识别、驾驶证识别库实现功能相关推荐
- PDF图片文字如何编辑?ORC图文识别一招搞定
PDF大家都不陌生,但是可能很多人都没有深入了解过,就像我们说PDF编辑器可以编辑,很多人就那种扫描过的PDF文件去用PDF编辑器编辑,然后说根本编辑不了,是没有的PDF编辑器. 简单来说,我们今天就 ...
- UE4通过UCanvasRenderTarget2D导出图片+文字的组合图
原创文章,转载请注明出处. UCanvasRenderTarget2D 导出图片 前言 开始做 创建1>CanvasRenderTarget2D, 对其实现 创建2>材质球 创建3> ...
- 这两款好用的识别图片文字的软件app值得你们收藏
日常生活中,大家都会保留很多照片.比如老师上课的PPT.上班办公的文档.随手截取的网页图片等等.这些有时候是因为我们来不及记录,而拍照作备用的,后期还需要我们去手写抄录.其实这效率未免太慢了,如果可以 ...
- 微信怎么识别图片文字
微信怎么识别图片文字?微信拍照就能识别图片上的文字,抛弃那些APP解放手机的好方法你知道吗?相信很多人还不知道,那小编今天就将方法分享给大家吧. 迅捷文字识别属性:微信小程序 优点:相机模式:对着文字 ...
- Android笔记(二十):写一个图片文字识别SDK给自己用
背景 市面上文字识别大多需要开通会员才能使用,所以决定自己封装一个sdk出来,供后面开发扫描类app提供便捷工具 效果 SDK API 初始化 需进行初始化才能使用sdk EasyOcrSDK.get ...
- 车牌怎么识别?说两种识别途径
车牌怎么识别?平时生活中,我们经常选择开车进行代步,车牌是直接体现车辆信息的道具,无论是交通监管部门还是其他相关人士,都会需要经常处理其信息.手动录入不仅麻烦还容易出错,有没有可以快速识别车牌的方法呢 ...
- 修改Textview内图片文字间距和图片大小
平常我们的 图片文字结合如图: 对于上面的这种布局,我们一般采用的一个ViewGroup嵌入一个ImageView和一个TextView.如下所示: <LinearLayoutandroid:i ...
- 驾驶证识别SDK应用
近期以来,交警移动执法.移动查勘.二手车交易.二手车电商.掌上投保等名词逐渐进入大众的视野,这些新兴的名词背后是新技术的强大支撑,移动端驾驶证识别.行驶证识别技术的发展为移动互联注入了活力. 下面为大 ...
- OPT小讲堂 ∣ SciSmart图像识别之条形码识别、二维码识别
在第十三课中,我们讲了图像识别中的OCR:字符识别. 本课将继续介绍图像识别中的条形码识别.二维码识别.我们将分别介绍二者的基本概念.操作流程.参数解析及应用案例. 条形码识别 条形码识别的概念 条形 ...
- 二维码/条码识别、身份证识别、银行卡识别、车牌识别、图片文字识别、黄图识别、驾驶证(驾照)识别
Scanner 项目地址:shouzhong/Scanner 简介: 二维码/条码识别.身份证识别.银行卡识别.车牌识别.图片文字识别.黄图识别.驾驶证(驾照)识别 更多:作者 提 Bug 标签: ...
最新文章
- 如何在java中实现跨线程的通讯
- 2019 年百度之星·程序设计大赛 - 初赛二
- 面试官问我:解释一下Dubbo服务暴露
- NOIP2018最终成绩(一等奖名单)
- GetOpenFileName 选择文件的窗口
- 一文带你认识MindSpore新一代分子模拟库SPONGE
- hashmap扩容_面试官问:HashMap在并发情况下为什么造成死循环?一脸懵
- mysql去掉两个最高分_Excel函数 去掉最高分和最低分取平均值?这个函数不可不知...
- hp6960无法连接计算机,惠普6960驱动
- DRP项目知识点一: 数据库连接-封装Connection
- 英特尔2021至强cpu性能排行天梯图
- Kindle使用的一些方法
- 【2】深度神经网络的损失函数/激活函数
- python中将数字转换为字符串
- 华益血糖信息管理系统服务器,华益血糖信息化管理系统
- 我国成功研制EB级云存储系统:可满足大数据量存储落地需求
- jQuery高亮显示
- django报错:OperationalError: (1045, Access denied for user 'TEST'@'localhost' (using password: NO))
- C++性能优化系列——3D高斯核卷积计算(二)FMA向量化计算一维卷积
- 文竹越长越乱?教你7种修剪方法可保持文竹株形优美,矮壮浓密