android身份证自动识别

Android扫描识别身份证识别SDK 随着智能手机的硬件不断优化,移动互联网及应用大范围普及,互联网+各行各业,跨界、融合、创新,市场瞬息万变,有野心的企业和人、技术都在拼命的赶这趟快车,希望能在这个似乎“一切皆有可能”的互联网黄金时代分一杯羹。 出于对业务模式创新,以及用户体验优化的追求,以前很多依托特定仪器才能实现的技术和操作开始适配到移动端,催生了更多移动端的创新和优化,OCR技术就是这股移动化浪潮中相当受到企业用户青睐的技术... 阅读详情
android身份证拍照识别:
    市场上身份证识别一般是通过第三方的公司专门做ocr识别的通过接口的形式对身份证进行识别,在此我主要介绍一下不通过第三方公司的接口该如何实现身份证自动识别.
1.拍照识别身份证:
    首先通过自定义相机进行拍照,(注:由于上一篇已经对自定义相机拍照功能的实现做了介绍以及上传了详细代码,在这里就不做介绍了)将拍照的图片通过jni调用so库将图片传给切片so库对图片进行切片.将身份证号码单独切出来,将单独切出的身份证号码图片传给识别so库进行识别,在识别的时候我们首先需要一个训练库,训练库里面包含身份证的单个字符,其实识别的准备率就是看训练库里面包含的所有场景:
 android通过jni调用so的接口(注:com.qdym.idcardcode.utils接口包名必须是这个以及类名也必须是IDCardRecognition
因为so里面提供的接口名是跟着包名及类名一致的
):
package com.qdym.idcardcode.utils;

/**
 * 作者:zhongshuiping
 * <p/>
 * 工号: ${USER_NAME}
 */
public class IDCardRecognition {
    // TODO Auto-generated constructor stub
    /* 初始化函数
     * 返回:0,说明操作成功
    * @param strFilePath 文件路径  示例:D:\CNTK
    */
    public static native int Init(String strFilePath);

    /* 图片匹配切割纠正
    * 返回:成功:裁剪后保存的图像路径 失败:返回null
    * @param infoData jpg图片信息数据
    * @param jpgData jpg图片数据
    * @param strCutFile 裁剪后保存的图片路径包含文件名
    * @param strIDFile 保存裁剪后的身份证号码区域图片
    */
    public static native int JpgImgCut(byte[] jpgData, int[] infoData,String strCutFile,String strIDFile);

    /* 初始化函数
 * 返回:身份证号码,说明操作成功,否则返回null
 * @param strImgFile 文件路径  示例:D:\CNTK\1.jpg
 */
    public static native String GetIDCard(String strImgFile);



    static {
        System.loadLibrary("IDCardRecognition");
    }
}

int Result= IDCardRecognition.JpgImgCut(data,infoData, maximgPath,minimgpath);
String IDcardValue=IDCardRecognition.GetIDCard(minimgpath);


2.zip格式文件:
    由于我们需要对身份证进行拍照,拍照下来的图片需要存在手机的文件夹里面,因为身份证涉及到个人信息安全问题,所以在此我将可视化的jpg图片进行zip打包并设置解压密码,并压缩减少存储内存.
加载依赖库:
compile 'net.lingala.zip4j:zip4j:1.3.2'
/***
 * zip图片转换
 */
private void deletefile(){
    new AsyncTask<Void, Void, Void>() {
        @Override
        protected Void doInBackground(Void... p) {
            SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd-HH-mm-ss");
            String time= format.format(new Date(System.currentTimeMillis()));
            String zipPath = newFilePath.substring(0, newFilePath.lastIndexOf(".")) +"_"+time+ ".zip";

            Zip4JUtils.zip(newFilePath, zipPath, false, "NoBug");
            uploadFile.delete();
            return null;
        }

    }.execute();
}
3.定期删除:
    拍照识别后的图片通过zip打包存在手机文件夹对应的目录下的文件进行异步定期删除,
