科技的发展,时代的进步,各大行业的需求,需要一些特殊的功能,图片文字识别就是其中的一个。

例如:上传身份证 或者 车牌号 识别里面的信息

方法一:使用文字识别的API:

第一步:新手接入指南

https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3

第二步:接入API

文档:https://ai.baidu.com/ai-doc/OCR/zk3h7xz52

文字API请求URL,它必须要有参数access_token:

$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' . $token;

案例:demo

/**
     * 发起http post请求(REST API), 并获取REST请求的结果
     * @param string $url
     * @param string $param
     * @return - http response body if succeeds, else false.
     */
    public function request_post($url = '', $param = '')
    {
        if (empty($url) || empty($param)) {
            return false;
        }

        $postUrl = $url;
        $curlPost = $param;

        $curl = curl_init();// 初始化curl
        curl_setopt($curl, CURLOPT_URL, $postUrl);//抓取指定网页
        curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
        // 要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        // post提交方式
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        // 运行curl
        $data = curl_exec($curl);
        curl_close($curl);

        return $data;
    }

/**
     * 获取API访问授权码,调用鉴权接口获取的token
     * @param ak: ak from baidu cloud app
     * @param sk: sk from baidu cloud app
     * @return - access_token string if succeeds, else false.
     */
    public function access_token(){
        //密钥
        $ak = '';//你的 Api Key
        $sk = '';//你的 Secret Key
        //请求地址
        $url = 'https://aip.baidubce.com/oauth/2.0/token';

        //参数
        $post_data = array();
        $post_data['grant_type']  = 'client_credentials';
        $post_data['client_id']   = $ak;
        $post_data['client_secret'] = $sk;

        //请求方法
        $res = $this->request_post($url, $post_data);
        $res = json_decode($res, true);
        return $res['access_token'];
    }
//演示
    public function demo()
    {
        //获取access_token
        $access_token = $this->access_token();

        //定义参数并去请求api,注意:“?”前面车牌识别的API,后面是参数
        $url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate?access_token=' . $access_token;
        //要识别的图片
        $img = file_get_contents('https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1378137177,1265877744&fm=26&gp=0.jpg');
        $img = base64_encode($img);
        $bodys = array(
            "image" => $img
        );
        $data = $this->request_post($url, $bodys);//解码json数据
        //重定义数据,只获取文字
//        $arr = array();
//        foreach ($data->words_result as $k=>&$v){
//            $arr[]=$v->words;
//        }
        //转换成字符串
        echo "<pre>";
        print_r($data);
    }

 

注:演示时我使用了车牌识别的API,调用时你要根据需要更改

 方法二、使用SDK文字识别

在百度文档里,文字识别有API文档和SDK文档,如果你想使用SDK就直接调用就好,比API方便。

第一步:把SDK放在extend里

第二步:调用SDK已经封装好函数

 

use baidu\AipOcr;//这里改成namespace和use引入,也可以直接require_once引入
    
    public function demo2(){
        $api_id = '你的 App ID';
        $api_key = '你的 Api Key';
        $secret_key = '你的 Secret Key';

        // 初始化,
        $aipOcr = new AipOcr($api_id, $api_key, $secret_key);

        // 身份证识别
        //var_dump($aipOcr->idcard(file_get_contents('idcard.jpg'), true));

        // 银行卡识别
        //var_dump($aipOcr->bankcard(file_get_contents('bankcard.jpg')));

        // 通用文字识别
        $rescult = $aipOcr->general(file_get_contents('图片路径'));
        $words = $rescult['words_result'];
        echo  "<pre>";
        print_r($words);
    }

区别

1、API是一个函数,有其特定的功能而SDK是一个很多功能函数的集合体,一个工具包

2、API是数据接口,SDK相当于开发集成工具环境,要在SDK的环境下来调用API。

3、API接口对接过程中需要的环境需要自己提供,SDK不仅提供开发环境,还提供很多API。

4、简单功能调用,API调用方便快捷;复杂功能调用,SDK功能齐全。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