PHP 身份证识别
时间:2021-09-06
本文章向大家介绍PHP 身份证识别,主要包括PHP 身份证识别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
实现步骤:
1. 前端上传一张base64的图片
2. php接收,进行验证
3. 调用百度api进行识别
4. 封装返回数据
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="file" id="file" onchange="imageChange(this)"><br> <img id="img" src="" alt="" style="height: 100px;"> <ul id="datas"></ul> <script src="https://cdn.staticfile.org/jquery/2.0.3/jquery.min.js"></script> <script > function imageChange(obj){ var image = obj.files[0]; //将file 转为base64 var reader = new FileReader(); reader.readAsDataURL(image); reader.onload = function(ev) { var dataURL = ev.target.result; var src = ''; $.post('cacheId.php',{base:dataURL,type:1},function(data){ //ajax请求 $('#img').attr('src',dataURL) var datas = data.words_result; for(v in datas){ src += ' <li><span>'+v+':</span><span>'+datas[v].words+'</span></li>' } $('#datas').append(src) },'json') } } </script> </body> </html>
cacheId.php
<?php $api_key = '你的api_key'; $secret_key = '你的secret_key'; //首先先获取access_token ,因为请求身份证验证接口需要用到 ,请求access_token 有效期是30天 我这里没有保存, 如需要你们可以保存到session中 //获取access_token 返回参数请参考 https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu $access_token = getAccessToken($api_key,$secret_key); //请求身份证识别接口地址 //https://cloud.baidu.com/doc/OCR/s/rk3h7xzck 官网文档 $url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token='.$access_token; //接收到前端传过来的base64图片 官网最大能接口4M 并且后缀为jpg/jpeg/png/bmp格式, 我这里也懒得进行操作了,你们获取base进行验证一下就行 $base = $_POST['base']; //发起请求 $body = ['id_card_side' => "front",'image' => $base]; //$body['detect_photo'] = 'true'; //这个是获取头像的, 有需要请解注释 //请求第三方并以json的格式返回 $res = request_post($url,$body); //返回参数参考地址: https://cloud.baidu.com/doc/OCR/s/rk3h7xzck //错误码请自行判断 //参考地址 https://cloud.baidu.com/doc/OCR/s/dk3h7y5vr exit(json_encode($res)); /** * 创建一个curl请求,用来请求第三方 * @param $url * @param array $data * @return array|bool|float|int|mixed|stdClass|string|null * User: wang * Date: 2021/9/6 18:13 */ function request_post($url , $data=array()){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $output = curl_exec($ch); curl_close($ch); return json_decode($output,true); } /** * 获取AccessToken * @param $api_key * @param $secret_key * @return mixed|string * User: wang * Date: 2021/9/6 18:30 */ function getAccessToken($api_key,$secret_key){ $url = 'https://aip.baidubce.com/oauth/2.0/token'; $post_data['grant_type'] = 'client_credentials'; $post_data['client_id'] = $api_key; $post_data['client_secret'] = $secret_key; $o = ""; foreach ( $post_data as $k => $v ) { $o.= "$k=" . urlencode( $v ). "&" ; } $post_data = substr($o,0,-1); $res = request_post($url, $post_data); if(!isset($res['access_token'])){ exit($res['error']); } return $res['access_token']; }
原文地址:https://www.cnblogs.com/quan846951943/p/15235092.html
- 分页控件和几个相关控件的源代码
- Python编程中的反模式
- Python机器学习库:Scikit-Learn简介
- 很简单的企业管理器---我写程序的方式,几个自定义控件。
- 使命必达: 深入剖析WCF的可靠会话[原理揭秘篇](上)
- 其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码)
- 为Symfony2和Redis正名,基于PHP的10亿请求/周网站打造
- 如何使用Python基线预测进行时间序列预测
- 如何使用统计显着性检验来解释机器学习结果
- 其实添加数据也可以这样简单——表单的第一步抽象(针对数据访问层)《怪怪设计论: 抽象无处不在 》有感
- WCF服务端运行时架构体系详解[上篇]
- 使命必达: 深入剖析WCF的可靠会话[编程篇](下)
- 在网页里让文本框只能输入数字的一种方法。外加回车换Tab
- 如何用Python从零开始实现简单的线性回归
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- PHP Execute Command Bypass Disable_functions
- 聊聊Android编译流程
- Android组件化问题思考
- 最近面试碰到的两道算法题|面试相关
- Thread也会OOM吗?
- RoundCube Webmail邮件正文存储型XSS(CVE-2015-1433)
- 再谈Android Lint
- Android DiffUtil 封装|深拷贝
- [CVE-2014-8959] phpmyadmin任意文件包含漏洞分析
- Android 统计页面渲染时长
- Transform和Task之间有关?| Gradle
- user.ini文件构成的PHP后门
- Android厂商推送Plugin化 | 掘金技术征文-双节特别篇
- 关于lnmp目录禁止执行的绕过与正确方法
- Quill编辑器自定义字体和字体大小