baidu-aip-SDK node.js 身份证识别
最近项目中客户需要实现身份证识别功能,合理计划了之后决定使用百度ai的身份证识别。
身份证识别是文字识别的一种,类似的功能有很多比如驾驶证识别等等,原理都是相同的。
对于前端初学者来说,如果要实现这种功能靠页面,js是实现不了的,可以确定地说就是让后台配合实现。实现过程是上传一张图片给后台,后台使用java,php等服务端语言来调取百度ai的sdk,获取到的参数再返回到前台页面来展示。这个接口的调用必须是服务端的,前端如果想实现,只能通过node.js来实现。
那么下面就具体说明一下整个流程:
1.node
首先需要对node进行下载安装,node的安装教程在官网或者菜鸟教程中有明确的实例。
安装之后,在cmd命令行中输入 node -v,如果返回版本号,证明安装成功。
同样在命令行中输入 npm -v,可以查看cmd版本,现在node集成cmd,如果照着教程来安装,node成功npm应该是成功的。
2.项目搭建
先找到项目根目录或者新建一个文件夹作为根目录
安装百度的组件有两种方式,一种是通过去百度ai下载baidu-aip-SDK,另一种是通过命令行直接安装baidu-aip-SDK的包,这里一切从简,通过命令行安装:
在该目录下运行cmd命令行,如果对命令行操作不是太好的童鞋,可以在当前文件夹 Shift+右键 右键菜单中就会增加在此处打开命令窗口的选项
输入 npm install baidu-aip-sdk
等候安装完成之后目录中会新增这样的一个文件夹和一个.json格式文件
可以打开node_modules文件夹中,确认是否有baidu-aip-sdk文件夹
这样的话,功能就算是搭建好了。
3.功能代码
新建一个js文件在根目录下,如图
这个js就是图像识别的node客户端,用来提供一系列交互方法的地方。
在js中加入如下代码:
var AipOcrClient = require("baidu-aip-sdk").ocr; // 设置APPID/AK/SK
var APP_ID = "你的 App ID";
var API_KEY = "你的 Api Key";
var SECRET_KEY = "你的 Secret Key"; // 新建一个对象,建议只保存一个对象调用服务接口
var client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);
这里的APP ID / Api Key / Secret Key 需要在百度云管理中心去申请 https://cloud.baidu.com/
之后在这个js中继续添加功能代码,我们现在在做的是身份证识别,那么就去将身份证识别的相关代码拷入js中。
var fs = require('fs'); var image = fs.readFileSync("你的身份证路径").toString("base64");
var idCardSide = "front"; // 调用身份证识别
client.idcard(image, idCardSide).then(function(result) {
console.log(JSON.stringify(result));
}).catch(function(err) {
// 如果发生网络错误
console.log(err);
});
将你需要识别的身份证图片放到根目录中,如图
将js中的身份证路径改成图片路径 ,例如
var image = fs.readFileSync("./png1.png").toString("base64");
4.调用
在根目录打开命令行,输入 node start.js
稍等个几秒钟,在命令行中就会返回身份证图片中的各项参数。
好啦,这里只是提供了node调用百度ai,身份证识别的一种思路,在项目实现过程中,如果整个项目并没有使用到node,就交给后端人员实现这个功能,就算用了node,推荐也让后台人员实现...毕竟前端大佬们的时间可是很宝贵的。
百度ai 的功能很强大,基本涵盖了现在市面上所有需求的技术,身份证识别甚至文字识别只是其中一丢丢的小部分,识别功能的原理都是相同的,在熟悉node的前提下,多看看api sdk文档,都能写出来。
以上纯属个人见解与经验,不喜勿喷,谢谢!
最新文章
- “init terminating in do_boot” Windows10 Rabbit MQ fails to start
- 【POJ 2485】Highways(Prim最小生成树)
- Android(java)学习笔记266:Android线程形态之 IntentService
- Java [leetcode 19]Remove Nth Node From End of List
- 【转】Android自定义View的实现方法,带你一步步深入了解View(四)
- 理解iPhone高清分辨率的问题
- CAD2014启动出现loadlibrary failed with error 87
- 带’*’号字符串的匹配
- last reboot
- 解决yum升级的问题“There was a problem importing one of the Python modules”
- SPField的GetValidatedString方法没有被调用
- 团队作业8——第二次项目冲刺(Beta阶段)--第四天
- 一文带你认识Spring事务
- 织梦dedecms安全设置详情
- MySQL最优配置模板( 5.6&;5.7转)
- Racadm设置idrac
- nc(netcat)扫描开放端口
- struts和hibernate整合
- mysql 插多行数据
- a标签href=";javascript:;";
热门文章
- vue_cli下开发一个简单的模块权限系统之实现登录
- P2568 GCD
- loj#6229. 这是一道简单的数学题 (??反演+杜教筛)
- 【BZOJ2438】[中山市选]杀人游戏 Tarjan+概率
- [转载]C#实现获取浏览器信息
- php 在 匿名函数中 调用自身。。
- Hdu 5862 Counting Intersections(有n条线段,每一条线段都是平行于x轴或者y轴,问有多少个交点+树状数组区间求和单点跟新)
- Linux多线程及线程同步简单实例
- 配置sudo访问
- Yiic执行php脚本