/**
 * 定期删除图片
 */
private void deletezip(){
    String fileall= FileUtils.saveMaxImgFile();
    File  waybillfile=new File(fileall);
    File[] files = waybillfile.listFiles();// 读取
    getFileName(files);
}
/***
 * 定时删除文件大图
 * 设置三天删除一次
 * @param files
 */
private  void getFileName(File[] files) {
    if (files != null) {// 先判断目录是否为空,否则会报空指针
        for (File file : files) {
            if (file.isDirectory()) {
                getFileName(file.listFiles());
            } else {
                String fileName = file.getName();
                if (fileName.endsWith(".zip")) {
                    try {
                        SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd-HH-mm-ss");
                        String s =fileName.substring(fileName.lastIndexOf("_")+1,fileName.lastIndexOf(".")).toString().trim();
                        Date date1 = format.parse(s);
                        String dateString = format.format(new Date(System.currentTimeMillis()));
                        Date date2 = format.parse(dateString);
                        String ph= FileUtils.saveMaxImgFile()+File.separator+file.getName();
                        File fe = new File(ph);
                        if (getBetweenDay(date1, date2) >=2) {
                            fe.delete();
                        }
                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }// 当前时间
                }
            }
        }
    }
}
/**
 * 计算两个日期相差多少天
 * @param date1
 * @param date2
 * zhongshuiping
 * @return
 */
public static int getBetweenDay(Date date1, Date date2) {
    Calendar d1 = new GregorianCalendar();
    d1.setTime(date1);
    Calendar d2 = new GregorianCalendar();
    d2.setTime(date2);
    int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
    System.out.println("days=" + days);
    int y2 = d2.get(Calendar.YEAR);
    if (d1.get(Calendar.YEAR) != y2) {
        do {
            days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);
            d1.add(Calendar.YEAR, 1);
        } while (d1.get(Calendar.YEAR) != y2);
    }
    return days;
}


4.删除jpg图片:
    通过循环查找文件夹删除jpg图片

/***
 * 删除jpg图片
 * @param
 */
private  void deleteJpgPic() {
    new AsyncTask<Void, Void, Void>() {
        @Override
        protected Void doInBackground(Void... p) {
            String filealljpg=FileUtils.saveMaxImgFile();
            File jpgfile=new File(filealljpg);
            File[] filesjpg = jpgfile.listFiles();// 读取
            if (filesjpg != null) {// 先判断目录是否为空,否则会报空指针
                for (File file : filesjpg) {
                    if (file.isDirectory()) {
                        getFileName(file.listFiles());
                    } else {
                        String fileName = file.getName();
                        if (fileName.endsWith(".jpg")) {
                            file.delete();
                        }
                    }
                }
            }
            return null;
        }
    }.execute();
}


5 base64解密:
      由于身份证涉及到个人信息安全问题,所以这里我默认是base64加密数据,如果需要展示在界面上点击base64解密按钮对数据进行解密.
Google提供的解密依赖库:
compile 'net.iharder:base64:2.3.9'

/****
 * base64解密
 */
base64decrypt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        try {
            if(path!=null){
                newoneimag =Base64.decode(newimag);
                map= ImageTools.byteToBitmap(newoneimag);
                photo_previews.setImageBitmap(map);
            }else{
                Toast.makeText(MainActivity.this,"图片为空",Toast.LENGTH_LONG).show();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});

简单界面展示如下:





以上是android身份证识别的部分代码,具体详细代码如
下:

  http://download.youkuaiyun.com/download/androidzsp/10024824(身份证识别demo)
 
http://download.youkuaiyun.com/download/androidzsp/10024882(自定义相机demo)

 
Android安卓身份证识别SDK 一、Android安卓身份证识别SDK应用背景 这些年,随着互联网金融的极速发展,第三方支付、理财、P2P网贷、征信等APP应用成爆发式的增长,在众多APP中都涉及到对身份证信息的录入,如第三方支付、理财APP,手机实名制等;如果手动输入身份证信息,速度慢,易出错,用户体验非常差。为了提高在移动终端上输入身份证信息的速度和准确性,文通科技推出Android安卓身份证识别SDK,以满足各个行业对身 阅读详情

