php之使用curl对百度orc进行文字识别(二维码识别同理)--base64编码方式(解决image format error)

参考资料:
获取Access Token:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu

百度ocr参考手册:https://cloud.baidu.com/doc/OCR/s/zk3h7xz52

将图片转换base64编码:https://blog.csdn.net/weixin_44797182/article/details/105922765

php之使用file_get_contents对百度orc进行文字识别(二维码识别同理)–base64编码方式(解决image format error) :https://blog.csdn.net/weixin_44797182/article/details/105924635

<?php
header("Content-Type:text/html; charset=utf-8");
// 1,获取Access Token
$url = 'https://aip.baidubce.com/oauth/2.0/token';
$data = array(
    'grant_type' => 'client_credentials',
    'client_id' => '111', //必须参数,应用的API Key;
    'client_secret' => '222' //必须参数,应用的Secret Key;
);
$token_result = json_decode(query_post($url, $data));     // 对返回的json数据进行转换
$token = $token_result->access_token;              //获取Access Token
// echo $token;



// 2,获取图片信息
$requestImgUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' . $token;
$data = array(
    // 必须得是网站上的图片,像本地上的图片进不能使用,这就是为什么要使用base64编码
    // 'url' => 'http://aip.bdstatic.com/portal/dist/1530540600796/ai_images/technology/ocr-general/general/tech-general-original-scanned.png',//你的图片地址

    // 使用base编码进行提交图片,连接或本地图片都行
    // 'image' => chunk_split(base64_encode(file_get_contents('../pic_001.png')))
    'image' => chunk_split(base64_encode(file_get_contents('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1588616902312&di=4ee3454b71e4d46238dcd896e89742ab&imgtype=0&src=http%3A%2F%2Fimg1.imgtn.bdimg.com%2Fit%2Fu%3D2676471211%2C3986314344%26fm%3D214%26gp%3D0.jpg')))
);
$token_result = query_post($requestImgUrl, $data);     // 进行post请求
print_r($token_result);     //返回json数据
// print_r(json_decode($token_result));      



function query_post($url = "https://aip.baidubce.com/oauth/2.0/token", $data = array())
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 不从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_HEADER, 0); //启用时会将头文件的信息作为数据流输出。这里不启用
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //如果成功只将结果返回,不自动输出任何内容。如果失败返回FALSE
    curl_setopt($curl, CURLOPT_POST, 1); //如果你想PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); //需要POST的数据
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded; charset=utf-8"));
    $result = curl_exec($curl);
    if (!curl_errno($curl)) {
        return $result;
    } else {
        return 'Curl error: ' . curl_error($curl);
    }
    curl_close($curl);
}

posted @ 2022-04-02 09:47  coderwcb  阅读(98)  评论(0)    收藏  举报