cardocr

项目地址:Eric0liang/cardocr 

简介:Android 腾讯优图 OCR 云平台识别身份证、银行卡、行驶证、驾驶证,依赖包小,识别次数免费

更多:作者   提 Bug   官网

标签:

OCR身份证、银行卡、行驶证、驾驶证-

使用前请阅读对应模块的文档和示例,如果有不清楚的地方,可以看源码,或者向我提问。觉得有帮助的,星星点起来!!!

这个库的底层是使用腾讯优图云平台识别技术,所以引用包非常小,识别速度大概几秒。

集成

permission 与 meta-data 声明

    <uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WRITE_SETTINGS"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><meta-dataandroid:name="OCR_APP_KEY"android:value="腾讯优图申请" /><meta-dataandroid:name="OCR_SECRET_ID"android:value="腾讯优图申请" /><meta-dataandroid:name="OCR_SECRET_KEY"android:value="腾讯优图申请" />

Gradle

    allprojects {jcenter()}
    compile 'com.github.eric0liang:lib_cardocr:1.0.5'

依赖的 jar 添加到 libs

fastjson.jar 用于解析腾讯云平台 response 的 json

BASE64Decoder.jar 用于解码腾讯云平台 response base64 格式的截图

混淆

-dontwarn cn.com.bluemoon.cardocr.**
-keep class cn.com.bluemoon.cardocr.** {*;}

demo apk 下载地址:

点击下载

效果

1.身份证识别


 

2.银行卡识别


3.行驶证识别


4.驾驶证识别


使用指南(2018.1.23 更新)

CaptureActivity 识别身份证、银行卡照相机类

API

startAction(Activity context, CardType type, int requestCode) 
startAction(Activity context, CardType type, String url, int requestCode) 
startAction(Activity context, CardType type, @StringRes int titleId, int requestCode)

  • context 调起照相机的 activity 类
  • type 枚举类,有五个类型
     public enum CardType {//身份证头像面,身份证国徽面,银行卡,行驶证,驾驶证TYPE_ID_CARD_FRONT, TYPE_ID_CARD_BACK,TYPE_BANK,TYPE_DRIVING_LICENSE_XINGSHI,TYPE_DRIVING_LICENSE_JIASHI
    }
    
  • titleId 自定义照相机顶部的 title,比如请确保身份证头像面边缘在框内
  • url 是否需要保存身份证的截图,传保存的文件夹路径,比如 Environment.getExternalStorageDirectory() + "/images"
  • requestCode onActivityResult 使用