相关推荐

OCR应用场景

OCR(OpticalCharacterRecognition),是一种通过对文本的图像文件通过一系列分解处理,获取文字及版面信息的过程。具体到场景,就是通过扫描,将你你手中的名片、身份证件、驾驶证,银行卡等自动识别录入电脑或手机等终端,省去了手动输入的过程。 消费市场向移动端转移,未来超过60%的数据将来源于手机、平板等智能移动终端。智能机摄像头已经成为数据采集最主要的入口,更多的非结构化数据需要转化为前后台可检索的数据,这个转化的过程就需要OCR技术大显身手。 目前市场上,移动终端常见的OCR识别产

ZsHua_18519103264的博客 1384

Android:身份证识别功能实现

Android身份证识别功能实现

a526001650a的专栏 2967

Android拍照识别身份证SDK

Android拍照识别身份证SDK   一、Android拍照识别身份证应用背景   这些年,随着互联网金融的极速发展,第三方支付、理财、P2P网贷、征信等APP应用成爆发式的增长,在众多APP中都涉及到对身份证信息的录入,如第三方支付、理财APP,手机实名制等;如果手动输入身份证信息,速度慢,易出错,用户体验非常差。为了提高在移动终端上输入身份证信息的速度和准确性,文通科技推出Android

jinweiyirna的专栏 4841

身份证识别系统(安卓)

前言本课题为基于Android平台的身份证识别应用程序开发。其目的是掌握Android开发技术和调用图像处理接口,实现一个功能完善、界面友好、操作简便的身份证识别应用程序。在整个项目的设计中要实现的任务有:调用阿里云OCR接口完成识别、调用相机、获取内部存储图片、数据提取、数据库操作、识别相关界面编写、我的页面编写、首页页面编写以及界面优化等。本项目最终实现了如下主要功能:拍照识别身份证信息、从相册选择照片识别身份证信息、显示身份证信息及头像、保存识别结果、查询识别结果等。

onlywishes的博客 4675

Android身份证扫描拍照识别SDK

Android身份证扫描拍照识别SDK   移动互联网是大趋势?   随着智能手机的硬件不断优化,移动互联网及应用大范围普及,互联网+各行各业,跨界、融合、创新,市场瞬息万变,有野心的企业和人、技术都在拼命的赶这趟快车,希望能在这个似乎“一切皆有可能”的互联网黄金时代分一杯羹。   出于对业务模式创新,以及用户体验优化的追求,以前很多依托特定仪器才能实现的技术和操作开始适配到移动端,催生了更

jinweiyirna的专栏 6149

告诉大家身份证OCR识别的最新技术

身份证识别SDK     在快速发展的移动互联网时代,手机app进入了我们的生活,越来越多的公司都推出了自己的移动手机app,这些手机app多数都涉及到个人身份证信息的输入认证(即实名认证),手动去输入身份证号码和姓名,速度非常慢,且用户体验非常差。为了提高在移动终端上输入身份证信息的速度和准确性,开发出身份证识别SDK,以满足各行业应用需求,给用户带来更好的体验。只需将身份证识别SDK集成到手

OCR_recognition的博客 7507

Android 手把手教你实现百度身份证识别

一、集成身份证识别第一步首先要在有自己的AppID 和签名的前提下进行去官网 下载文字识别的SDK : 地址:https://ai.baidu.com/sdk#ocr 二、 权限 (如果清单有权限就不用添加小心demo崩溃) <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CAMERA"

Suzhaoda的博客 3361

Android-身份证正反面识别身份证扫描识别离线无需联网极速秒扫

身份证正反面识别,身份证扫描识别,二代身份证OCR识别,OCR极速识别身份证所有信息正反面均可。离线无需联网,极速秒扫。

