首先到百度搜索图片识别,orc技术,进入官网平台,通过百度账号,获取orc资质和应用使用的key

在来下载jxl.jar插件来操作excel。

效果图

            

拍摄                                                 获取信息,

最后点击插入表格后进行插入操作,

前提:本工程需要用到百度原生附属工程,不会的可以查看orc_ui包的使用说明

1.初始化key:百度有相关介绍这里不做解释。按百度的文档来解决问题

/*** 用明文ak,sk初始化*/private void initAccessTokenWithAkSk() {OCR.getInstance(this).initAccessTokenWithAkSk(new OnResultListener<AccessToken>() {@Overridepublic void onResult(AccessToken result) {String token = result.getAccessToken();LT.lg("token = " + token);hasGotToken = true;}@Overridepublic void onError(OCRError error) {error.printStackTrace();alertText("AK,SK方式获取token失败", error.getMessage());}}, getApplicationContext(), "key1","key2");}

2.调取摄像头(需要用到摄像头的功能):

//在监听中 ,启动用带返回activity模式
findViewById(R.id.gallery_button_front).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (checkGalleryPermission()) {Intent intent = new Intent(Intent.ACTION_PICK);intent.setType("image/*");startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE_FRONT);}}});//在返回中处理数据@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE_PICK_IMAGE_FRONT && resultCode == Activity.RESULT_OK) {Uri uri = data.getData();picPath = getRealPathFromURI(uri);recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, picPath);}if (requestCode == REQUEST_CODE_PICK_IMAGE_BACK && resultCode == Activity.RESULT_OK) {Uri uri = data.getData();picPath = getRealPathFromURI(uri);recIDCard(IDCardParams.ID_CARD_SIDE_BACK, picPath);}if (requestCode == REQUEST_CODE_CAMERA && resultCode == Activity.RESULT_OK) {if (data != null) {String contentType = data.getStringExtra(CameraActivity.KEY_CONTENT_TYPE);String filePath = FileUtil.getSaveFile(getApplicationContext()).getAbsolutePath();if (!TextUtils.isEmpty(contentType)) {if (CameraActivity.CONTENT_TYPE_ID_CARD_FRONT.equals(contentType)) {recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, filePath);} else if (CameraActivity.CONTENT_TYPE_ID_CARD_BACK.equals(contentType)) {recIDCard(IDCardParams.ID_CARD_SIDE_BACK, filePath);}}}}}
//处理数据的方法
private void recIDCard(String idCardSide, final String filePath) {IDCardParams param = new IDCardParams();param.setImageFile(new File(filePath));// 设置身份证正反面param.setIdCardSide(idCardSide);// 设置方向检测param.setDetectDirection(true);// 设置图像参数压缩质量0-100, 越大图像质量越好但是请求时间越长。 不设置则默认值为20param.setImageQuality(20);OCR.getInstance(this).recognizeIDCard(param, new OnResultListener<IDCardResult>() {@Overridepublic void onResult(IDCardResult result) {if (result != null) {//TODO 这里返回结果开始处理//1.解析后,ParseJson pj = new ParseJson();LT.lg("filePath = " + filePath);LT.lg(result.toString());json = pj.parse(ParseJson.ID_CARD_FRONT, result.toString());//转换成需要的字段datas = pj.parseIdMessage(json);//2.显示到界面中for (int i = 0; i < llId.getChildCount(); i++) {TextView v = (TextView) llId.getChildAt(i);v.setText(datas[i]);}//显示图片在界面上Bitmap bm = BitmapFactory.decodeFile(filePath);ivIdPic.setImageBitmap(bm);//将图片文件复制到对应目录中FileUtil.copyFile(filePath, Consts.getPicCatalog(null));}}@Overridepublic void onError(OCRError error) {alertText("返回错误", ParseJson.ID_CARD_FRONT, error.getMessage(), null);}});}
//确保读取权限的打开
private boolean checkGalleryPermission() {int ret = ActivityCompat.checkSelfPermission(IDCardActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE);if (ret != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(IDCardActivity.this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1000);return false;}return true;}

3.点击插入,开始操作excle

//插入数据到excle的点击监听findViewById(R.id.bt_id_insert).setOnClickListener(new View.OnClickListener() {//TODO 插入数据库操作@Overridepublic void onClick(View v) {try {ExcelUtil eu = new ExcelUtil();if (datas == null||datas.length<1) {LT.toast(IDCardActivity.this, "获取数据失败");} else {String filePath = Consts.getIdCatalog();//获取文件的路径eu.insertIdData(datas, ParseJson.ID_CARD_FRONT, filePath);LT.toast(IDCardActivity.this, "插入成功");Consts.PersonCount=0;//添加新的权利人信息,或者户主的时候,重置人数!h();}} catch (IOException e) {LT.lg("插入失败。IOException : " + e.toString());e.printStackTrace();} catch (WriteException e) {LT.lg("插入失败。IOException : " + e.toString());e.printStackTrace();} catch (BiffException e) {LT.lg("插入失败。IOException : " + e.toString());e.printStackTrace();}}});

4.ExcelUtil excel操作方法

public class ExcelUtil {private WritableWorkbook book;private String tableName = "Sheet1";public ExcelUtil() {}public boolean insertIdData(String[] data, String type, String path) throws IOException, WriteException, BiffException {//将数据插入到File file = new File(path);LT.lg("保存路径:filePath = " + path);if (!file.exists()) {writeIdDataExcel(file, data);} else {updataExcel(path, data);}return true;}
//直接写入private void writeIdDataExcel(File file, String[] ss) throws WriteException, IOException {FileUtil.CreatNewFile(file);WritableWorkbook book = Workbook.createWorkbook(file);WritableSheet sheet = book.createSheet(tableName, 0);//TODO 读取文件中的数据条目数量,设置itemString[] cc = new String[]{"宗地代码", "权利人名称", "权利人类型", "证件种类", "证件号", "通讯地址"};for (int i = 0; i < cc.length; i++) {//字段Label label = new Label(i, 0, cc[i]);sheet.addCell(label);//数据LT.lg(i + "个数据为:" + ss[i]);Label   label2= new Label(i + 1, 1, ss[i]);sheet.addCell(label2);}book.write();book.close();}
/**更新操作* @param path 文件绝对路径* @param cc   写入数据* @throws IOException* @throws WriteException* @throws BiffException*/private void updataExcel(String path, String[] cc) throws IOException, WriteException, BiffException {//在第r行插入一条数据// 在已写入的表中添加内容File file = new File(path);path = file.getAbsolutePath().replace(".xls", "(1).xls");File file2 = new File(path);FileUtil.CreatNewFile(file2);// 打开文件Workbook wb = Workbook.getWorkbook(file);// 打开一个文本的副本,并指定数据写回到源文件WritableWorkbook book = Workbook.createWorkbook(file2, wb);WritableSheet sheet = book.getSheet(0);//默认在excel中的第一张表中!int r = sheet.getRows();//获取已写入的行数// Consts.PersonCount=r+1;//正式写入数据Label label;for (int i = 0; i < cc.length; i++) {label = new Label(i, r, cc[i]);sheet.addCell(label);}System.out.println("执行添加数据成功");book.write();book.close();// 写回数据Workbook wb2 = Workbook.getWorkbook(file2);WritableWorkbook book2 = Workbook.createWorkbook(file, wb2);book2.write();book2.close();//删除副本file2.delete();System.out.println("删除成功");}
}

百度ORC识别身份证,JXL导出信息到excel流水作业。相关推荐

  1. H5和html、mui等前端百度ORC识别身份证、驾驶证接口的api实现方法

    直接上代码: <!doctype html> <html><head><meta charset="UTF-8"><title ...

  2. uni-app之接入百度OCR识别身份证(微信小程序版本)

    本文为uni-app接入百度OCR识别身份证号,话不多说,直接上代码: 1. 第一步注册百度智能云账号,选择文字识别,创建应用,获取Api Key 与 Secret Key(下面要用到): 2.第二步 ...

  3. Python调用百度AI识别身份证

    本文介绍应用百度AI的文字识别功能对身份证进行识别,感兴趣的朋友一起来看看效果吧.    一.安装baidu-aip模块    按win+R打开cmd,在里面输入 pip3 install baidu ...

  4. 机器学习-训练了一个高效快速识别身份证正面关键信息的模型

    我机器学习-训练了一个快速识别身份证正面关键信息的模型 采用正常的cpu识别效率稳定达到100ms左右识别一张 采用python开发,模型小于10M 识别精度高,提出来给大家试用 from os im ...

  5. vue+springboot实现调用本地摄像头拍照上传后端使用百度ocr识别身份证信息

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.前端 二.后端 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一.前端 1.首先进入页面打开摄像头 2.点击手动 ...

  6. 百度api识别身份证信息

    集成微信小程序的时候需要用到自动识别身份证信息填充进去,所以看文档集成百度的卡证识别: 首先百度识别功能很强大: 有上述功能. 识别身份证需要识别的是身份证的图片,所以就要将图片拿到,在百度api的调 ...

  7. 记录在小程序中前端调用百度 Ocr 识别身份证信息

    微信小程序因为业务扩展需要用户身份证信息,这里记录一下在小程序中通过百度ocr识别的一个开发过程记录. 1. 注册百度云账号 首先,我们要去百度云注册个账号,百度云注册 ,已经注册过可以忽略这部.注册 ...

  8. java 百度ocr识别身份证,营业执照流程

    1.打开 百度开放平台登录帐号 2.点击右上角控制台进入后台管理页面 3.左面列表产品服务选择文字识别 4.创建应用 5.获取 API Key 和 Secret Key (下面程序需要用到) 6.收费 ...

  9. uniapp:使用百度API提取身份证信息(微信小程序适用)

    首先,在百度申请apiKey和SecretKey,参考官网. https://ai.baidu.com/ai-doc/OCR/dk3iqnq51 想要提取身份证信息,一共需要完成三个步骤: 1.使用a ...

  10. 身份证识别,银行卡识别,驾驶证识别,行驶证识别,根据百度文字识别 api 封装,能快速识别身份证信息,银行卡信息,驾驶证信息,行驶证信息,使用非常方便

    OCR_identify 项目地址:wenchaosong/OCR_identify  简介:身份证识别,银行卡识别,驾驶证识别,行驶证识别,根据百度文字识别 api 封装,能快速识别身份证信息,银行 ...

最新文章

  1. sklearn下的ROC与AUC原理详解
  2. TypeScript入门-枚举
  3. Qt程式异常崩溃处理技巧(Win)
  4. sklearn自学指南(part40)--使用手册的目录
  5. Docker JFrog Artifactory 7.27.10 maven私服(仓库配置篇)
  6. Linux Ubuntu16.04界面美化
  7. 打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...
  8. SQL Server问题之The remote procedure call failed. [0x800706be]
  9. 关于MySQL的存储函数(自定义函数)的定义和使用方法详解
  10. c+智能指针源码分析_C ++中的智能指针
  11. 一文了解plc编程、电脑编程、手机APP编程、组态编程、云编程(下)
  12. 算法竞赛入门经典(第二版)_1入门
  13. Unity游戏引擎介绍及相关学习资源
  14. python人工智能之:多边形矩阵热图程序实战篇(二)
  15. 字符间距加宽5磅怎么设置_如何设置将word文档的字符间距加宽
  16. 【Vue3.0移动端项目--旅游网】-- 房屋详情页创建以及房屋详情图片展示
  17. 模拟扑克牌的洗牌发牌
  18. 如何更高效地在IT职场中摸爬滚打
  19. 机动车 合格证 二维码 解密
  20. %lld,%d,%hd,%hhd在打印时的“潜规则”

热门文章

  1. 微信小程序 - 获取汉字拼音首字母(汉字英文首字母)
  2. 微软成为雅虎财经2021年年度最佳公司
  3. 系统运行时间校准的重要性
  4. 用html如何设计日历,用CSS设计日历
  5. 【历史上的今天】11 月 28 日:中国顶级域名 CN 被注册;上世纪最大的论坛诞生;首个 Fortran 程序开发者逝世
  6. 盾神与积木游戏 (贪心典例)
  7. 常用网站有哪些,最常用的网站
  8. linux系统编程之进程通信
  9. 浏览器使用flash时出现此Flash Player 与您所在地区不相容的提示解决方法
  10. JS炫彩动画效果的文字特效