预览图效果:

原文来自: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

身份证、银行卡、车牌、图片文字识别、黄图识别、驾驶证识别库实现功能相关推荐

  1. PDF图片文字如何编辑?ORC图文识别一招搞定

    PDF大家都不陌生,但是可能很多人都没有深入了解过,就像我们说PDF编辑器可以编辑,很多人就那种扫描过的PDF文件去用PDF编辑器编辑,然后说根本编辑不了,是没有的PDF编辑器. 简单来说,我们今天就 ...

  2. UE4通过UCanvasRenderTarget2D导出图片+文字的组合图

    原创文章,转载请注明出处. UCanvasRenderTarget2D 导出图片 前言 开始做 创建1>CanvasRenderTarget2D, 对其实现 创建2>材质球 创建3> ...

  3. 这两款好用的识别图片文字的软件app值得你们收藏

    日常生活中,大家都会保留很多照片.比如老师上课的PPT.上班办公的文档.随手截取的网页图片等等.这些有时候是因为我们来不及记录,而拍照作备用的,后期还需要我们去手写抄录.其实这效率未免太慢了,如果可以 ...

  4. 微信怎么识别图片文字

    微信怎么识别图片文字?微信拍照就能识别图片上的文字,抛弃那些APP解放手机的好方法你知道吗?相信很多人还不知道,那小编今天就将方法分享给大家吧. 迅捷文字识别属性:微信小程序 优点:相机模式:对着文字 ...

  5. Android笔记(二十):写一个图片文字识别SDK给自己用

    背景 市面上文字识别大多需要开通会员才能使用,所以决定自己封装一个sdk出来,供后面开发扫描类app提供便捷工具 效果 SDK API 初始化 需进行初始化才能使用sdk EasyOcrSDK.get ...

  6. 车牌怎么识别?说两种识别途径

    车牌怎么识别?平时生活中,我们经常选择开车进行代步,车牌是直接体现车辆信息的道具,无论是交通监管部门还是其他相关人士,都会需要经常处理其信息.手动录入不仅麻烦还容易出错,有没有可以快速识别车牌的方法呢 ...

  7. 修改Textview内图片文字间距和图片大小

    平常我们的 图片文字结合如图: 对于上面的这种布局,我们一般采用的一个ViewGroup嵌入一个ImageView和一个TextView.如下所示: <LinearLayoutandroid:i ...

  8. 驾驶证识别SDK应用

    近期以来,交警移动执法.移动查勘.二手车交易.二手车电商.掌上投保等名词逐渐进入大众的视野,这些新兴的名词背后是新技术的强大支撑,移动端驾驶证识别.行驶证识别技术的发展为移动互联注入了活力. 下面为大 ...

  9. OPT小讲堂 ∣ SciSmart图像识别之条形码识别、二维码识别

    在第十三课中,我们讲了图像识别中的OCR:字符识别. 本课将继续介绍图像识别中的条形码识别.二维码识别.我们将分别介绍二者的基本概念.操作流程.参数解析及应用案例. 条形码识别 条形码识别的概念 条形 ...

  10. 二维码/条码识别、身份证识别、银行卡识别、车牌识别、图片文字识别、黄图识别、驾驶证(驾照)识别

    Scanner 项目地址:shouzhong/Scanner 简介: 二维码/条码识别.身份证识别.银行卡识别.车牌识别.图片文字识别.黄图识别.驾驶证(驾照)识别 更多:作者   提 Bug 标签: ...

最新文章

  1. 如何在java中实现跨线程的通讯
  2. 2019 年百度之星·程序设计大赛 - 初赛二
  3. 面试官问我:解释一下Dubbo服务暴露
  4. NOIP2018最终成绩(一等奖名单)
  5. GetOpenFileName 选择文件的窗口
  6. 一文带你认识MindSpore新一代分子模拟库SPONGE
  7. hashmap扩容_面试官问:HashMap在并发情况下为什么造成死循环?一脸懵
  8. mysql去掉两个最高分_Excel函数 去掉最高分和最低分取平均值?这个函数不可不知...
  9. hp6960无法连接计算机,惠普6960驱动
  10. DRP项目知识点一: 数据库连接-封装Connection
  11. 英特尔2021至强cpu性能排行天梯图
  12. Kindle使用的一些方法
  13. 【2】深度神经网络的损失函数/激活函数
  14. python中将数字转换为字符串
  15. 华益血糖信息管理系统服务器,华益血糖信息化管理系统
  16. 我国成功研制EB级云存储系统:可满足大数据量存储落地需求
  17. jQuery高亮显示
  18. django报错:OperationalError: (1045, Access denied for user 'TEST'@'localhost' (using password: NO))
  19. C++性能优化系列——3D高斯核卷积计算(二)FMA向量化计算一维卷积
  20. 文竹越长越乱?教你7种修剪方法可保持文竹株形优美,矮壮浓密

热门文章

  1. 【杰理AC696X】上电DAC PO声处理
  2. UI设计是什么?UI设计师的工作内容有哪些?了解一下
  3. 手机实况足球2018 服务器维护进行中,梦幻足球联盟2018进不去 | 手游网游页游攻略大全...
  4. 记忆测试系统java代码_记忆测试系统-JAVA实现
  5. 质量保障体系建设演进案例
  6. java 获取当前周的周一和周日的日期
  7. iOS 如何追踪app
  8. 如果本地没装微软雅黑,网页改怎么显示雅黑字体
  9. 龙岗一个月350的出租房,我搬出来了
  10. 疫情反复下,5个营销动作让日化线下门店销量平稳微增