Android | 教你如何在安卓上实现二代身份证识别,一键实名认证

目录前言场景开发前准备android studio 安装在项目级gradle里添加华为maven仓在应用级的build.gradle里面加上SDK依赖在AndroidManifest.xml文件里面增量添加模型自动下载在AndroidManifest.xml文件里面申请相机、访问网络和存储权限代码开发关键步骤创建识别结果回调函数设置识别参数实现身份识别Demo效果 前言   就在近期华为HMS M...

华为开发者联盟 9784

Android自定义相机——身份证扫描界面

Android自定义相机 身份证扫描界面 支持android6.0 8.0拍照适配

android原生离线身份证识别Demo(无需网络、无识别次数限制)

Android源码离线身份证识别(无需网络、无识别次数限制)包内含安装包可安装到手机查看效果亲测可用。

手机扫描身份证ocr识别技术

一、手机扫描身份证自动识别的技术应用背景这些年,随着移动互联网的的发展,越来越多的企业都推出了自己的移动APP,这些APP多数都涉及到个人身份证信息的输入认证(即实名认证),如果手动去输入身份证号码和姓名,速度非常慢,且用户体验非常差。为了提高在移动终端上输入身份证信息的速度和准确性,我们开发出手机扫描身份证自动识别的技术SDK,以满足各行业应用需求,给用户带来更好的体验。只需将手机扫描身份证自动...

ZsHua_18519103264的博客 898

用Cloudflare Worker搭建你的私人Gemini Pro API

文章介绍如何通过开源项目gemini-cli-openai将谷歌Gemini模型转换为兼容OpenAI API的服务,解决Gemini CLI的三大使用障碍:网络访问、命令行操作和生态整合问题。部署流程主要包括获取Google OAuth2凭证、配置Cloudflare Worker项目并设置KV存储,最终可在CherryStudio等图形客户端中调用Gemini。该方法利用Cloudflare全球网络实现加速访问,同时保持认证信息安全可控。

Hsiao的二进制生活 1684

基于腾讯优图实现二代身份证识别

----------------- 2018.4.16 更新 -----------------附上github地址: https://github.com/Liiking/MagicImage (博主以后代码都放github,感谢支持)。本文为Android版demo。----------------- 以下为原文内容 -----------------需求:实名认证需要录入身份证信息,为简化用...

愈知愈无知 5196

Node-Red系列教程——NodeRed通过OPC UA读取数据并写入mysql

NodeRed通opcua读取西门子数据并存入mysql

鲸鱼姐的专栏 1万+

Modbus TCP 通信(C#)

【代码】Modbus TCP 通信(C#)

weixin_56229359的博客 1150

一种拍照识别身份证件的ocr技术

一、一种拍身份证自动识别文字的技术应用背景这些年,随着移动互联网的的发展,越来越多的企业都推出了自己的移动APP,这些APP多数都涉及到个人身份证信息的输入认证(即实名认证),如果手动去输入身份证号码和姓名,速度非常慢,且用户体验非常差。为了提高在移动终端上输入身份证信息的速度和准确性,我们开发出一种拍身份证自动识别文字的技术SDK,以满足各行业应用需求,给用户带来更好的体验。只需将一种拍身份证自...

ZsHua_18519103264的博客 557

智驾芯片&软件分层&测试

智能驾驶相关的芯片,软件分层,测试相关内容

天赐好车的博客 436

Android实现身份证识别

Android实现身份证识别(印刷文字识别-身份证识别-阿里云) 在做实名认证的时候客户要求要自动识别身份证上的个人信息,我们使用的是阿里云的OCR印刷文字识别-身份证识别 阿里云的文档写的还是很清楚的,按照文档一步步来就可以了 1、调用地址:https://dm-51.data.aliyun.com/rest/160601/ocr/ocr_idcard.json 2、请求方式:POST 3、请求参数:{ "image": "图片二进制数据的base64编码/图片url", "configure"

qq_41771258的博客 1478

开心消消乐

1)当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]

