xuweiqiang

  最近需要检测一下书籍封面的LOGO问题,文字识别,只能试试百度的api接口了,然后通用接口好办、直接传url值为图片的http地址就行,但是你说,高精度的那个,按照文档:所有图片均需要base64编码、去掉编码头后再进行urlencode。我试了几次,网上的工具也好,自己写demo处理也好就是返回image format error,刚开始试了一个demo:

<?php
    $img = \'1.jpg\';
    $base64_img = base64EncodeImage($img);
    echo \'<img src="\' . $base64_img . \'" />\';
      
    function base64EncodeImage ($image_file) {
        $base64_image = \'\';
        $image_info = getimagesize($image_file);
        $image_info[\'mime\'] = \'image/jpg\';
        $image_data = fread(fopen($image_file, \'r\'), filesize($image_file));
        $base64_image = \'data:\' . $image_info[\'mime\'] . \';base64,\' . chunk_split(base64_encode($image_data));
        return $base64_image;
    }

是可以正确显示用base64显示图片,但是还是不ok,早上起来莫名其妙好了,希望能帮到一些跟我一样遇到这样问题的人,脚本:

<?php
function post($url,$post_data){
    //初始化
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, 0);
    //设置获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    //设置post方式提交
    //关闭https验证
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

    curl_setopt($curl, CURLOPT_POST, 1);
    //设置post数据
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    //执行命令
    $data = curl_exec($curl);
    //关闭URL请求
    curl_close($curl);
    //显示获得的数据
    return $data;
}


function detail_ocr($image_url){
    // 文字识别 - 高精度版
    $access_token = \'123456\';
    $url = \'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=\'.$access_token;
    $img = file_get_contents($image_url);
    $img = base64_encode($img);
    $headers[\'Content-Type\'] = \'application/x-www-form-urlencoded\';
    $bodys = array(
        \'image\' => $img,
    );
    $res = post($url, $bodys);
    return $res;
}

分类:

技术点:

相关文章: