• 首先介绍一下主要实现识别身份证图片,获取到身份证图片的信息。官方给的文档很简单,但是我折腾了很久,所以来总结一下,希望对大家有帮助。
  • 这是官方给的接口

官方地址:https://www.jisuapi.com/api/idcardrecognition/

我用的是文档给的示例代码,但是有改动的地方,一定要注意,这个文档并没有介绍。

这个是官方封装的公共方法,请求时候会用到。(如果你能行,也可以自己封装。但是我为了方便就直接用它的了。)

public static function curlOpen($url, $config = array()){$arr = array('post' => false,'referer' => $url,'cookie' => '','useragent' => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; customie8)','timeout' => 20, 'return' => true, 'proxy' => '', 'userpwd' => '', 'nobody' => false,'header'=>array(),'gzip'=>true,'ssl'=>false,'isupfile'=>false);$arr = array_merge($arr, $config);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, $arr['return']);curl_setopt($ch, CURLOPT_NOBODY, $arr['nobody']);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_USERAGENT, $arr['useragent']);curl_setopt($ch, CURLOPT_REFERER, $arr['referer']);curl_setopt($ch, CURLOPT_TIMEOUT, $arr['timeout']);//curl_setopt($ch, CURLOPT_HEADER, true);//获取headerif($arr['gzip']) curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');if($arr['ssl']){curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);}if(!empty($arr['cookie'])){curl_setopt($ch, CURLOPT_COOKIEJAR, $arr['cookie']);curl_setopt($ch, CURLOPT_COOKIEFILE, $arr['cookie']);}if(!empty($arr['proxy'])){//curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);curl_setopt ($ch, CURLOPT_PROXY, $arr['proxy']);if(!empty($arr['userpwd'])){curl_setopt($ch,CURLOPT_PROXYUSERPWD,$arr['userpwd']);}}//ip比较特殊,用键值表示if(!empty($arr['header']['ip'])){array_push($arr['header'],'X-FORWARDED-FOR:'.$arr['header']['ip'],'CLIENT-IP:'.$arr['header']['ip']);unset($arr['header']['ip']);}$arr['header'] = array_filter($arr['header']);if(!empty($arr['header'])){curl_setopt($ch, CURLOPT_HTTPHEADER, $arr['header']);}if ($arr['post'] != false){curl_setopt($ch, CURLOPT_POST, true);if(is_array($arr['post']) && $arr['isupfile'] === false){$post = http_build_query($arr['post']);}else{$post = $arr['post'];}curl_setopt($ch, CURLOPT_POSTFIELDS, $post);}$result = curl_exec($ch);//var_dump(curl_getinfo($ch));curl_close($ch);return $result;}

接下来就是封装身份证识别的方法了,(仔细阅读注释,希望对你有帮助)

public static function shiming2($typeid,$pic){  //$typeid=2身份证正面 3身份证反面 //$pic ,我用的是base64,不过前端传过来的如果‘,’逗号前有data:这些值要去掉,只保留‘/’以及‘/’以后的数据。$appkey = '********';//你的appkey$pic=substr($pic,strpos($pic,',')+1); //base64做处理$url = "https://api.jisuapi.com/idcardrecognition/recognize?appkey=$appkey";$post = array(//'pic'=>curl_file_create('C:\Users\Public\Pictures\Sample Pictures\7777.jpg'), //'@'.realpath('11.jpg') 'pic'=>$pic, //如果用base64,就不用curl_file_create()方法。'typeid'=>$typeid);$result = self::curlOpen($url, array('post'=>$post,'ssl'=>true));//base64也不用isupfile参数。记得加上ssl参数,这个文档没有提示。
//$result = self::curlOpen($url, array('post'=>$post,'ssl'=>true,'isupfile'=>true));//次行用作pic为本地地址时候使用。注意与base64的请求时参数的区别$jsonarr = json_decode($result, true);if($jsonarr['status'] != 0){return ['code'=>1,'msg'=>$jsonarr['msg']];}$result = $jsonarr['result'];
//以下是我个人做的逻辑处理,你们要根据自己需求自己编写。$data['code']=2;$data['name']='';$data['number']='';if($typeid==2){if(!empty($result['name'])&&!empty($result['number'])){$data['name']=$result['name'];$data['number']=$result['number'];return $data;}else{return ['code'=>1,'msg'=>'身份证识别错误'];}}elseif($typeid==3){if(!empty($result['enddate'])){return $data;}else{//return $data;//不识别身份证背面背面return ['code'=>1,'msg'=>'身份证识别错误'];}}else{return ['code'=>1,'msg'=>'参数错误'];}}

返回的数据打印$jsonarr,正面

array(3) {["status"]=>int(0)["msg"]=>string(2) "ok"["result"]=>array(7) {["address"]=>string(42) "广东省新丰县丰城镇涧下村一组"["birth"]=>string(10) "1988-07-23"["name"]=>string(9) "罗淑誉"["number"]=>string(18) "440233198807233523"["sex"]=>string(3) "女"["nation"]=>string(3) "汉"["retain"]=>string(0) ""}
}

反面:如果传入不是身份证背面的图片,识别出来ok的,只是没有获取到参数。(我想身份证正面也是一样的),所以后续判断参数status不建议作为成功的标准。所以严谨判断返回参数。

  • 我误入的坑,关于$pic
  • 开始$pic我传入的是地址,包括(网络地址,本地缓存地址)我传的地址链接都是可以访问到图片的,我以为这样就可以了。结果null;
  • 问了客服他说是我电脑本地的地址(可能是我比较菜,我从没有接触过传递电脑本地地址的参数),然后就手动填入电脑本地图片的地址结果还是null,
  • 后来她说 
     self::curlOpen($url, array('post'=>$post,'isupfile'=>true));

    这里要加'ssl'=>true,

  •  self::curlOpen($url, array('post'=>$post,'ssl'=>true,'isupfile'=>true));

    结果OK。

  • 后来我改用base64传参,像这样:

结果 null

我猜这肯定是要该什么参数了。

1. 将‘,’逗号前面的数据去掉

2.$pic不用curl_file_creat()方法

'pic'=>$pic, //如果用base64,就不用curl_file_create()方法。

3.参数去掉'isupfile'=>true

$result = self::curlOpen($url, array('post'=>$post,'ssl'=>true));

结果OK

如果在对接中还有什么问题,可以加他们的技术群852057961

身份证识别(极速数据接口对接)相关推荐

  1. 极速数据接口之快递接口

    偷得浮生半日闲,清茶一杯,博文一篇. 今天买了一个接口,有点小激动,用python测试了下,不错很稳定. 链接如下:https://www.jisuapi.com 申请和购买之后就可以根据自己的app ...

  2. logo商标识别 API数据接口

    logo商标识别 计费模式 免费额度 点数单价 每日限制 会员与按量计费 5次 10 点/次 10000次 购买次数包 更新时间:2022-08-16 16:49:04接口状态:正常 根据图片地址,返 ...

  3. 对话情绪识别 API数据接口

    对话情绪识别 计费模式 免费额度 点数单价 每日限制 会员与按量计费 5次 5 点/次 10000次 更新时间:2022-08-16 17:38:32接口状态:正常 根据一段文本,返回情绪识别结果 请 ...

  4. 驾驶证识别 API数据接口

    驾驶证识别 计费模式 免费额度 点数单价 每日限制 会员与按量计费 5次 50 点/次 10000次 购买次数包 更新时间:2022-08-15 07:26:10接口状态:正常 根据图片地址,返回识别 ...

  5. 调用阿里云身份证识别OCR

    这个是需要收费的第三方身份证识别OCR的接口 这个是官方给出的案例和文档 https://market.aliyun.com/products/57124001/cmapi028587.htmlspm ...

  6. 身份证识别在移动端和服务器端的应用与特点

    身份证识别可以集成在APP中,也可以集成在服务器中,利用移动端摄像头拍摄或扫描证件并识别信息.完成信息录入. 而在服务器端身份证识别主要是两方面的应用:私有云端的身份证识别与公有云端的身份证识别. 一 ...

  7. Android同屏或摄像头RTMP推送常用的数据接口设计探讨

    前言 好多开发者在调用Android平台RTMP推送或轻量级RTSP服务接口时,采集到的video数据类型多样化,如420sp.I420.yv12.nv21.rgb的,还有的拿到的图像是倒置的,如果开 ...

  8. 金蝶osf接口开发_解决SaaS间的数据孤岛,实现SaaS数据接口集成互通互联

    随着海内外新冠肺炎疫情的蔓延,越来越多的巨头公司业务也受到不同程度的影响,众多知名的科技企业也发出"线上办公.取消出差.轮流上班"的政策,企业数字化.线上化转型需求的加剧,越来越多 ...

  9. Android使用阿里云接口实现身份证识别功能

    前言 现如今,许多app需要智能识别用户提供的身份证图片上的信息来完成一些工作,阿里云刚好提供了这个接口,下面我们实现一个小的demo来和大家学习一下. 效果图: 随便在网上找了两张身份证图片,识别并 ...

最新文章

  1. 启用ISA Server的缓存
  2. 循环嵌套小星星-嵌套循环完成案例
  3. Keepalived+Nginx实现高可用负载均衡集群
  4. 上汽乘用车-大数据岗位面试(失败经历)
  5. 「第二篇」全国一等奖,经验帖。
  6. 为什么年龄大了近视还增加_年龄明明一样大,为什么有人长得年轻,有人显老呢?...
  7. 宝塔面板不能备份数据库,数据库备份大小20K,数据库备份报错mysqldump: Got error: 1045: Access denied for user 'root'@'localhost'
  8. 2020年 福建物联网产值或达千亿
  9. QQ牧场接口协议分析
  10. MySQL数据分析-(14)表补充:字符集
  11. 元宇宙时代的5大风险
  12. docker镜像(第二天)
  13. dotween damage text 飘血伤害数字
  14. Matplotlib中画图,使用带有边框的条线
  15. postman + node-red 发送e-mail(附件、抄送、密送)
  16. SEM测试线扫与面扫
  17. 华为云虚拟服务器,云服务器是虚拟主机
  18. Windows 10最新原版镜像(Version 21H1)
  19. [Watermelon_book] Chapter 3 Linear Model
  20. JAVA 拾遗 --Future 模式与 Promise 模式

热门文章

  1. 基于SSM的网红书购物商城(源码+论文+开题报告+答辩PPT)
  2. Navicat如何把数据库导入(超详细图解)
  3. android nfc框架分析,Android NFC架构分析
  4. 编程之类的文案_有什么让人瞬间充满希望的文案?
  5. 关于Github登录 token 失效(重新设置)
  6. 正则验证——常用的正则表达式
  7. 浪潮服务器性能测试,内存、IO子系统性能测试_浪潮服务器_服务器评测与技术-中关村在线...
  8. 钟汉良日记:知识付费副业又收300
  9. Markdown在表格中加入竖线的方法
  10. 基于QT的客户管理系统CRM