面试高手的博客 2729

【MicroPython编程-ESP32篇:设备驱动】-BNO08X系列传感器驱动

BNO08X 系列(BNO085/BNO086)是一款系统级封装 (SiP),集成了三轴加速度计、三轴陀螺仪、磁力计以及运行 CEVA SH-2 固件的 32 位 ARM® Cortex™-M0+ 微控制器。SH-2 包含 MotionEngine™ 软件,该软件提供复杂的信号处理算法来处理传感器数据,并提供精确的实时 3D 姿态、航向、校准加速度和校准角速度,以及更高级的上下文输出。BNO08X 集成在一个 28 引脚 LGA 封装中,尺寸为 3.8mm x 5.2mm x 1.1mm。它兼容 Andro

视觉与物联智能 695

Android Studio+OpenCV 识别身份证号码---识别身份证号码

上一章使用CLion+OpenCV对身份证号码进行了检测,经过检测我们能拿到身份证号码区域的照片,现在我们对上一章拿到的图片中的数字进行识别 上一章链接:CLion+OpenCV 识别身份证号码---检测身份证号码_xxwbwm的博客-优快云博客 环境: Android Studio+OpenCV 下载openCV android 版本 拷贝图中文件到android 项目 库文件:libopencv_java3.so 头文件:opencv 和opencv2整个文件夹 新建androi.

xxwbwm的博客 959

深度学习图神经网络 (GNN) —— 处理图结构数据(六十九)

本文系统介绍了图神经网络(GNN)的核心概念、主流模型及其应用。主要内容包括: GNN基础:阐述了图结构数据的特性(节点数不定、连接不规则),以及GNN相比CNN/RNN的优势在于处理非欧式空间的图数据。 核心机制:重点讲解了消息传递框架(MPNN),通过聚合邻居信息迭代更新节点表示,并分析了GCN的归一化邻接矩阵计算和GAT的注意力权重机制。 典型模型: GCN:基于归一化邻接矩阵的特征传播 GAT:引入注意力机制区分邻居重要性 GraphSAGE:通过采样解决大图扩展性问题 GIN:理论表达能力最强的图

hello.reader 300

离线SDK的台湾身份证ocr技术

关键词:安卓ios台湾身份证识别ocr,安卓ios台湾身份证识别ocr,安卓ios台湾身份证识别ocrSDK,身份证拍照识别,android安卓ios台湾身份证识别ocr,安卓ios台湾身份证识别ocr 一、台湾身份证识别应用背景 这些年,随着移动互联网的的发展,越来越多的企业都推出了...

chenlianjun112233的博客 586

C#串口通信从入门到精通(1)——硬件接线

RS-232接口一般都是9针的,有公母头(针头和孔头),为了便有理解以下都称为针头和孔头,针头就是露出来的针,孔头就是9个孔,总共使用3条线进行通信,一条用于发送,一条用于接收,另外一根是GND地线,由于线路的功能是永久性的,设置连接时,必须确保一个节点的发送线与另一个节点的接收线相连,反之亦然,RxD(PC的接收线)连接到TxD(传感器电子设备的发送线),TxD(PC的发送线)连接到RxD(传感器电子设备的发送线)。两条线路的电平都是相对于GND的。因此,GND也必须连接,但不能将GND与屏蔽连接。

qq_34059233的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

基于Android平台的身份证识别技术

基于Android平台的身份证识别技术最近公司提出了一个要求通过摄像头扫描身份证实现读取身份证号码的需求,看了一下网上的SDK大多都是收费的,也看了好几篇博客决定使用tess-two来做 1.去下载tess-two库文件 个人不会C++有会的可以自己下载源文件编译,我是使用的是已经编译好的aar compile 'com.rmtheis:tess-two:7.0.0' 2.获取摄

u013283923的博客 3775

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: android自定义相机拍照
下一篇: android studio无线调试
Clarence_zsp
博客等级 码龄11年 12粉丝 19原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值