使用 demo MainActivity 代码片段

    @Overridepublic void onClick(View v) {String dirPath = Environment.getExternalStorageDirectory() + "/images";switch (v.getId()) {case R.id.btn_id_card_back:CaptureActivity.startAction(this, CardType.TYPE_ID_CARD_BACK, checkbox.isChecked() ? dirPath : null, 0);//CaptureActivity.startAction(this, CardType.TYPE_ID_CARD_BACK, 0);//CaptureActivity.startAction(this, CardType.TYPE_ID_CARD_BACK, R.string.txt_id_card_title, 0);break;case R.id.btn_id_card_front:CaptureActivity.startAction(this, CardType.TYPE_ID_CARD_FRONT, checkbox.isChecked() ? dirPath : null, 0);//CaptureActivity.startAction(this, CardType.TYPE_ID_CARD_FRONT, 0);//CaptureActivity.startAction(this, CardType.TYPE_ID_CARD_FRONT, R.string.txt_id_card_title, 0);break;case R.id.btn_bank:CaptureActivity.startAction(this, CardType.TYPE_BANK, 1);break;case R.id.btn_xingshi:CaptureActivity.startAction(this,CardType.TYPE_DRIVING_LICENSE_XINGSHI,2);break;case R.id.btn_jiashi:CaptureActivity.startAction(this,CardType.TYPE_DRIVING_LICENSE_JIASHI,2);break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == RESULT_OK) {imgIdCard.setVisibility(View.GONE);if (requestCode == 0) {IdCardInfo info = (IdCardInfo)data.getSerializableExtra(CaptureActivity.BUNDLE_DATA);txtInfo.setText(info.toString());if (!TextUtils.isEmpty(info.getImageUrl())) {imgIdCard.setVisibility(View.VISIBLE);imgIdCard.setImageBitmap(BitmapFactory.decodeFile(info.getImageUrl()));}} else if (requestCode == 1){BankInfo info = (BankInfo)data.getSerializableExtra(CaptureActivity.BUNDLE_DATA);txtInfo.setText(info.toString());} else {DrivingLicenseInfo info = (DrivingLicenseInfo)data.getSerializableExtra(CaptureActivity.BUNDLE_DATA);txtInfo.setText(info.toString());}}}

IdCardInfo

private String authority; //签发机关,XXX 公安局
private String validDate; //有效期限,2007.02.14-2017.02.14
private String imageUrl; //截图保存地址,预留
private String name; //姓名,艾米
private String sex; //性别,女
private String nation; //民族,汉
private String birth; //出生,1990/12/22
private String address; //住址,浙江省海盐县武原街工人路
private String id; //公民身份号码,610333199012223323

BankInfo

private String bankName; //银行信息,农业银行
private String cardName; //卡名字,金穗通宝卡(银联卡)
private String cardType; //卡类型,借记卡
private String cardNumber; //卡号,6228475757548

DrivingLicenseInfo

private String licenseNumber;//车牌号码
private String vehicleType;//车辆类型
private String master;//所有人
private String address;//住址
private String function;//使用性质
private String brandModel;//品牌型号
private String identifyCode;//识别代码
private String engineNumber;//发动机号
private String registrationDate;//注册日期
private String openingDate;//发证日期private String certificateNumber;//证号
private String name;//姓名
private String gender;//性别
private String nationality;//国籍
private String dateBirth;//出生日期
private String quasiDrivingType;//准驾车型
private String effectiveDate;//有效日期
private String startDate;//起始日期

识别照相机界面,默认样式如下,也可自定义(参考 CoustomCaptureActivity 类)

如果想自定义识别照相机界面,继承 BaseCaptureActivity,并重写 getLayoutId,initCustomView 两个方法即可。

    @Overridepublic int getLayoutId() {return R.layout.activity_coustom;}@Overridepublic void initCustomView() {Button btnBack = (Button)findViewById(R.id.btn_back);Button btnTake = (Button)findViewById(R.id.btn_take);View.OnClickListener listener = new View.OnClickListener() {@Overridepublic void onClick(View v) {int id = v.getId();if (id == R.id.btn_back) {finish(); //关闭} else if (id == R.id.btn_take) {identification(); //拍照识别}}};btnBack.setOnClickListener(listener);btnTake.setOnClickListener(listener);}

更新记录

  • 1.0.5 2018.8.21

    • 修复 8.0 奔溃问题
  • 1.0.4 2018.1.23
    • 优化行驶证、驾驶证识别
    • 添加使用说明
  • 1.0.3, 1.0.2 2017.12.8
    • 优化代码
  • 1.0.1 2017.12.8
    • 修复连续拍照触发的奔溃
    • 增加行驶证、驾驶证识别
  • 1.0.0 2017.11.7
    • first commit

其它问题

发现任何问题可以提 issue


关于作者

联系方式

  • Github: https://github.com/Eric0liang
  • Email: liangjiangli@bluemoon.com.cn

Android 腾讯优图 OCR 云平台识别身份证、银行卡、行驶证、驾驶证,依赖包小,识别次数免费相关推荐

  1. 腾讯优图·AI 开放平台全面升级:AI 能力最全面的平台

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:优图实验室 人工智能是一项前瞻性科学研究,自信息技术产生发展以来,人们在这一领域进行了长期的科学探索和技术攻坚,并不断涌现出新思想.新观 ...

  2. 腾讯优图发布四大平台产品,持续开放视觉AI能力

    7月10日,2020世界人工智能大会在上海举行,腾讯优图实验室总经理吴运声发表了"新基建新生态下的计算机视觉"的主题演讲,分享了优图视觉AI技术在工业.教育.泛娱乐等领域的最新落地 ...

  3. Android 腾讯优图开发问题总结

    Android 腾讯优图开发问题总结 接入优图检测人脸失败错误码SDK_IMAGE_FACEDETECT_FAILED -1101 具体表现 提供的getBitmap的问题 Bitmap旋转的问题 优 ...

  4. 调用腾讯优图OCR手写体文字识别接口

    一.百度搜索:腾讯优图·AI开放平台: 二.点击技术体验中心,可以体验一下效果: 三.点击开发者中心,左侧找到"API文档"里面的"通用手写体文字识别".这里面 ...

  5. Python调用腾讯优图OCR通用API实现文字识别

    API地址:https://ai.qq.com/doc/ocrgeneralocr.shtml 腾讯优图的API比较复杂的就是生成签名,不过不知道腾讯的服务器出什么问题了,调用的时候一直提示504,演 ...

  6. ECCV 2020 | 腾讯优图8篇论文入选,涵盖目标跟踪、行人重识别、人脸识别等领域...

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 来源:腾讯优图 近日,计算机视觉方向的三大国际顶级会议之一的ECCV 2020公布论文获奖结果 ...

  7. 腾讯优图吴永坚:迈向深度学习,我们面临模型训练与推荐的双重考验

    整理 | 琥珀 出品 | AI 科技大本营 对腾讯优图的发展历程,吴永坚表示,优图是非常幸运的,幸运的同时也知道优图选对了方向,只要坚持,还是会有收获的. 12 月 15 日,以"新趋势.新 ...

  8. 腾讯优图|人脸3D重建与渲染技术研究与应用

    编辑丨腾讯优图AI开放平台 6月5日-6日,2021全球人工智能技术大会(GAITC 2021)在杭州成功举办.本次大会,旨在汇聚中国科创智慧与活力的同时,与世界建立互通共享的沟通桥梁,在交流中探索共 ...

  9. CVPR 2021 | 腾讯优图20篇论文入选,含人脸识别、时序动作定位、视频动作分割等领域...

    编辑丨腾讯优图AI开放平台 计算机视觉世界三大顶会之一的CVPR 2021论文接收结果出炉!本次大会收到来自全球共7015篇有效投稿,最终有1663篇突出重围被录取,录用率约为23.7%.本次,腾讯优 ...

最新文章

  1. PLSQL重点问题理解和实战
  2. 电商扣减库存_以电商为例 | B端产品经理,怎么做好库存系统设计
  3. Sql注入工具php,phpcms框架SQL注入--基于Havij工具
  4. 海尔微型计算机一键还原怎么操作,教你电脑一键还原怎么操作
  5. VS中C++ 项目重命名
  6. 为未来元素添加点击事件的两种写法
  7. wpf开发仿真3d软件_3D体验平台品牌应用——SOLIDWORKS?
  8. httpClient创建对象、设置超时
  9. Oracle数据库在.net连接问题总结
  10. 3V升压5V芯片,3V升压5V电路图
  11. C++11常见编译与链接错误解决总结
  12. Win7系统安装的方法,电脑重装系统win7
  13. 这可能是学日语最好的几个App
  14. UVa11584 划分回文串
  15. windows快速添加开机启动项/禁用开机启动项
  16. 关于uipath软件安装激活手顺书——在线激活
  17. iOS 视频、图片翻转问题
  18. 同步六进制加法计数电路设计(D触发器)
  19. glut库更新旧程序无法完成编译问题描述
  20. SWUST OJ492: 荷兰国旗问题

热门文章

  1. mysql第五话 - mysql索引原理分析
  2. 参加历年CTF大赛(2022年起持续更新)
  3. 航班管家发布《2021年Q1民航运行监测与数据分析》
  4. foxscan的安装笔记~
  5. 学习中的英文单词及其他知识
  6. selenium.模拟键盘操作(Keys)
  7. pytorch实现卷积层和BN层融合
  8. 平面设计基础知识,平面设计入门先学什么:夏雨老师
  9. 【集合论】关系性质 ( 对称性 | 对称性示例 | 对称性相关定理 | 反对称性 | 反对称性示例 | 反对称性定理 )
  10. Apriori算法详解与实现