Method implementation of php ID card identification ORC

不言
Release: 2023-04-02 15:14:01
Original
4694 people have browsed it

This article mainly introduces the implementation of the ORC method for php ID card identification. It has a certain reference value. Now I share it with you. Friends in need can refer to it.

Create an html first, and use Transfer the json format to a php file

<!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>
Copy after login

Create an 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;;
}
Copy after login
// 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;
}
Copy after login
// 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;
}
Copy after login

This way you can identify the information on the ID card

The above is the entire article Content, I hope it will be helpful to everyone’s learning. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

php Completes excel download function through html-table form to realize

PHP’s Reflection reflection mechanism Introduction

The above is the detailed content of Method implementation of php ID card identification ORC. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!