首页 后端开发 php教程 php身份证识别ORC的方法实现

php身份证识别ORC的方法实现

Jul 05, 2018 pm 04:20 PM
身份证识别

这篇文章主要介绍了关于php身份证识别ORC的方法实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

先创建一个html,并以json格式传输到php文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>身份证识别</title> 
<style> 
</style> 
<script> 
    window.onload = function(){ 
        var input = document.getElementById("demo_input"); 
        var result= document.getElementById("result"); 
        var img_area = document.getElementById("img_area"); 
        if ( typeof(FileReader) === &#39;undefined&#39; ){
            result.innerHTML = "抱歉,你的浏览器不支持 FileReader,请使用现代浏览器操作!"; 
            input.setAttribute(&#39;disabled&#39;,&#39;disabled&#39;); 
        }else{
            input.addEventListener(&#39;change&#39;,readFile,false);
        } 
    }
    function readFile(){
        var file = this.files[0]; 
        //这里我们判断下类型如果不是图片就返回 去掉就可以上传任意文件   
        if(!/image\/\w+/.test(file.type)){
            alert("请确保文件为图像类型"); 
            return false; 
        }
        var reader = new FileReader(); 
        reader.readAsDataURL(file); 
        console.log();
        reader.onload = function(e){ 
                result.innerHTML = this.result; 
                img_area.innerHTML = &#39;<p class="sitetip">图片img标签展示:</p><img src="&#39;+this.result+&#39;" alt=""/>&#39;; 
        }
    } 
</script> 
</head>


<body> 
    <form action="upload.php" method="post">
    <input type="file" value="sdgsdg" id="demo_input" /> 
    <textarea style=&#39;display: none;&#39; name="img" id="result" rows=30 cols=300></textarea> 
    <p id="img_area"></p> 
    <input type="submit" value="提交">
</form>
</body> 
</html>
登录后复制

再创建个upload.php

<?php
header("Content-Type: text/html; charset=UTF-8");
/**
 * base64图片上传
 * @param $base64_img
 * @return array
 */
$base64_img = trim($_POST[&#39;img&#39;]);
$up_dir = &#39;upload/&#39;;//存放在当前目录的upload文件夹下
$fi_dir = &#39;ok_upload/&#39;;//存放在当前目录的upload文件夹下
if(!file_exists($up_dir)){
    mkdir($up_dir,0777);
}
if(preg_match(&#39;/^(data:\s*image\/(\w+);base64,)/&#39;, $base64_img, $result)){
    $type = $result[2];
    if(in_array($type,array(&#39;pjpeg&#39;,&#39;jpeg&#39;,&#39;jpg&#39;,&#39;gif&#39;,&#39;bmp&#39;,&#39;png&#39;))){
        $new_file = $up_dir.date(&#39;YmdHis_&#39;).&#39;.&#39;.$type;
        if(file_put_contents($new_file, base64_decode(str_replace($result[1], &#39;&#39;, $base64_img)))){
 $img_path = str_replace(&#39;../../..&#39;, &#39;&#39;, $new_file);
$path   = &#39;upload/&#39;;
$data   = file_get_contents($img_path);
$base64 = base64_encode($data);
$appkey = &#39;LzJu1grfwH6UaDX2&#39;;
$params = array(
    &#39;app_id&#39;     => &#39;1106920947&#39;,
                &#39;image&#39;      => $base64,
                &#39;card_type&#39;  => &#39;0&#39;,
                &#39;time_stamp&#39; => strval(time()),
                &#39;nonce_str&#39;  => strval(rand()),
                &#39;sign&#39;       => &#39;&#39;,
);
$params[&#39;sign&#39;] = getReqSign($params, $appkey);
// 执行API调用
$url = &#39;https://api.ai.qq.com/fcgi-bin/ocr/ocr_idcardocr&#39;;//身份证识别OCR
$response = doHttpPost($url, $params);
            echo $response;die;
$arr = json_decode($response,true);
$photo = base64_decode($arr[&#39;data&#39;][&#39;image&#39;]);
if(!file_exists($fi_dir)){
    mkdir($fi_dir,0777);
}
$type = &#39;jpg&#39;;
    if(in_array($type,array(&#39;pjpeg&#39;,&#39;jpeg&#39;,&#39;jpg&#39;,&#39;gif&#39;,&#39;bmp&#39;,&#39;png&#39;))){
        $new_file = $fi_dir.date(&#39;YmdHis_&#39;).&#39;.&#39;.$type;
        if(file_put_contents($new_file, str_replace($result[1], &#39;&#39;, $photo))){
            $img_paths = str_replace(&#39;../../..&#39;, &#39;&#39;, $new_file);
            echo &#39;图片处理成功</br><img src="&#39; .$img_paths. &#39;">&#39;;
        }else{
            echo &#39;图片处理失败</br>&#39;;
        }
    }
        }else{
                    echo &#39;图片上传失败</br>&#39;;
        }
    }else{
        //文件类型错误
    echo &#39;图片上传类型错误&#39;;
    }
}else{
    //文件错误
    echo &#39;文件错误&#39;;
}
登录后复制
// getReqSign :根据 接口请求参数 和 应用密钥 计算 请求签名
// 参数说明
//   - $params:接口请求参数(特别注意:不同的接口,参数对一般不一样,请以具体接口要求为准)
//   - $appkey:应用密钥
// 返回数据
//   - 签名结果
function getReqSign($params /* 关联数组 */, $appkey /* 字符串*/)
{
    // 1. 字典升序排序
    ksort($params);
    // 2. 拼按URL键值对
    $str = &#39;&#39;;
    foreach ($params as $key => $value)
    {
        if ($value !== &#39;&#39;)
        {
            $str .= $key . &#39;=&#39; . urlencode($value) . &#39;&&#39;;
        }
    }
    // 3. 拼接app_key
    $str .= &#39;app_key=&#39; . $appkey;
    // 4. MD5运算+转换大写,得到请求签名
    $sign = strtoupper(md5($str));
    return $sign;
}
登录后复制
// doHttpPost :执行POST请求,并取回响应结果
// 参数说明
//   - $url   :接口请求地址
//   - $params:完整接口请求参数(特别注意:不同的接口,参数对一般不一样,请以具体接口要求为准)
// 返回数据
//   - 返回false表示失败,否则表示API成功返回的HTTP BODY部分
function doHttpPost($url, $params)
{
    $curl = curl_init();


    $response = false;
    do
    {
        // 1. 设置HTTP URL (API地址)
        curl_setopt($curl, CURLOPT_URL, $url);


        // 2. 设置HTTP HEADER (表单POST)
        $head = array(
            &#39;Content-Type: application/x-www-form-urlencoded&#39;
        );
        curl_setopt($curl, CURLOPT_HTTPHEADER, $head);


        // 3. 设置HTTP BODY (URL键值对)
        $body = http_build_query($params);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $body);


        // 4. 调用API,获取响应结果
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_NOBODY, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        $response = curl_exec($curl);
        if ($response === false)
        {
            $response = false;
            break;
        }


        $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        if ($code != 200)
        {
            $response = false;
            break;
        }
    } while (0);


    curl_close($curl);
    return $response;
}
登录后复制

这样就能识别身份证上的信息了

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

php 通过html-table形式完成excel下载的功能实现

PHP的Reflection反射机制的介绍

以上是php身份证识别ORC的方法实现的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Golang对接百度AI接口实现身份证识别功能,快速入门 Golang对接百度AI接口实现身份证识别功能,快速入门 Aug 26, 2023 pm 04:31 PM

Golang对接百度AI接口实现身份证识别功能,快速入门序言随着人工智能的发展,AI接口在各个领域的应用越来越广泛。百度AI开放平台提供了丰富的AI接口,为开发者提供了一种便捷的方式来实现各种功能。本文将介绍如何使用Golang对接百度AI接口,实现身份证识别功能。一、注册百度AI开放平台账号首先,我们需要在百度AI开放平台上注册一个账号并创建一个应用。打开

uniapp应用如何实现身份证识别和证件认证 uniapp应用如何实现身份证识别和证件认证 Oct 20, 2023 am 08:49 AM

UniApp是一种基于Vue.js的跨平台应用开发框架,通过使用UniApp可以快速开发适用于多个平台(包括iOS、Android、H5等)的应用程序。在实际应用中,身份证识别和证件认证是很常见的需求,本文将介绍如何在UniApp应用中实现身份证识别和证件认证,并给出具体的代码示例。一、身份证识别身份证识别是指将用户拍摄的身份证照片中的信息提取出来,通常包括

如何使用uniapp开发身份证识别功能 如何使用uniapp开发身份证识别功能 Jul 04, 2023 am 10:16 AM

如何使用uniapp开发身份证识别功能引言:身份证识别是移动应用领域中一项非常重要的功能,它可以在用户拍摄身份证照片后,自动解析出身份证上的信息。本文将介绍如何使用uniapp开发身份证识别功能,并附上代码示例,帮助开发者快速实现这一功能。一、准备工作:在使用uniapp开发身份证识别功能之前,我们需要完成以下准备工作:身份证识别API:我们可以选择一些第三

如何利用PHP调用摄像头进行身份证识别 如何利用PHP调用摄像头进行身份证识别 Aug 01, 2023 am 11:09 AM

如何利用PHP调用摄像头进行身份证识别随着科技的不断发展,身份证识别已经成为了许多应用领域的常见需求。在过去,我们通常需要手动输入身份证号码等信息,而现在,利用摄像头进行身份证识别已经成为了一种更为便捷和高效的方式。本文将介绍如何利用PHP调用摄像头进行身份证识别,并附上相应的代码示例。首先,我们需要确保我们的系统上安装了PHP。在开始之前,我们还需要安装一

如何使用PHP和阿里云OCR识别长久不更新的身份证信息? 如何使用PHP和阿里云OCR识别长久不更新的身份证信息? Jul 19, 2023 am 09:19 AM

如何使用PHP和阿里云OCR识别长久不更新的身份证信息?引言:随着科技的快速发展和数字化时代的到来,越来越多的人开始关注如何利用技术手段来提高身份证信息的识别效率和准确性。阿里云OCR(OpticalCharacterRecognition)是一种强大的人工智能服务,能够通过图像识别技术将身份证等纸质证件内容转换为数字化文本,大大提高了数据处理的速度和准

数字货币怎么开户 数字货币怎么开户 Apr 10, 2024 am 11:58 AM

1、数字货币开户的第一步是选择一家合适的交易所开户,用户需要考虑交易费用、知名度、安全性等因素,推荐使用Binance、Huobi、OKEx等知名交易所。2、前往交易所官方网站,点击【注册】按钮,填写个人信息(如邮箱地址、用户名和密码)。3、身份验证:大多数交易所提供两种身份验证方式:身份证识别和人脸识别,用户可以按提示来完成身份验证。4、绑定银行卡:建议用户仔细核对相关信息,

Golang对接百度AI接口实现身份证识别功能,轻松上手 Golang对接百度AI接口实现身份证识别功能,轻松上手 Aug 26, 2023 am 09:07 AM

Golang对接百度AI接口实现身份证识别功能,轻松上手随着人工智能的快速发展,越来越多的开发者开始关注和利用AI服务。百度AI开放平台提供了各种功能强大的接口,其中包括了身份证识别功能。本文将介绍如何使用Golang语言对接百度AI接口实现身份证识别功能,并提供相关示例代码。首先,我们需要在百度AI开放平台注册账号并创建一个应用,获得APIKey和Sec

使用Slim框架中间件实现身份证识别和读取信息的功能 使用Slim框架中间件实现身份证识别和读取信息的功能 Jul 31, 2023 pm 02:36 PM

使用Slim框架中间件实现身份证识别和读取信息的功能身份证是中国公民的重要身份证明,它承载着公民的个人信息。在许多应用场景中,需要对用户的身份证进行识别和读取。本文将使用Slim框架的中间件来实现这样一个功能模块。首先,我们需要安装Slim框架。在项目目录下执行以下命令:composerrequireslim/slim接下来,我们创建一个名为IdCard

See all articles