laravel7 百度智能云检测图片是否合规
阅读原文时间:2023年07月10日阅读:1

APP 文件下建一个Libs目录建一个BaiduService文件,需要检测引入进行调用即可

BaiduService文件内容如下

<?php
namespace App\Libs;

use App\Libs\baidu\AipContentCensor;
use App\Libs\baidu\AipImageCensor;

class BaiduService
{
const APP_ID = '23841417';
const API_KEY = '22LIjvBBjMEgawNnkS8rg3ki';
const SECRET_KEY = 'k23yjS0fXdgxYmNDOSgGT1FpjjVy1Zli';

/\*\*  
 \* 百度敏感词校验  
 \* @param $content  
 \* @return bool  
 \*/  
public static function textCheck($content)  
{

    $client = new AipContentCensor(self::APP\_ID, self::API\_KEY, self::SECRET\_KEY);  
    $result = $client->textCensorUserDefined($content);  
    print\_r($result);  
    if($result\['conclusionType'\] == 1) {  
        return true;  
    }  
    return false;  
}

/\*\*  
 \* 百度敏感词校验  
 \* @param $content  
 \* @return bool  
 \*/  
public static function imageCheck($imgPath)  
{

    $client = new AipContentCensor(self::APP\_ID, self::API\_KEY, self::SECRET\_KEY);

    $content = file\_get\_contents($imgPath);  
    $result = $client->imageCensorUserDefined($content);  
    print\_r($result);  
    exit();  
    if($result\['conclusionType'\] == 1) {  
        return true;  
    }  
    return false;  
}

}

3:Libs建一个baidu目录,目录中放以下文件

1 AipBodyAnalysis文件

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
class AipBodyAnalysis extends AipBase {

/\*\*  
 \* 人体关键点识别 body\_analysis api url  
 \* @var string  
 \*/  
private $bodyAnalysisUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body\_analysis';

/\*\*  
 \* 人体检测与属性识别 body\_attr api url  
 \* @var string  
 \*/  
private $bodyAttrUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body\_attr';

/\*\*  
 \* 人流量统计 body\_num api url  
 \* @var string  
 \*/  
private $bodyNumUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body\_num';

/\*\*  
 \* 手势识别 gesture api url  
 \* @var string  
 \*/  
private $gestureUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/gesture';

/\*\*  
 \* 人像分割 body\_seg api url  
 \* @var string  
 \*/  
private $bodySegUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body\_seg';

/\*\*  
 \* 驾驶行为分析 driver\_behavior api url  
 \* @var string  
 \*/  
private $driverBehaviorUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/driver\_behavior';

/\*\*  
 \* 人流量统计-动态版 body\_tracking api url  
 \* @var string  
 \*/  
private $bodyTrackingUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body\_tracking';

/\*\*  
 \* 手部关键点识别 hand\_analysis api url  
 \* @var string  
 \*/  
private $handAnalysisUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/hand\_analysis';

/\*\*  
 \* 人体关键点识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function bodyAnalysis($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->bodyAnalysisUrl, $data);  
}

/\*\*  
 \* 人体检测与属性识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   type gender,<br>age,<br>lower\_wear,<br>upper\_wear,<br>headwear,<br>glasses,<br>upper\_color,<br>lower\_color,<br>cellphone,<br>upper\_wear\_fg,<br>upper\_wear\_texture,<br>lower\_wear\_texture,<br>orientation,<br>umbrella,<br>bag,<br>smoke,<br>vehicle,<br>carrying\_item,<br>upper\_cut,<br>lower\_cut,<br>occlusion,<br>is\_human | 1)可选值说明:<br>gender-性别,<br>age-年龄阶段,<br>lower\_wear-下身服饰,<br>upper\_wear-上身服饰,<br>headwear-是否戴帽子,<br>glasses-是否戴眼镜,<br>upper\_color-上身服饰颜色,<br>lower\_color-下身服饰颜色,<br>cellphone-是否使用手机,<br>upper\_wear\_fg-上身服饰细分类,<br>upper\_wear\_texture-上身服饰纹理,<br>orientation-身体朝向,<br>umbrella-是否撑伞;<br>bag-背包,<br>smoke-是否吸烟,<br>vehicle-交通工具,<br>carrying\_item-是否有手提物,<br>upper\_cut-上方截断,<br>lower\_cut-下方截断,<br>occlusion-遮挡,<br>is\_human-是否是正常人体<br>2)type 参数值可以是可选值的组合,用逗号分隔;\*\*如果无此参数默认输出全部21个属性\*\*  
 \* @return array  
 \*/  
public function bodyAttr($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->bodyAttrUrl, $data);  
}

/\*\*  
 \* 人流量统计接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   area 特定框选区域坐标,支持多个多边形区域,最多支持10个区域,如输入超过10个区域,截取前10个区域进行识别。<br>\*\*此参数为空或无此参数、或area参数设置错误时,默认识别整个图片的人数\*\* 。<br>area参数设置错误的示例:某个坐标超过原图大小,x、y坐标未成对出现等;注意:\*\*设置了多个区域时,任意一个坐标设置错误,则认为area参数错误、失效\*\*。<br>\*\*area参数设置格式\*\*:<br>1)多个区域用英文分号“;”分隔;<br>2)同一个区域内的坐标用英文逗号“,”分隔,默认尾点和首点相连做闭合。<br>示例:<br>1)单个多边形区域:x1,y1,x2,y2,x3,y3...xn,yn<br>2)多个多边形区域:xa1,ya1,xa2,ya2,xa3,ya3...xan,yan;xb1,yb1,xb2,yb2,xb3,yb3...xbn,ybn;..  
 \*   show 是否输出渲染的图片,默认不返回,\*\*选true时返回渲染后的图片(base64)\*\*,其它无效值或为空则默认false  
 \* @return array  
 \*/  
public function bodyNum($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->bodyNumUrl, $data);  
}

/\*\*  
 \* 手势识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function gesture($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->gestureUrl, $data);  
}

/\*\*  
 \* 人像分割接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   type 可以通过设置type参数,自主设置返回哪些结果图,避免造成带宽的浪费<br>1)可选值说明:<br>labelmap - 二值图像,需二次处理方能查看分割效果<br>scoremap - 人像前景灰度图<br>foreground - 人像前景抠图,透明背景<br>2)type 参数值可以是可选值的组合,用逗号分隔;如果无此参数默认输出全部3类结果图  
 \* @return array  
 \*/  
public function bodySeg($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->bodySegUrl, $data);  
}

/\*\*  
 \* 驾驶行为分析接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   type smoke,cellphone,<br>not\_buckling\_up,<br>both\_hands\_leaving\_wheel,<br>not\_facing\_front |识别的属性行为类别,英文逗号分隔,默认所有属性都识别;<br>smoke //吸烟,<br>cellphone //打手机 ,<br>not\_buckling\_up // 未系安全带,<br>both\_hands\_leaving\_wheel // 双手离开方向盘,<br>not\_facing\_front // 视角未看前方  
 \* @return array  
 \*/  
public function driverBehavior($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->driverBehaviorUrl, $data);  
}

/\*\*  
 \* 人流量统计-动态版接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param string $dynamic - true:动态人流量统计,返回总人数、跟踪ID、区域进出人数;<br>false:静态人数统计,返回总人数  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   case\_id 当dynamic为True时,必填;任务ID(通过case\_id区分不同视频流,自拟,不同序列间不可重复即可)  
 \*   case\_init 当dynamic为True时,必填;每个case的初始化信号,为true时对该case下的跟踪算法进行初始化,为false时重载该case的跟踪状态。当为false且读取不到相应case的信息时,直接重新初始化  
 \*   show 否返回结果图(含统计值和跟踪框渲染),默认不返回,选true时返回渲染后的图片(base64),其它无效值或为空则默认false  
 \*   area 当dynamic为True时,必填;静态人数统计时,只统计区域内的人,缺省时为全图统计。<br>动态人流量统计时,进出区域的人流会被统计。<br>逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',按顺序依次给出每个顶点的xy坐标(默认尾点和首点相连),形成闭合多边形区域。<br>服务会做范围(顶点左边需在图像范围内)及个数校验(数组长度必须为偶数,且大于3个顶点)。只支持单个多边形区域,建议设置矩形框,即4个顶点。\*\*坐标取值不能超过图像宽度和高度,比如1280的宽度,坐标值最小建议从1开始,最大到1279\*\*。  
 \* @return array  
 \*/  
public function bodyTracking($image, $dynamic, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);  
    $data\['dynamic'\] = $dynamic;

    $data = array\_merge($data, $options);

    return $this->request($this->bodyTrackingUrl, $data);  
}

/\*\*  
 \* 手部关键点识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function handAnalysis($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->handAnalysisUrl, $data);  
}  

}

2:AipContentCensor

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'AipImageCensor.php';

/**
* 内容审核
*/
class AipContentCensor extends AipImageCensor{

}

3:AipFace

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
use App\Libs\baidu\lib\AipBase;

class AipFace extends AipBase {

/\*\*  
 \* 人脸检测 detect api url  
 \* @var string  
 \*/  
private $detectUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/detect';

/\*\*  
 \* 人脸搜索 search api url  
 \* @var string  
 \*/  
private $searchUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/search';

/\*\*  
 \* 人脸搜索 M:N 识别 multi\_search api url  
 \* @var string  
 \*/  
private $multiSearchUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/multi-search';

/\*\*  
 \* 人脸注册 user\_add api url  
 \* @var string  
 \*/  
private $userAddUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add';

/\*\*  
 \* 人脸更新 user\_update api url  
 \* @var string  
 \*/  
private $userUpdateUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update';

/\*\*  
 \* 人脸删除 face\_delete api url  
 \* @var string  
 \*/  
private $faceDeleteUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/delete';

/\*\*  
 \* 用户信息查询 user\_get api url  
 \* @var string  
 \*/  
private $userGetUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get';

/\*\*  
 \* 获取用户人脸列表 face\_getlist api url  
 \* @var string  
 \*/  
private $faceGetlistUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist';

/\*\*  
 \* 获取用户列表 group\_getusers api url  
 \* @var string  
 \*/  
private $groupGetusersUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers';

/\*\*  
 \* 复制用户 user\_copy api url  
 \* @var string  
 \*/  
private $userCopyUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/copy';

/\*\*  
 \* 删除用户 user\_delete api url  
 \* @var string  
 \*/  
private $userDeleteUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/delete';

/\*\*  
 \* 创建用户组 group\_add api url  
 \* @var string  
 \*/  
private $groupAddUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add';

/\*\*  
 \* 删除用户组 group\_delete api url  
 \* @var string  
 \*/  
private $groupDeleteUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete';

/\*\*  
 \* 组列表查询 group\_getlist api url  
 \* @var string  
 \*/  
private $groupGetlistUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist';

/\*\*  
 \* 身份验证 person\_verify api url  
 \* @var string  
 \*/  
private $personVerifyUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/person/verify';

/\*\*  
 \* 语音校验码接口 video\_sessioncode api url  
 \* @var string  
 \*/  
private $videoSessioncodeUrl = 'https://aip.baidubce.com/rest/2.0/face/v1/faceliveness/sessioncode';

/\*\*  
 \* 人脸检测接口  
 \*  
 \* @param string $image - 图片信息(\*\*总数据大小应小于10M\*\*),图片上传方式根据image\_type来判断  
 \* @param string $imageType - 图片类型     <br> \*\*BASE64\*\*:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; <br>\*\*URL\*\*:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); <br>\*\*FACE\_TOKEN\*\*: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE\_TOKEN,同一张图片多次检测得到的FACE\_TOKEN是同一个。  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   face\_field 包括\*\*age,beauty,expression,face\_shape,gender,glasses,landmark,landmark72,landmark150,race,quality,eye\_status,emotion,face\_type信息\*\*  <br> 逗号分隔. 默认只返回face\_token、人脸框、概率和旋转角度  
 \*   max\_face\_num 最多处理人脸的数目,默认值为1,仅检测图片中面积最大的那个人脸;\*\*最大值10\*\*,检测图片中面积最大的几张人脸。  
 \*   face\_type 人脸的类型 \*\*LIVE\*\*表示生活照:通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等\*\*IDCARD\*\*表示身份证芯片照:二代身份证内置芯片中的人像照片 \*\*WATERMARK\*\*表示带水印证件照:一般为带水印的小图,如公安网小图 \*\*CERT\*\*表示证件照片:如拍摄的身份证、工卡、护照、学生证等证件图片 默认\*\*LIVE\*\*  
 \*   liveness\_control 活体检测控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的活体要求(高通过率 低攻击拒绝率) \*\*NORMAL\*\*: 一般的活体要求(平衡的攻击拒绝率, 通过率) \*\*HIGH\*\*: 较高的活体要求(高攻击拒绝率 低通过率) \*\*默认NONE\*\*  
 \* @return array  
 \*/  
public function detect($image, $imageType, $options=array()){

    $data = array();

    $data\['image'\] = $image;  
    $data\['image\_type'\] = $imageType;

    $data = array\_merge($data, $options);  
    return $this->request($this->detectUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 人脸搜索接口  
 \*  
 \* @param string $image - 图片信息(\*\*总数据大小应小于10M\*\*),图片上传方式根据image\_type来判断  
 \* @param string $imageType - 图片类型     <br> \*\*BASE64\*\*:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; <br>\*\*URL\*\*:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); <br>\*\*FACE\_TOKEN\*\*: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE\_TOKEN,同一张图片多次检测得到的FACE\_TOKEN是同一个。  
 \* @param string $groupIdList - 从指定的group中进行查找 用逗号分隔,\*\*上限20个\*\*  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   max\_face\_num 最多处理人脸的数目<br>\*\*默认值为1(仅检测图片中面积最大的那个人脸)\*\* \*\*最大值10\*\*  
 \*   match\_threshold 匹配阈值(设置阈值后,score低于此阈值的用户信息将不会返回) 最大100 最小0 默认80 <br>\*\*此阈值设置得越高,检索速度将会越快,推荐使用默认阈值\`80\`\*\*  
 \*   quality\_control 图片质量控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的质量要求 \*\*NORMAL\*\*: 一般的质量要求 \*\*HIGH\*\*: 较高的质量要求 \*\*默认 NONE\*\*  
 \*   liveness\_control 活体检测控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的活体要求(高通过率 低攻击拒绝率) \*\*NORMAL\*\*: 一般的活体要求(平衡的攻击拒绝率, 通过率) \*\*HIGH\*\*: 较高的活体要求(高攻击拒绝率 低通过率) \*\*默认NONE\*\*  
 \*   user\_id 当需要对特定用户进行比对时,指定user\_id进行比对。即人脸认证功能。  
 \*   max\_user\_num 查找后返回的用户数量。返回相似度最高的几个用户,默认为1,最多返回50个。  
 \* @return array  
 \*/  
public function search($image, $imageType, $groupIdList, $options=array()){

    $data = array();

    $data\['image'\] = $image;  
    $data\['image\_type'\] = $imageType;  
    $data\['group\_id\_list'\] = $groupIdList;

    $data = array\_merge($data, $options);  
    return $this->request($this->searchUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 人脸搜索 M:N 识别接口  
 \*  
 \* @param string $image - 图片信息(\*\*总数据大小应小于10M\*\*),图片上传方式根据image\_type来判断  
 \* @param string $imageType - 图片类型     <br> \*\*BASE64\*\*:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; <br>\*\*URL\*\*:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); <br>\*\*FACE\_TOKEN\*\*: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE\_TOKEN,同一张图片多次检测得到的FACE\_TOKEN是同一个。  
 \* @param string $groupIdList - 从指定的group中进行查找 用逗号分隔,\*\*上限20个\*\*  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   max\_face\_num 最多处理人脸的数目<br>\*\*默认值为1(仅检测图片中面积最大的那个人脸)\*\* \*\*最大值10\*\*  
 \*   match\_threshold 匹配阈值(设置阈值后,score低于此阈值的用户信息将不会返回) 最大100 最小0 默认80 <br>\*\*此阈值设置得越高,检索速度将会越快,推荐使用默认阈值\`80\`\*\*  
 \*   quality\_control 图片质量控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的质量要求 \*\*NORMAL\*\*: 一般的质量要求 \*\*HIGH\*\*: 较高的质量要求 \*\*默认 NONE\*\*  
 \*   liveness\_control 活体检测控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的活体要求(高通过率 低攻击拒绝率) \*\*NORMAL\*\*: 一般的活体要求(平衡的攻击拒绝率, 通过率) \*\*HIGH\*\*: 较高的活体要求(高攻击拒绝率 低通过率) \*\*默认NONE\*\*  
 \*   max\_user\_num 查找后返回的用户数量。返回相似度最高的几个用户,默认为1,最多返回50个。  
 \* @return array  
 \*/  
public function multiSearch($image, $imageType, $groupIdList, $options=array()){

    $data = array();

    $data\['image'\] = $image;  
    $data\['image\_type'\] = $imageType;  
    $data\['group\_id\_list'\] = $groupIdList;

    $data = array\_merge($data, $options);  
    return $this->request($this->multiSearchUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 人脸注册接口  
 \*  
 \* @param string $image - 图片信息(总数据大小应小于10M),图片上传方式根据image\_type来判断。注:组内每个uid下的人脸图片数目上限为20张  
 \* @param string $imageType - 图片类型     <br> \*\*BASE64\*\*:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; <br>\*\*URL\*\*:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); <br>\*\*FACE\_TOKEN\*\*: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE\_TOKEN,同一张图片多次检测得到的FACE\_TOKEN是同一个。  
 \* @param string $groupId - 用户组id(由数字、字母、下划线组成),长度限制128B  
 \* @param string $userId - 用户id(由数字、字母、下划线组成),长度限制128B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   user\_info 用户资料,长度限制256B  
 \*   quality\_control 图片质量控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的质量要求 \*\*NORMAL\*\*: 一般的质量要求 \*\*HIGH\*\*: 较高的质量要求 \*\*默认 NONE\*\*  
 \*   liveness\_control 活体检测控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的活体要求(高通过率 低攻击拒绝率) \*\*NORMAL\*\*: 一般的活体要求(平衡的攻击拒绝率, 通过率) \*\*HIGH\*\*: 较高的活体要求(高攻击拒绝率 低通过率) \*\*默认NONE\*\*  
 \*   action\_type 操作方式  APPEND: 当user\_id在库中已经存在时,对此user\_id重复注册时,新注册的图片默认会追加到该user\_id下,REPLACE : 当对此user\_id重复注册时,则会用新图替换库中该user\_id下所有图片,默认使用APPEND  
 \* @return array  
 \*/  
public function addUser($image, $imageType, $groupId, $userId, $options=array()){

    $data = array();

    $data\['image'\] = $image;  
    $data\['image\_type'\] = $imageType;  
    $data\['group\_id'\] = $groupId;  
    $data\['user\_id'\] = $userId;

    $data = array\_merge($data, $options);  
    return $this->request($this->userAddUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 人脸更新接口  
 \*  
 \* @param string $image - 图片信息(\*\*总数据大小应小于10M\*\*),图片上传方式根据image\_type来判断  
 \* @param string $imageType - 图片类型     <br> \*\*BASE64\*\*:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; <br>\*\*URL\*\*:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); <br>\*\*FACE\_TOKEN\*\*: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE\_TOKEN,同一张图片多次检测得到的FACE\_TOKEN是同一个。  
 \* @param string $groupId - 更新指定groupid下uid对应的信息  
 \* @param string $userId - 用户id(由数字、字母、下划线组成),长度限制128B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   user\_info 用户资料,长度限制256B  
 \*   quality\_control 图片质量控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的质量要求 \*\*NORMAL\*\*: 一般的质量要求 \*\*HIGH\*\*: 较高的质量要求 \*\*默认 NONE\*\*  
 \*   liveness\_control 活体检测控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的活体要求(高通过率 低攻击拒绝率) \*\*NORMAL\*\*: 一般的活体要求(平衡的攻击拒绝率, 通过率) \*\*HIGH\*\*: 较高的活体要求(高攻击拒绝率 低通过率) \*\*默认NONE\*\*  
 \*   action\_type 操作方式  APPEND: 当user\_id在库中已经存在时,对此user\_id重复注册时,新注册的图片默认会追加到该user\_id下,REPLACE : 当对此user\_id重复注册时,则会用新图替换库中该user\_id下所有图片,默认使用APPEND  
 \* @return array  
 \*/  
public function updateUser($image, $imageType, $groupId, $userId, $options=array()){

    $data = array();

    $data\['image'\] = $image;  
    $data\['image\_type'\] = $imageType;  
    $data\['group\_id'\] = $groupId;  
    $data\['user\_id'\] = $userId;

    $data = array\_merge($data, $options);  
    return $this->request($this->userUpdateUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 人脸删除接口  
 \*  
 \* @param string $userId - 用户id(由数字、字母、下划线组成),长度限制128B  
 \* @param string $groupId - 用户组id(由数字、字母、下划线组成),长度限制128B  
 \* @param string $faceToken - 需要删除的人脸图片token,(由数字、字母、下划线组成)长度限制64B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function faceDelete($userId, $groupId, $faceToken, $options=array()){

    $data = array();

    $data\['user\_id'\] = $userId;  
    $data\['group\_id'\] = $groupId;  
    $data\['face\_token'\] = $faceToken;

    $data = array\_merge($data, $options);  
    return $this->request($this->faceDeleteUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 用户信息查询接口  
 \*  
 \* @param string $userId - 用户id(由数字、字母、下划线组成),长度限制128B  
 \* @param string $groupId - 用户组id(由数字、字母、下划线组成),长度限制128B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function getUser($userId, $groupId, $options=array()){

    $data = array();

    $data\['user\_id'\] = $userId;  
    $data\['group\_id'\] = $groupId;

    $data = array\_merge($data, $options);  
    return $this->request($this->userGetUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 获取用户人脸列表接口  
 \*  
 \* @param string $userId - 用户id(由数字、字母、下划线组成),长度限制128B  
 \* @param string $groupId - 用户组id(由数字、字母、下划线组成),长度限制128B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function faceGetlist($userId, $groupId, $options=array()){

    $data = array();

    $data\['user\_id'\] = $userId;  
    $data\['group\_id'\] = $groupId;

    $data = array\_merge($data, $options);  
    return $this->request($this->faceGetlistUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 获取用户列表接口  
 \*  
 \* @param string $groupId - 用户组id(由数字、字母、下划线组成),长度限制128B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   start 默认值0,起始序号  
 \*   length 返回数量,默认值100,最大值1000  
 \* @return array  
 \*/  
public function getGroupUsers($groupId, $options=array()){

    $data = array();

    $data\['group\_id'\] = $groupId;

    $data = array\_merge($data, $options);  
    return $this->request($this->groupGetusersUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 复制用户接口  
 \*  
 \* @param string $userId - 用户id(由数字、字母、下划线组成),长度限制128B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   src\_group\_id 从指定组里复制信息  
 \*   dst\_group\_id 需要添加用户的组id  
 \* @return array  
 \*/  
public function userCopy($userId, $options=array()){

    $data = array();

    $data\['user\_id'\] = $userId;

    $data = array\_merge($data, $options);  
    return $this->request($this->userCopyUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 删除用户接口  
 \*  
 \* @param string $groupId - 用户组id(由数字、字母、下划线组成),长度限制128B  
 \* @param string $userId - 用户id(由数字、字母、下划线组成),长度限制128B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function deleteUser($groupId, $userId, $options=array()){

    $data = array();

    $data\['group\_id'\] = $groupId;  
    $data\['user\_id'\] = $userId;

    $data = array\_merge($data, $options);  
    return $this->request($this->userDeleteUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 创建用户组接口  
 \*  
 \* @param string $groupId - 用户组id(由数字、字母、下划线组成),长度限制128B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function groupAdd($groupId, $options=array()){

    $data = array();

    $data\['group\_id'\] = $groupId;

    $data = array\_merge($data, $options);  
    return $this->request($this->groupAddUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 删除用户组接口  
 \*  
 \* @param string $groupId - 用户组id(由数字、字母、下划线组成),长度限制128B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function groupDelete($groupId, $options=array()){

    $data = array();

    $data\['group\_id'\] = $groupId;

    $data = array\_merge($data, $options);  
    return $this->request($this->groupDeleteUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 组列表查询接口  
 \*  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   start 默认值0,起始序号  
 \*   length 返回数量,默认值100,最大值1000  
 \* @return array  
 \*/  
public function getGroupList($options=array()){

    $data = array();

    $data = array\_merge($data, $options);  
    return $this->request($this->groupGetlistUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 身份验证接口  
 \*  
 \* @param string $image - 图片信息(\*\*总数据大小应小于10M\*\*),图片上传方式根据image\_type来判断  
 \* @param string $imageType - 图片类型     <br> \*\*BASE64\*\*:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; <br>\*\*URL\*\*:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); <br>\*\*FACE\_TOKEN\*\*: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE\_TOKEN,同一张图片多次检测得到的FACE\_TOKEN是同一个。  
 \* @param string $idCardNumber - 身份证号(真实身份证号号码)  
 \* @param string $name - utf8,姓名(真实姓名,和身份证号匹配)  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   quality\_control 图片质量控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的质量要求 \*\*NORMAL\*\*: 一般的质量要求 \*\*HIGH\*\*: 较高的质量要求 \*\*默认 NONE\*\*  
 \*   liveness\_control 活体检测控制  \*\*NONE\*\*: 不进行控制 \*\*LOW\*\*:较低的活体要求(高通过率 低攻击拒绝率) \*\*NORMAL\*\*: 一般的活体要求(平衡的攻击拒绝率, 通过率) \*\*HIGH\*\*: 较高的活体要求(高攻击拒绝率 低通过率) \*\*默认NONE\*\*  
 \* @return array  
 \*/  
public function personVerify($image, $imageType, $idCardNumber, $name, $options=array()){

    $data = array();

    $data\['image'\] = $image;  
    $data\['image\_type'\] = $imageType;  
    $data\['id\_card\_number'\] = $idCardNumber;  
    $data\['name'\] = $name;

    $data = array\_merge($data, $options);  
    return $this->request($this->personVerifyUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 语音校验码接口接口  
 \*  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   appid 百度云创建应用时的唯一标识ID  
 \* @return array  
 \*/  
public function videoSessioncode($options=array()){

    $data = array();

    $data = array\_merge($data, $options);  
    return $this->request($this->videoSessioncodeUrl, json\_encode($data),  array(  
        'Content-Type' => 'application/json',  
    ));  
}  
/\*\*  
 \* 在线活体检测 faceverify api url  
 \* @var string  
 \*/  
private $faceverifyUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceverify';

/\*\*  
 \* 在线活体检测接口  
 \*  
 \* @param array $images  
 \* @return array  
 \*/  
public function faceverify($images){

    return $this->request($this->faceverifyUrl, json\_encode($images), array(  
        'Content-Type' => 'application/json',  
    ));  
}

/\*\*  
 \* 人脸比对 match api url  
 \* @var string  
 \*/  
private $matchUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/match';

/\*\*  
 \* 人脸比对接口  
 \*  
 \* @param array $images  
 \* @return array  
 \*/  
public function match($images){

    return $this->request($this->matchUrl, json\_encode($images), array(  
        'Content-Type' => 'application/json',  
    ));  
}

}

4:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
use App\Libs\baidu\lib\AipBase;
/**
* 黄反识别
*/
class AipImageCensor extends AipBase{

/\*\*  
 \* @var string  
 \*/  
private $imageCensorUserDefinedUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/img\_censor/v2/user\_defined';

/\*\*  
 \* @var string  
 \*/  
private $textCensorUserDefinedUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/text\_censor/v2/user\_defined';

/\*\*  
 \* @var string  
 \*/  
private $voiceCensorUserDefinedUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/voice\_censor/v2/user\_defined';

/\*\*  
 \* @var string  
 \*/  
private $videoCensorUserDefinedUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/video\_censor/v2/user\_defined';

/\*\*  
 \* @param  string $image 图像  
 \* @return array  
 \*/  
public function imageCensorUserDefined($image){

    $data = array();

    $isUrl = substr(trim($image), 0, 4) === 'http';  
    if(!$isUrl){  
        $data\['image'\] = base64\_encode($image);  
    }else{  
        $data\['imgUrl'\] = $image;  
    }

    return $this->request($this->imageCensorUserDefinedUrl, $data);  
}

/\*\*  
 \* @param  string $text  
 \* @return array  
 \*/  
public function textCensorUserDefined($text){

    $data = array();

    $data\['text'\] = $text;

    return $this->request($this->textCensorUserDefinedUrl, $data);  
}

/\*\*  
 \* @param  string $voice  
 \* @param  string $fmt  
 \* @return array  
 \*/  
public function voiceCensorUserDefined($voice, $fmt, $options = array()){

    $data = array();

    $isUrl = substr(trim($voice), 0, 4) === 'http';  
    if(!$isUrl){  
        $data\['base64'\] = base64\_encode($voice);  
    }else{  
        $data\['url'\] = $voice;  
    }  
    $data\['fmt'\] = $fmt;  
    $data = array\_merge($data, $options);  
    return $this->request($this->voiceCensorUserDefinedUrl, $data);  
}

/\*\*  
 \* @param  string $name  
 \* @param  string $videoUrl  
 \* @param  string $extId  
 \* @return array  
 \*/  
public function videoCensorUserDefined($name, $videoUrl, $extId, $options = array()){

    $data = array();

    $data\['name'\] = $name;  
    $data\['videoUrl'\] = $videoUrl;  
    $data\['extId'\] = $extId;  
    $data =  array\_merge($data, $options);  
    return $this->request($this->videoCensorUserDefinedUrl, $data);  
}  

}

5:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
use App\Libs\baidu\lib\AipBase;

class AipImageClassify extends AipBase {

/\*\*  
 \* 通用物体识别 advanced\_general api url  
 \* @var string  
 \*/  
private $advancedGeneralUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced\_general';

/\*\*  
 \* 菜品识别 dish\_detect api url  
 \* @var string  
 \*/  
private $dishDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/dish';

/\*\*  
 \* 车辆识别 car\_detect api url  
 \* @var string  
 \*/  
private $carDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/car';

/\*\*  
 \* 车辆检测 vehicle\_detect api url  
 \* @var string  
 \*/  
private $vehicleDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle\_detect';

/\*\*  
 \* 车辆外观损伤识别 vehicle\_damage api url  
 \* @var string  
 \*/  
private $vehicleDamageUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle\_damage';

/\*\*  
 \* logo商标识别 logo\_search api url  
 \* @var string  
 \*/  
private $logoSearchUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v2/logo';

/\*\*  
 \* logo商标识别—添加 logo\_add api url  
 \* @var string  
 \*/  
private $logoAddUrl = 'https://aip.baidubce.com/rest/2.0/realtime\_search/v1/logo/add';

/\*\*  
 \* logo商标识别—删除 logo\_delete api url  
 \* @var string  
 \*/  
private $logoDeleteUrl = 'https://aip.baidubce.com/rest/2.0/realtime\_search/v1/logo/delete';

/\*\*  
 \* 动物识别 animal\_detect api url  
 \* @var string  
 \*/  
private $animalDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/animal';

/\*\*  
 \* 植物识别 plant\_detect api url  
 \* @var string  
 \*/  
private $plantDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/plant';

/\*\*  
 \* 图像主体检测 object\_detect api url  
 \* @var string  
 \*/  
private $objectDetectUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/object\_detect';

/\*\*  
 \* 地标识别 landmark api url  
 \* @var string  
 \*/  
private $landmarkUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/landmark';

/\*\*  
 \* 花卉识别 flower api url  
 \* @var string  
 \*/  
private $flowerUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/flower';

/\*\*  
 \* 食材识别 ingredient api url  
 \* @var string  
 \*/  
private $ingredientUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/classify/ingredient';

/\*\*  
 \* 红酒识别 redwine api url  
 \* @var string  
 \*/  
private $redwineUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/redwine';

/\*\*  
 \* 货币识别 currency api url  
 \* @var string  
 \*/  
private $currencyUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/currency';

/\*\*  
 \* 菜品识别-添加  
 \* @var string  
 \*/  
private $customDishAddUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/dish/add";  
/\*\*  
 \* 菜品识别-搜索  
 \* @var string  
 \*/  
private $customDishSearchUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/dish/search";  
/\*\*  
 \* 菜品识别-删除  
 \* @var string  
 \*/  
private $customDishDeleteUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/dish/delete";  
/\*\*  
 \* 多目标识别  
 \* @var string  
 \*/  
private $multiObjectDetectUrl = "https://aip.baidubce.com/rest/2.0/image-classify/v1/multi\_object\_detect";  
/\*\*  
 \* 组合接口  
 \* @var string  
 \*/  
private $combinationUrl = "https://aip.baidubce.com/api/v1/solution/direct/imagerecognition/combination";

/\*\*  
 \* 通用物体识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   baike\_num 返回百科信息的结果数,默认不返回  
 \* @return array  
 \*/  
public function advancedGeneral($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->advancedGeneralUrl, $data);  
}

/\*\*  
 \* 菜品识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   top\_num 返回预测得分top结果数,默认为5  
 \*   filter\_threshold 默认0.95,可以通过该参数调节识别效果,降低非菜识别率.  
 \*   baike\_num 返回百科信息的结果数,默认不返回  
 \* @return array  
 \*/  
public function dishDetect($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->dishDetectUrl, $data);  
}

/\*\*  
 \* 车辆识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   top\_num 返回预测得分top结果数,默认为5  
 \*   baike\_num 返回百科信息的结果数,默认不返回  
 \* @return array  
 \*/  
public function carDetect($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->carDetectUrl, $data);  
}

/\*\*  
 \* 车辆检测接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   show 是否返回结果图(含统计值和跟踪框)。选true时返回渲染后的图片(base64),其它无效值或为空则默认false。  
 \*   area 只统计该区域内的车辆数,缺省时为全图统计。<br>逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',按顺序依次给出每个顶点的x、y坐标(默认尾点和首点相连),形成闭合多边形区域。<br>服务会做范围(顶点左边需在图像范围内)及个数校验(数组长度必须为偶数,且大于3个顶点)。只支持单个多边形区域,建议设置矩形框,即4个顶点。\*\*坐标取值不能超过图像宽度和高度,比如1280的宽度,坐标值最大到1279\*\*。  
 \* @return array  
 \*/  
public function vehicleDetect($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->vehicleDetectUrl, $data);  
}

/\*\*  
 \* 车辆外观损伤识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function vehicleDamage($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->vehicleDamageUrl, $data);  
}

/\*\*  
 \* logo商标识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   custom\_lib 是否只使用自定义logo库的结果,默认false:返回自定义库+默认库的识别结果  
 \* @return array  
 \*/  
public function logoSearch($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->logoSearchUrl, $data);  
}

/\*\*  
 \* logo商标识别—添加接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param string $brief - brief,检索时带回。此处要传对应的name与code字段,name长度小于100B,code长度小于150B  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function logoAdd($image, $brief, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);  
    $data\['brief'\] = $brief;

    $data = array\_merge($data, $options);

    return $this->request($this->logoAddUrl, $data);  
}

/\*\*  
 \* logo商标识别—删除接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function logoDeleteByImage($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->logoDeleteUrl, $data);  
}

/\*\*  
 \* logo商标识别—删除接口  
 \*  
 \* @param string $contSign - 图片签名(和image二选一,image优先级更高)  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function logoDeleteBySign($contSign, $options=array()){

    $data = array();

    $data\['cont\_sign'\] = $contSign;

    $data = array\_merge($data, $options);

    return $this->request($this->logoDeleteUrl, $data);  
}

/\*\*  
 \* 动物识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   top\_num 返回预测得分top结果数,默认为6  
 \*   baike\_num 返回百科信息的结果数,默认不返回  
 \* @return array  
 \*/  
public function animalDetect($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->animalDetectUrl, $data);  
}

/\*\*  
 \* 植物识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   baike\_num 返回百科信息的结果数,默认不返回  
 \* @return array  
 \*/  
public function plantDetect($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->plantDetectUrl, $data);  
}

/\*\*  
 \* 图像主体检测接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   with\_face 如果检测主体是人,主体区域是否带上人脸部分,0-不带人脸区域,其他-带人脸区域,裁剪类需求推荐带人脸,检索/识别类需求推荐不带人脸。默认取1,带人脸。  
 \* @return array  
 \*/  
public function objectDetect($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->objectDetectUrl, $data);  
}

/\*\*  
 \* 地标识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function landmark($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->landmarkUrl, $data);  
}

/\*\*  
 \* 花卉识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   top\_num 返回预测得分top结果数,默认为5  
 \*   baike\_num 返回百科信息的结果数,默认不返回  
 \* @return array  
 \*/  
public function flower($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->flowerUrl, $data);  
}

/\*\*  
 \* 食材识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   top\_num 返回预测得分top结果数,如果为空或小于等于0默认为5;如果大于20默认20  
 \* @return array  
 \*/  
public function ingredient($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->ingredientUrl, $data);  
}

/\*\*  
 \* 红酒识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function redwine($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->redwineUrl, $data);  
}

/\*\*  
 \* 货币识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function currency($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->currencyUrl, $data);  
}

/\*\*  
 \* 自定义菜品识别—入库  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function customDishesAddImage($image, $brief, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data\['brief'\] = $brief;

    $data = array\_merge($data, $options);

    return $this->request($this->customDishAddUrl, $data);  
}

/\*\*  
 \* 自定义菜品识别—检索  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function customDishesSearch($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->customDishSearchUrl, $data);  
}

/\*\*  
 \* 自定义菜品识别—删除  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function customDishesDeleteImage($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->customDishDeleteUrl, $data);  
}

/\*\*  
 \* 自定义菜品识别—删除  
 \*  
 \* @param string $image - 图像数据签名  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function customDishesDeleteContSign($contSign, $options=array()){

    $data = array();

    $data\['cont\_sign'\] = $contSign;

    $data = array\_merge($data, $options);

    return $this->request($this->customDishDeleteUrl, $data);  
}

/\*\*  
 \* 图像多主体检测  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function multiObjectDetect($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->multiObjectDetectUrl, $data);  
}

/\*\*  
 \* 组合接口-image  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function combinationByImage($image, $scenes, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);  
    $data\['scenes'\] = $scenes;

    $data = array\_merge($data, $options);

    return $this->request($this->combinationUrl, json\_encode($data), array('Content-Type' => 'application/json;charset=utf-8'));  
}

/\*\*  
 \* 组合接口-imageUrl  
 \*  
 \* @param string $imageURl - 图像数据url  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function combinationByImageUrl($imageUrl, $scenes, $options=array()){

    $data = array();

    $data\['imgUrl'\] = $imageUrl;  
    $data\['scenes'\] = $scenes;

    $data = array\_merge($data, $options);

    return $this->request($this->combinationUrl, json\_encode($data), array('Content-Type' => 'application/json;charset=utf-8'));  
}

}

6

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
use App\Libs\baidu\lib\AipBase;

class AipImageProcess extends AipBase {

/\*\*  
 \* 图像无损放大 image\_quality\_enhance api url  
 \* @var string  
 \*/  
private $imageQualityEnhanceUrl = 'https://aip.baidubce.com/rest/2.0/image-process/v1/image\_quality\_enhance';

/\*\*  
 \* 图像去雾 dehaze api url  
 \* @var string  
 \*/  
private $dehazeUrl = 'https://aip.baidubce.com/rest/2.0/image-process/v1/dehaze';

/\*\*  
 \* 图像对比度增强 contrast\_enhance api url  
 \* @var string  
 \*/  
private $contrastEnhanceUrl = 'https://aip.baidubce.com/rest/2.0/image-process/v1/contrast\_enhance';

/\*\*  
 \* 黑白图像上色 colourize api url  
 \* @var string  
 \*/  
private $colourizeUrl = 'https://aip.baidubce.com/rest/2.0/image-process/v1/colourize';

/\*\*  
 \* 拉伸图像恢复 stretch\_restore api url  
 \* @var string  
 \*/  
private $stretchRestoreUrl = 'https://aip.baidubce.com/rest/2.0/image-process/v1/stretch\_restore';

/\*\*  
 \* 风格转换  
 \* @var string  
 \*/  
private $styleTrans = "https://aip.baidubce.com/rest/2.0/image-process/v1/style\_trans";

/\*\*  
 \* 图像修复  
 \* @var string  
 \*/  
private $inpainting = "https://aip.baidubce.com/rest/2.0/image-process/v1/inpainting";

/\*\*  
 \* 图像清晰度增强  
 \* @var string  
 \*/  
private $imageDefinitionEnhance = "https://aip.baidubce.com/rest/2.0/image-process/v1/image\_definition\_enhance";

/\*\*  
 \*人像动漫化  
 \* @var string  
 \*/  
private $selfieAnime = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie\_anime";

/\*\*  
 \* 天空分割  
 \* @var string  
 \*/  
private $skySeg = "https://aip.baidubce.com/rest/2.0/image-process/v1/sky\_seg";

/\*\*  
 \* 图像无损放大接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function imageQualityEnhance($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->imageQualityEnhanceUrl, $data);  
}

/\*\*  
 \* 图像去雾接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function dehaze($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->dehazeUrl, $data);  
}

/\*\*  
 \* 图像对比度增强接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function contrastEnhance($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->contrastEnhanceUrl, $data);  
}

/\*\*  
 \* 黑白图像上色接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function colourize($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->colourizeUrl, $data);  
}

/\*\*  
 \* 拉伸图像恢复接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function stretchRestore($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->stretchRestoreUrl, $data);  
}

/\*\*  
 \* 人像动漫化  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function selfieAnime($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->selfieAnime, $data);  
}

/\*\*  
 \* 图像清晰度增强  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function imageDefinitionEnhance($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->imageDefinitionEnhance, $data);  
}

/\*\*  
 \* 图像风格转换  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function \_\_styleTrans($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->styleTrans, $data);  
}

/\*\*  
 \* 天空分割  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function skySeg($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->skySeg, $data);  
}

/\*\*  
 \* 图像修复  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function inpaintingByMask($image, $rectangle, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);  
    $data\['rectangle'\] = $rectangle;

    $data = array\_merge($data, $options);

    return $this->request($this->inpainting, $data);  
}

}

7:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
use App\Libs\baidu\lib\AipBase;

class AipImageSearch extends AipBase {

/\*\*  
 \* 相同图检索—入库 same\_hq\_add api url  
 \* @var string  
 \*/  
private $sameHqAddUrl = 'https://aip.baidubce.com/rest/2.0/realtime\_search/same\_hq/add';

/\*\*  
 \* 相同图检索—检索 same\_hq\_search api url  
 \* @var string  
 \*/  
private $sameHqSearchUrl = 'https://aip.baidubce.com/rest/2.0/realtime\_search/same\_hq/search';

/\*\*  
 \* 相同图检索—更新 same\_hq\_update api url  
 \* @var string  
 \*/  
private $sameHqUpdateUrl = 'https://aip.baidubce.com/rest/2.0/realtime\_search/same\_hq/update';

/\*\*  
 \* 相同图检索—删除 same\_hq\_delete api url  
 \* @var string  
 \*/  
private $sameHqDeleteUrl = 'https://aip.baidubce.com/rest/2.0/realtime\_search/same\_hq/delete';

/\*\*  
 \* 相似图检索—入库 similar\_add api url  
 \* @var string  
 \*/  
private $similarAddUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/similar/add';

/\*\*  
 \* 相似图检索—检索 similar\_search api url  
 \* @var string  
 \*/  
private $similarSearchUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/similar/search';

/\*\*  
 \* 相似图检索—更新 similar\_update api url  
 \* @var string  
 \*/  
private $similarUpdateUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/similar/update';

/\*\*  
 \* 相似图检索—删除 similar\_delete api url  
 \* @var string  
 \*/  
private $similarDeleteUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/similar/delete';

/\*\*  
 \* 商品检索—入库 product\_add api url  
 \* @var string  
 \*/  
private $productAddUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/product/add';

/\*\*  
 \* 商品检索—检索 product\_search api url  
 \* @var string  
 \*/  
private $productSearchUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/product/search';

/\*\*  
 \* 商品检索—更新 product\_update api url  
 \* @var string  
 \*/  
private $productUpdateUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/product/update';

/\*\*  
 \* 商品检索—删除 product\_delete api url  
 \* @var string  
 \*/  
private $productDeleteUrl = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime\_search/product/delete';

/\*\*  
 \* 绘本图片搜索—入库-image  
 \* @var string  
 \*/  
private $picturebookAdd = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime\_search/picturebook/add";

/\*\*  
 \* 绘本图片搜索—入库-检索  
 \* @var string  
 \*/  
private $picturebookSearch = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime\_search/picturebook/search";

/\*\*  
 \* 绘本图片搜索—入库-删除  
 \* @var string  
 \*/  
private $picturebookDelete = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime\_search/picturebook/delete";

/\*\*  
 \* 绘本图片搜索—入库-更新  
 \* @var string  
 \*/  
private $picturebookUpdate = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime\_search/picturebook/update";

/\*\*  
 \* 相同图检索—入库接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param string $brief - 检索时原样带回,最长256B。  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function sameHqAdd($image, $brief, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);  
    $data\['brief'\] = $brief;

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqAddUrl, $data);  
}

/\*\*  
 \* 相同图检索—入库接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param string $brief - 检索时原样带回,最长256B。  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function sameHqAddUrl($url, $brief, $options=array()){

    $data = array();

    $data\['url'\] = $url;  
    $data\['brief'\] = $brief;

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqAddUrl, $data);  
}

/\*\*  
 \* 相同图检索—检索接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \*   tag\_logic 检索时tag之间的逻辑, 0:逻辑and,1:逻辑or  
 \*   pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条  
 \*   rn 分页功能,截取条数,例:250  
 \* @return array  
 \*/  
public function sameHqSearch($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqSearchUrl, $data);  
}

/\*\*  
 \* 相同图检索—检索接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \*   tag\_logic 检索时tag之间的逻辑, 0:逻辑and,1:逻辑or  
 \*   pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条  
 \*   rn 分页功能,截取条数,例:250  
 \* @return array  
 \*/  
public function sameHqSearchUrl($url, $options=array()){

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqSearchUrl, $data);  
}

/\*\*  
 \* 相同图检索—更新接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function sameHqUpdate($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqUpdateUrl, $data);  
}

/\*\*  
 \* 相同图检索—更新接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function sameHqUpdateUrl($url, $options=array()){

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqUpdateUrl, $data);  
}

/\*\*  
 \* 相同图检索—更新接口  
 \*  
 \* @param string $contSign - 图片签名  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function sameHqUpdateContSign($contSign, $options=array()){

    $data = array();

    $data\['cont\_sign'\] = $contSign;

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqUpdateUrl, $data);  
}

/\*\*  
 \* 相同图检索—删除接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function sameHqDeleteByImage($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqDeleteUrl, $data);  
}

/\*\*  
 \* 相同图检索—删除接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function sameHqDeleteByUrl($url, $options=array()){

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqDeleteUrl, $data);  
}

/\*\*  
 \* 相同图检索—删除接口  
 \*  
 \* @param string $contSign - 图片签名  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function sameHqDeleteBySign($contSign, $options=array()){

    $data = array();

    $data\['cont\_sign'\] = $contSign;

    $data = array\_merge($data, $options);

    return $this->request($this->sameHqDeleteUrl, $data);  
}

/\*\*  
 \* 相似图检索—入库接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param string $brief - 检索时原样带回,最长256B。  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function similarAdd($image, $brief, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);  
    $data\['brief'\] = $brief;

    $data = array\_merge($data, $options);

    return $this->request($this->similarAddUrl, $data);  
}

/\*\*  
 \* 相似图检索—入库接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param string $brief - 检索时原样带回,最长256B。  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function similarAddUrl($url, $brief, $options=array()){

    $data = array();

    $data\['url'\] = $url;  
    $data\['brief'\] = $brief;

    $data = array\_merge($data, $options);

    return $this->request($this->similarAddUrl, $data);  
}

/\*\*  
 \* 相似图检索—检索接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \*   tag\_logic 检索时tag之间的逻辑, 0:逻辑and,1:逻辑or  
 \*   pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条  
 \*   rn 分页功能,截取条数,例:250  
 \* @return array  
 \*/  
public function similarSearch($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->similarSearchUrl, $data);  
}

/\*\*  
 \* 相似图检索—检索接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \*   tag\_logic 检索时tag之间的逻辑, 0:逻辑and,1:逻辑or  
 \*   pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条  
 \*   rn 分页功能,截取条数,例:250  
 \* @return array  
 \*/  
public function similarSearchUrl($url, $options=array()){

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->similarSearchUrl, $data);  
}

/\*\*  
 \* 相似图检索—更新接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function similarUpdate($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->similarUpdateUrl, $data);  
}

/\*\*  
 \* 相似图检索—更新接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function similarUpdateUrl($url, $options=array()){

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->similarUpdateUrl, $data);  
}

/\*\*  
 \* 相似图检索—更新接口  
 \*  
 \* @param string $contSign - 图片签名  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}  
 \*   tags 1 - 65535范围内的整数,tag间以逗号分隔,最多2个tag。样例:"100,11" ;检索时可圈定分类维度进行检索  
 \* @return array  
 \*/  
public function similarUpdateContSign($contSign, $options=array()){

    $data = array();

    $data\['cont\_sign'\] = $contSign;

    $data = array\_merge($data, $options);

    return $this->request($this->similarUpdateUrl, $data);  
}

/\*\*  
 \* 相似图检索—删除接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function similarDeleteByImage($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->similarDeleteUrl, $data);  
}

/\*\*  
 \* 相似图检索—删除接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function similarDeleteByUrl($url, $options=array()){

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->similarDeleteUrl, $data);  
}

/\*\*  
 \* 相似图检索—删除接口  
 \*  
 \* @param string $contSign - 图片签名  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function similarDeleteBySign($contSign, $options=array()){

    $data = array();

    $data\['cont\_sign'\] = $contSign;

    $data = array\_merge($data, $options);

    return $this->request($this->similarDeleteUrl, $data);  
}

/\*\*  
 \* 商品检索—入库接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param string $brief - 检索时原样带回,最长256B。\*\*请注意,检索接口不返回原图,仅反馈当前填写的brief信息,所以调用该入库接口时,brief信息请尽量填写可关联至本地图库的图片id或者图片url、图片名称等信息\*\*  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   class\_id1 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索  
 \*   class\_id2 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索  
 \* @return array  
 \*/  
public function productAdd($image, $brief, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);  
    $data\['brief'\] = $brief;

    $data = array\_merge($data, $options);

    return $this->request($this->productAddUrl, $data);  
}

/\*\*  
 \* 商品检索—入库接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param string $brief - 检索时原样带回,最长256B。\*\*请注意,检索接口不返回原图,仅反馈当前填写的brief信息,所以调用该入库接口时,brief信息请尽量填写可关联至本地图库的图片id或者图片url、图片名称等信息\*\*  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   class\_id1 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索  
 \*   class\_id2 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索  
 \* @return array  
 \*/  
public function productAddUrl($url, $brief, $options=array()){

    $data = array();

    $data\['url'\] = $url;  
    $data\['brief'\] = $brief;

    $data = array\_merge($data, $options);

    return $this->request($this->productAddUrl, $data);  
}

/\*\*  
 \* 商品检索—检索接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   class\_id1 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索  
 \*   class\_id2 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索  
 \*   pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条  
 \*   rn 分页功能,截取条数,例:250  
 \* @return array  
 \*/  
public function productSearch($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->productSearchUrl, $data);  
}

/\*\*  
 \* 商品检索—检索接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   class\_id1 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索  
 \*   class\_id2 商品分类维度1,支持1-65535范围内的整数。检索时可圈定该分类维度进行检索  
 \*   pn 分页功能,起始位置,例:0。未指定分页时,默认返回前300个结果;接口返回数量最大限制1000条,例如:起始位置为900,截取条数500条,接口也只返回第900 - 1000条的结果,共计100条  
 \*   rn 分页功能,截取条数,例:250  
 \* @return array  
 \*/  
public function productSearchUrl($url, $options=array()){

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->productSearchUrl, $data);  
}

/\*\*  
 \* 商品检索—更新接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}  
 \*   class\_id1 更新的商品分类1,支持1-65535范围内的整数。  
 \*   class\_id2 更新的商品分类2,支持1-65535范围内的整数。  
 \* @return array  
 \*/  
public function productUpdate($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->productUpdateUrl, $data);  
}

/\*\*  
 \* 商品检索—更新接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}  
 \*   class\_id1 更新的商品分类1,支持1-65535范围内的整数。  
 \*   class\_id2 更新的商品分类2,支持1-65535范围内的整数。  
 \* @return array  
 \*/  
public function productUpdateUrl($url, $options=array()){

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->productUpdateUrl, $data);  
}

/\*\*  
 \* 商品检索—更新接口  
 \*  
 \* @param string $contSign - 图片签名  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   brief 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}  
 \*   class\_id1 更新的商品分类1,支持1-65535范围内的整数。  
 \*   class\_id2 更新的商品分类2,支持1-65535范围内的整数。  
 \* @return array  
 \*/  
public function productUpdateContSign($contSign, $options=array()){

    $data = array();

    $data\['cont\_sign'\] = $contSign;

    $data = array\_merge($data, $options);

    return $this->request($this->productUpdateUrl, $data);  
}

/\*\*  
 \* 商品检索—删除接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function productDeleteByImage($image, $options=array()){

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->productDeleteUrl, $data);  
}

/\*\*  
 \* 商品检索—删除接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function productDeleteByUrl($url, $options=array()){

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->productDeleteUrl, $data);  
}

/\*\*  
 \* 商品检索—删除接口  
 \*  
 \* @param string $contSign - 图片签名  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function productDeleteBySign($contSign, $options=array()){

    $data = array();

    $data\['cont\_sign'\] = $contSign;

    $data = array\_merge($data, $options);

    return $this->request($this->productDeleteUrl, $data);  
}

/\*\*  
 \* 绘本图片搜索—入库-image  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param string $brief - 简介  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookAddImage($image, $brief, $options=array())  
{  
    $data = array();  
    $data\['image'\] = base64\_encode($image);  
    $data\['brief'\] = $brief;  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookAdd, $data);  
}

/\*\*  
 \* 绘本图片搜索—入库-url  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param string $brief - 简介  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookAddUrl($url, $brief, $options=array())  
{  
    $data = array();  
    $data\['url'\] = $url;  
    $data\['brief'\] = $brief;  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookAdd, $data);  
}

/\*\*  
 \* 绘本图片搜索—检索-image  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookSearchImage($image, $options=array()) {  
    $data = array();  
    $data\['image'\] = base64\_encode($image);  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookSearch, $data);  
}

/\*\*  
 \* 绘本图片搜索—检索-url  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookSearchUrl($url, $options=array()) {  
    $data = array();  
    $data\['url'\] = $url;  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookSearch, $data);  
}

/\*\*  
 \* 绘本图片搜索—更新-image  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookUpdate($image, $options=array()) {  
    $data = array();  
    $data\['image'\] = base64\_encode($image);  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookUpdate, $data);  
}

/\*\*  
 \* 绘本图片搜索—更新-url  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookUpdateUrl($url, $options=array())  
{  
    $data = array();  
    $data\['url'\] = $url;  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookUpdate, $data);  
}

/\*\*  
 \* 绘本图片搜索—更新-cont\_sign  
 \*  
 \* @param string $contSign - 图片签名  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookUpdateContSign($contSign, $options=array())  
{  
    $data = array();  
    $data\['cont\_sign'\] = $contSign;  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookUpdate, $data);  
}

/\*\*  
 \* 绘本图片搜索—删除-image  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookDeleteByImage($image, $options=array())  
{  
    $data = array();  
    $data\['image'\] = base64\_encode($image);  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookDelete, $data);  
}

/\*\*  
 \* 绘本图片搜索—删除-url  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookDeleteByUrl($url, $options=array())  
{  
    $data = array();  
    $data\['url'\] = $url;  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookDelete, $data);  
}

/\*\*  
 \* 绘本图片搜索—删除-cont\_sign  
 \* @param string $contSign - 图片签名  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function  pictureBookDeleteBySign($contSign, $options=array())  
{  
    $data = array();  
    $data\['cont\_sign'\] = $contSign;  
    $data = array\_merge($data, $options);  
    return $this->request($this->picturebookDelete, $data);  
}

}

8:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
use App\Libs\baidu\lib\AipBase;

class AipKg extends AipBase {

/\*\*  
 \* 创建任务 create\_task api url  
 \* @var string  
 \*/  
private $createTaskUrl = 'https://aip.baidubce.com/rest/2.0/kg/v1/pie/task\_create';

/\*\*  
 \* 更新任务 update\_task api url  
 \* @var string  
 \*/  
private $updateTaskUrl = 'https://aip.baidubce.com/rest/2.0/kg/v1/pie/task\_update';

/\*\*  
 \* 获取任务详情 task\_info api url  
 \* @var string  
 \*/  
private $taskInfoUrl = 'https://aip.baidubce.com/rest/2.0/kg/v1/pie/task\_info';

/\*\*  
 \* 以分页的方式查询当前用户所有的任务信息 task\_query api url  
 \* @var string  
 \*/  
private $taskQueryUrl = 'https://aip.baidubce.com/rest/2.0/kg/v1/pie/task\_query';

/\*\*  
 \* 启动任务 task\_start api url  
 \* @var string  
 \*/  
private $taskStartUrl = 'https://aip.baidubce.com/rest/2.0/kg/v1/pie/task\_start';

/\*\*  
 \* 查询任务状态 task\_status api url  
 \* @var string  
 \*/  
private $taskStatusUrl = 'https://aip.baidubce.com/rest/2.0/kg/v1/pie/task\_status';

/\*\*  
 \* 创建任务接口  
 \*  
 \* @param string $name - 任务名字  
 \* @param string $templateContent - json string 解析模板内容  
 \* @param string $inputMappingFile - 抓取结果映射文件的路径  
 \* @param string $outputFile - 输出文件名字  
 \* @param string $urlPattern - url pattern  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   limit\_count 限制解析数量limit\_count为0时进行全量任务,limit\_count&gt;0时只解析limit\_count数量的页面  
 \* @return array  
 \*/  
public function createTask($name, $templateContent, $inputMappingFile, $outputFile, $urlPattern, $options=array()){

    $data = array();

    $data\['name'\] = $name;  
    $data\['template\_content'\] = $templateContent;  
    $data\['input\_mapping\_file'\] = $inputMappingFile;  
    $data\['output\_file'\] = $outputFile;  
    $data\['url\_pattern'\] = $urlPattern;

    $data = array\_merge($data, $options);

    return $this->request($this->createTaskUrl, $data);  
}

/\*\*  
 \* 更新任务接口  
 \*  
 \* @param integer $id - 任务ID  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   name 任务名字  
 \*   template\_content json string 解析模板内容  
 \*   input\_mapping\_file 抓取结果映射文件的路径  
 \*   url\_pattern url pattern  
 \*   output\_file 输出文件名字  
 \* @return array  
 \*/  
public function updateTask($id, $options=array()){

    $data = array();

    $data\['id'\] = $id;

    $data = array\_merge($data, $options);

    return $this->request($this->updateTaskUrl, $data);  
}

/\*\*  
 \* 获取任务详情接口  
 \*  
 \* @param integer $id - 任务ID  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function getTaskInfo($id, $options=array()){

    $data = array();

    $data\['id'\] = $id;

    $data = array\_merge($data, $options);

    return $this->request($this->taskInfoUrl, $data);  
}

/\*\*  
 \* 以分页的方式查询当前用户所有的任务信息接口  
 \*  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   id 任务ID,精确匹配  
 \*   name 中缀模糊匹配,abc可以匹配abc,aaabc,abcde等  
 \*   status 要筛选的任务状态  
 \*   page 页码  
 \*   per\_page 页码  
 \* @return array  
 \*/  
public function getUserTasks($options=array()){

    $data = array();

    $data = array\_merge($data, $options);

    return $this->request($this->taskQueryUrl, $data);  
}

/\*\*  
 \* 启动任务接口  
 \*  
 \* @param integer $id - 任务ID  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function startTask($id, $options=array()){

    $data = array();

    $data\['id'\] = $id;

    $data = array\_merge($data, $options);

    return $this->request($this->taskStartUrl, $data);  
}

/\*\*  
 \* 查询任务状态接口  
 \*  
 \* @param integer $id - 任务ID  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function getTaskStatus($id, $options=array()){

    $data = array();

    $data\['id'\] = $id;

    $data = array\_merge($data, $options);

    return $this->request($this->taskStatusUrl, $data);  
}  

}

9:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
use App\Libs\baidu\lib\AipBase;

class AipNlp extends AipBase
{

/\*\*  
 \* 词法分析 lexer api url  
 \* @var string  
 \*/  
private $lexerUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer';

/\*\*  
 \* 词法分析(定制版) lexer\_custom api url  
 \* @var string  
 \*/  
private $lexerCustomUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer\_custom';

/\*\*  
 \* 依存句法分析 dep\_parser api url  
 \* @var string  
 \*/  
private $depParserUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/depparser';

/\*\*  
 \* 词向量表示 word\_embedding api url  
 \* @var string  
 \*/  
private $wordEmbeddingUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v2/word\_emb\_vec';

/\*\*  
 \* DNN语言模型 dnnlm\_cn api url  
 \* @var string  
 \*/  
private $dnnlmCnUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v2/dnnlm\_cn';

/\*\*  
 \* 词义相似度 word\_sim\_embedding api url  
 \* @var string  
 \*/  
private $wordSimEmbeddingUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v2/word\_emb\_sim';

/\*\*  
 \* 短文本相似度 simnet api url  
 \* @var string  
 \*/  
private $simnetUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v2/simnet';

/\*\*  
 \* 评论观点抽取 comment\_tag api url  
 \* @var string  
 \*/  
private $commentTagUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v2/comment\_tag';

/\*\*  
 \* 情感倾向分析 sentiment\_classify api url  
 \* @var string  
 \*/  
private $sentimentClassifyUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment\_classify';

/\*\*  
 \* 文章标签 keyword api url  
 \* @var string  
 \*/  
private $keywordUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/keyword';

/\*\*  
 \* 文章分类 topic api url  
 \* @var string  
 \*/  
private $topicUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/topic';

/\*\*  
 \* 文本纠错 ecnet api url  
 \* @var string  
 \*/  
private $ecnetUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/ecnet';

/\*\*  
 \* 对话情绪识别接口 emotion api url  
 \* @var string  
 \*/  
private $emotionUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/emotion';

/\*\*  
 \* 新闻摘要接口 news\_summary api url  
 \* @var string  
 \*/  
private $newsSummaryUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/news\_summary';

/\*\*  
 \* 地址识别接口 address api url  
 \* @var string  
 \*/  
private $addressUrl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/address';

/\*\*  
 \* 格式化结果  
 \* @param $content string  
 \* @return mixed  
 \*/  
protected function proccessResult($content)  
{  
    $result = null;  
    $result = json\_decode(mb\_convert\_encoding($content, 'UTF8', 'GBK'), true, 512, JSON\_BIGINT\_AS\_STRING);  
    if ($result == null) {  
        $result = json\_decode($content, true, 512, JSON\_BIGINT\_AS\_STRING);  
    }  
    return $result;  
}

/\*\*  
 \* 词法分析接口  
 \*  
 \* @param string $text - 待分析文本(目前仅支持GBK编码),长度不超过65536字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function lexer($text, $options = array())  
{

    $data = array();

    $data\['text'\] = $text;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->lexerUrl, $data);  
}

/\*\*  
 \* 词法分析(定制版)接口  
 \*  
 \* @param string $text - 待分析文本(目前仅支持GBK编码),长度不超过65536字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function lexerCustom($text, $options = array())  
{

    $data = array();

    $data\['text'\] = $text;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->lexerCustomUrl, $data);  
}

/\*\*  
 \* 依存句法分析接口  
 \*  
 \* @param string $text - 待分析文本(目前仅支持GBK编码),长度不超过256字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   mode 模型选择。默认值为0,可选值mode=0(对应web模型);mode=1(对应query模型)  
 \* @return array  
 \*/  
public function depParser($text, $options = array())  
{

    $data = array();

    $data\['text'\] = $text;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->depParserUrl, $data);  
}

/\*\*  
 \* 词向量表示接口  
 \*  
 \* @param string $word - 文本内容(GBK编码),最大64字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function wordEmbedding($word, $options = array())  
{

    $data = array();

    $data\['word'\] = $word;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->wordEmbeddingUrl, $data);  
}

/\*\*  
 \* DNN语言模型接口  
 \*  
 \* @param string $text - 文本内容(GBK编码),最大512字节,不需要切词  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function dnnlm($text, $options = array())  
{

    $data = array();

    $data\['text'\] = $text;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->dnnlmCnUrl, $data);  
}

/\*\*  
 \* 词义相似度接口  
 \*  
 \* @param string $word1 - 词1(GBK编码),最大64字节  
 \* @param string $word2 - 词1(GBK编码),最大64字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   mode 预留字段,可选择不同的词义相似度模型。默认值为0,目前仅支持mode=0  
 \* @return array  
 \*/  
public function wordSimEmbedding($word1, $word2, $options = array())  
{

    $data = array();

    $data\['word\_1'\] = $word1;  
    $data\['word\_2'\] = $word2;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->wordSimEmbeddingUrl, $data);  
}

/\*\*  
 \* 短文本相似度接口  
 \*  
 \* @param string $text1 - 待比较文本1(GBK编码),最大512字节  
 \* @param string $text2 - 待比较文本2(GBK编码),最大512字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   model 默认为"BOW",可选"BOW"、"CNN"与"GRNN"  
 \* @return array  
 \*/  
public function simnet($text1, $text2, $options = array())  
{

    $data = array();

    $data\['text\_1'\] = $text1;  
    $data\['text\_2'\] = $text2;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->simnetUrl, $data);  
}

/\*\*  
 \* 评论观点抽取接口  
 \*  
 \* @param string $text - 评论内容(GBK编码),最大10240字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   type 评论行业类型,默认为4(餐饮美食)  
 \* @return array  
 \*/  
public function commentTag($text, $options = array())  
{

    $data = array();

    $data\['text'\] = $text;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->commentTagUrl, $data);  
}

/\*\*  
 \* 情感倾向分析接口  
 \*  
 \* @param string $text - 文本内容(GBK编码),最大102400字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function sentimentClassify($text, $options = array())  
{

    $data = array();

    $data\['text'\] = $text;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->sentimentClassifyUrl, $data);  
}

/\*\*  
 \* 文章标签接口  
 \*  
 \* @param string $title - 篇章的标题,最大80字节  
 \* @param string $content - 篇章的正文,最大65535字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function keyword($title, $content, $options = array())  
{

    $data = array();

    $data\['title'\] = $title;  
    $data\['content'\] = $content;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->keywordUrl, $data);  
}

/\*\*  
 \* 文章分类接口  
 \*  
 \* @param string $title - 篇章的标题,最大80字节  
 \* @param string $content - 篇章的正文,最大65535字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function topic($title, $content, $options = array())  
{

    $data = array();

    $data\['title'\] = $title;  
    $data\['content'\] = $content;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->topicUrl, $data);  
}

/\*\*  
 \* 文本纠错接口  
 \*  
 \* @param string $text - 待纠错文本,输入限制511字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function ecnet($text, $options = array())  
{

    $data = array();

    $data\['text'\] = $text;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->ecnetUrl, $data);  
}

/\*\*  
 \* 对话情绪识别接口接口  
 \*  
 \* @param string $text - 待识别情感文本,输入限制512字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   scene default(默认项-不区分场景),talk(闲聊对话-如度秘聊天等),task(任务型对话-如导航对话等),customer\_service(客服对话-如电信/银行客服等)  
 \* @return array  
 \*/  
public function emotion($text, $options = array())  
{

    $data = array();

    $data\['text'\] = $text;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->emotionUrl, $data);  
}

/\*\*  
 \* 新闻摘要接口接口  
 \*  
 \* @param string $content - 字符串(限3000字符数以内)字符串仅支持GBK编码,长度需小于3000字符数(即6000字节),请输入前确认字符数没有超限,若字符数超长会返回错误。正文中如果包含段落信息,请使用"\\n"分隔,段落信息算法中有重要的作用,请尽量保留  
 \* @param integer $maxSummaryLen - 此数值将作为摘要结果的最大长度。例如:原文长度1000字,本参数设置为150,则摘要结果的最大长度是150字;推荐最优区间:200-500字  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   title 字符串(限200字符数)字符串仅支持GBK编码,长度需小于200字符数(即400字节),请输入前确认字符数没有超限,若字符数超长会返回错误。标题在算法中具有重要的作用,若文章确无标题,输入参数的“标题”字段为空即可  
 \* @return array  
 \*/  
public function newsSummary($content, $maxSummaryLen, $options = array())  
{

    $data = array();

    $data\['content'\] = $content;  
    $data\['max\_summary\_len'\] = $maxSummaryLen;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');

    return $this->request($this->newsSummaryUrl, $data);  
}

/\*\*  
 \* 地址识别接口接口  
 \*  
 \* @param string $text - 待识别的文本内容,不超过1000字节  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function address($text, $options = array())  
{

    $data = array();

    $data\['text'\] = $text;

    $data = array\_merge($data, $options);  
    $data = mb\_convert\_encoding(json\_encode($data), 'GBK', 'UTF8');  
    $headers\['Content-Encoding'\] = "GBK";

    return $this->request($this->addressUrl, $data, $headers);  
}  

}

10:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
use App\Libs\baidu\lib\AipBase;

class AipOcr extends AipBase
{

/\*\*  
 \* 通用文字识别 general\_basic api url  
 \* @var string  
 \*/  
private $generalBasicUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general\_basic';

/\*\*  
 \* 通用文字识别(高精度版) accurate\_basic api url  
 \* @var string  
 \*/  
private $accurateBasicUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate\_basic';

/\*\*  
 \* 通用文字识别(含位置信息版) general api url  
 \* @var string  
 \*/  
private $generalUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general';

/\*\*  
 \* 通用文字识别(含位置高精度版) accurate api url  
 \* @var string  
 \*/  
private $accurateUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate';

/\*\*  
 \* 通用文字识别(含生僻字版) general\_enhanced api url  
 \* @var string  
 \*/  
private $generalEnhancedUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general\_enhanced';

/\*\*  
 \* 网络图片文字识别 web\_image api url  
 \* @var string  
 \*/  
private $webImageUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/webimage';

/\*\*  
 \* 身份证识别 idcard api url  
 \* @var string  
 \*/  
private $idcardUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard';

/\*\*  
 \* 银行卡识别 bankcard api url  
 \* @var string  
 \*/  
private $bankcardUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/bankcard';

/\*\*  
 \* 驾驶证识别 driving\_license api url  
 \* @var string  
 \*/  
private $drivingLicenseUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/driving\_license';

/\*\*  
 \* 行驶证识别 vehicle\_license api url  
 \* @var string  
 \*/  
private $vehicleLicenseUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle\_license';

/\*\*  
 \* 车牌识别 license\_plate api url  
 \* @var string  
 \*/  
private $licensePlateUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/license\_plate';

/\*\*  
 \* 营业执照识别 business\_license api url  
 \* @var string  
 \*/  
private $businessLicenseUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/business\_license';

/\*\*  
 \* 通用票据识别 receipt api url  
 \* @var string  
 \*/  
private $receiptUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/receipt';

/\*\*  
 \* 火车票识别 train\_ticket api url  
 \* @var string  
 \*/  
private $trainTicketUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/train\_ticket';

/\*\*  
 \* 出租车票识别 taxi\_receipt api url  
 \* @var string  
 \*/  
private $taxiReceiptUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/taxi\_receipt';

/\*\*  
 \* 表格文字识别同步接口 form api url  
 \* @var string  
 \*/  
private $formUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/form';

/\*\*  
 \* 表格文字识别 table\_recognize api url  
 \* @var string  
 \*/  
private $tableRecognizeUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/form\_ocr/request';

/\*\*  
 \* 表格识别结果 table\_result\_get api url  
 \* @var string  
 \*/  
private $tableResultGetUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/form\_ocr/get\_request\_result';

/\*\*  
 \* VIN码识别 vin\_code api url  
 \* @var string  
 \*/  
private $vinCodeUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/vin\_code';

/\*\*  
 \* 定额发票识别 quota\_invoice api url  
 \* @var string  
 \*/  
private $quotaInvoiceUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/quota\_invoice';

/\*\*  
 \* 户口本识别 household\_register api url  
 \* @var string  
 \*/  
private $householdRegisterUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/household\_register';

/\*\*  
 \* 港澳通行证识别 HK\_Macau\_exitentrypermit api url  
 \* @var string  
 \*/  
private $HKMacauExitentrypermitUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/HK\_Macau\_exitentrypermit';

/\*\*  
 \* 台湾通行证识别 taiwan\_exitentrypermit api url  
 \* @var string  
 \*/  
private $taiwanExitentrypermitUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/taiwan\_exitentrypermit';

/\*\*  
 \* 出生医学证明识别 birth\_certificate api url  
 \* @var string  
 \*/  
private $birthCertificateUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/birth\_certificate';

/\*\*  
 \* 机动车销售发票识别 vehicle\_invoice api url  
 \* @var string  
 \*/  
private $vehicleInvoiceUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle\_invoice';

/\*\*  
 \* 车辆合格证识别 vehicle\_certificate api url  
 \* @var string  
 \*/  
private $vehicleCertificateUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle\_certificate';

/\*\*  
 \* 税务局通用机打发票识别 invoice api url  
 \* @var string  
 \*/  
private $invoiceUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/invoice';

/\*\*  
 \* 行程单识别 air\_ticket api url  
 \* @var string  
 \*/  
private $airTicketUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/air\_ticket';

/\*\*  
 \* 保单识别 insurance\_documents api url  
 \* @var string  
 \*/  
private $insuranceDocumentsUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/insurance\_documents';

/\*\*  
 \* 增值税发票识别 vat\_invoice api url  
 \* @var string  
 \*/  
private $vatInvoiceUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/vat\_invoice';

/\*\*  
 \* 二维码识别 qrcode api url  
 \* @var string  
 \*/  
private $qrcodeUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/qrcode';

/\*\*  
 \* 数字识别 numbers api url  
 \* @var string  
 \*/  
private $numbersUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/numbers';

/\*\*  
 \* 彩票识别 lottery api url  
 \* @var string  
 \*/  
private $lotteryUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/lottery';

/\*\*  
 \* 护照识别 passport api url  
 \* @var string  
 \*/  
private $passportUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/passport';

/\*\*  
 \* 名片识别 business\_card api url  
 \* @var string  
 \*/  
private $businessCardUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/business\_card';

/\*\*  
 \* 手写文字识别 handwriting api url  
 \* @var string  
 \*/  
private $handwritingUrl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting';

/\*\*  
 \* 自定义模板文字识别 custom api url  
 \* @var string  
 \*/  
private $customUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/iocr/recognise';

/\*\*  
 \* 文档版面分析与识别  
 \* @var string  
 \*/  
private $docAnalysis = "https://aip.baidubce.com/rest/2.0/ocr/v1/doc\_analysis";

/\*\*  
 \* 仪器仪表盘读数识别  
 \* @var string  
 \*/  
private $meter = "https://aip.baidubce.com/rest/2.0/ocr/v1/meter";

/\*\*  
 \* 网络图片文字识别(含位置版)  
 \* @var string  
 \*/  
private $webimageLoc = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage\_loc";

/\*\*  
 \* 通用文字识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   language\_type 识别语言类型,默认为CHN\_ENG。可选值包括:<br>- CHN\_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   detect\_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)  
 \*   probability 是否返回识别结果中每一行的置信度  
 \* @return array  
 \*/  
public function basicGeneral($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->generalBasicUrl, $data);  
}

/\*\*  
 \* 通用文字识别接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   language\_type 识别语言类型,默认为CHN\_ENG。可选值包括:<br>- CHN\_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   detect\_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)  
 \*   probability 是否返回识别结果中每一行的置信度  
 \* @return array  
 \*/  
public function basicGeneralUrl($url, $options = array())  
{

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->generalBasicUrl, $data);  
}

/\*\*  
 \* 通用文字识别(高精度版)接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   probability 是否返回识别结果中每一行的置信度  
 \* @return array  
 \*/  
public function basicAccurate($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->accurateBasicUrl, $data);  
}

/\*\*  
 \* 通用文字识别(含位置信息版)接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   recognize\_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置  
 \*   language\_type 识别语言类型,默认为CHN\_ENG。可选值包括:<br>- CHN\_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   detect\_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)  
 \*   vertexes\_location 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false  
 \*   probability 是否返回识别结果中每一行的置信度  
 \* @return array  
 \*/  
public function general($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->generalUrl, $data);  
}

/\*\*  
 \* 通用文字识别(含位置信息版)接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   recognize\_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置  
 \*   language\_type 识别语言类型,默认为CHN\_ENG。可选值包括:<br>- CHN\_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   detect\_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)  
 \*   vertexes\_location 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false  
 \*   probability 是否返回识别结果中每一行的置信度  
 \* @return array  
 \*/  
public function generalUrl($url, $options = array())  
{

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->generalUrl, $data);  
}

/\*\*  
 \* 通用文字识别(含位置高精度版)接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   recognize\_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   vertexes\_location 是否返回文字外接多边形顶点位置,不支持单字位置。默认为false  
 \*   probability 是否返回识别结果中每一行的置信度  
 \* @return array  
 \*/  
public function accurate($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->accurateUrl, $data);  
}

/\*\*  
 \* 通用文字识别(含生僻字版)接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   language\_type 识别语言类型,默认为CHN\_ENG。可选值包括:<br>- CHN\_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   detect\_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)  
 \*   probability 是否返回识别结果中每一行的置信度  
 \* @return array  
 \*/  
public function enhancedGeneral($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->generalEnhancedUrl, $data);  
}

/\*\*  
 \* 通用文字识别(含生僻字版)接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   language\_type 识别语言类型,默认为CHN\_ENG。可选值包括:<br>- CHN\_ENG:中英文混合;<br>- ENG:英文;<br>- POR:葡萄牙语;<br>- FRE:法语;<br>- GER:德语;<br>- ITA:意大利语;<br>- SPA:西班牙语;<br>- RUS:俄语;<br>- JAP:日语;<br>- KOR:韩语;  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   detect\_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)  
 \*   probability 是否返回识别结果中每一行的置信度  
 \* @return array  
 \*/  
public function enhancedGeneralUrl($url, $options = array())  
{

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->generalEnhancedUrl, $data);  
}

/\*\*  
 \* 网络图片文字识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   detect\_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)  
 \* @return array  
 \*/  
public function webImage($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->webImageUrl, $data);  
}

/\*\*  
 \* 网络图片文字识别接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   detect\_language 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语)  
 \* @return array  
 \*/  
public function webImageUrl($url, $options = array())  
{

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->webImageUrl, $data);  
}

/\*\*  
 \* 身份证识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param string $idCardSide - front:身份证含照片的一面;back:身份证带国徽的一面  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   detect\_risk 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能,默认不开启,即:false。可选值:true-开启;false-不开启  
 \* @return array  
 \*/  
public function idcard($image, $idCardSide, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);  
    $data\['id\_card\_side'\] = $idCardSide;

    $data = array\_merge($data, $options);

    return $this->request($this->idcardUrl, $data);  
}

/\*\*  
 \* 银行卡识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function bankcard($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->bankcardUrl, $data);  
}

/\*\*  
 \* 驾驶证识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \* @return array  
 \*/  
public function drivingLicense($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->drivingLicenseUrl, $data);  
}

/\*\*  
 \* 行驶证识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \*   accuracy normal 使用快速服务,1200ms左右时延;缺省或其它值使用高精度服务,1600ms左右时延  
 \* @return array  
 \*/  
public function vehicleLicense($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->vehicleLicenseUrl, $data);  
}

/\*\*  
 \* 车牌识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   multi\_detect 是否检测多张车牌,默认为false,当置为true的时候可以对一张图片内的多张车牌进行识别  
 \* @return array  
 \*/  
public function licensePlate($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->licensePlateUrl, $data);  
}

/\*\*  
 \* 营业执照识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function businessLicense($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->businessLicenseUrl, $data);  
}

/\*\*  
 \* 通用票据识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   recognize\_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置  
 \*   probability 是否返回识别结果中每一行的置信度  
 \*   accuracy normal 使用快速服务,1200ms左右时延;缺省或其它值使用高精度服务,1600ms左右时延  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \* @return array  
 \*/  
public function receipt($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->receiptUrl, $data);  
}

/\*\*  
 \* 火车票识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function trainTicket($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->trainTicketUrl, $data);  
}

/\*\*  
 \* 火车票识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function trainTicketUrl($image, $options = array())  
{

    $data = array();

    $data\['url'\] = $image;

    $data = array\_merge($data, $options);

    return $this->request($this->trainTicketUrl, $data);  
}

/\*\*  
 \* 出租车票识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function taxiReceipt($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->taxiReceiptUrl, $data);  
}

/\*\*  
 \* 出租车票识别接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function taxiReceiptUrl($image, $options = array())  
{

    $data = array();

    $data\['url'\] = $image;

    $data = array\_merge($data, $options);

    return $this->request($this->taxiReceiptUrl, $data);  
}

/\*\*  
 \* 表格文字识别同步接口接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function form($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->formUrl, $data);  
}

/\*\*  
 \* 表格文字识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function tableRecognitionAsync($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->tableRecognizeUrl, $data);  
}

/\*\*  
 \* 表格识别结果接口  
 \*  
 \* @param string $requestId - 发送表格文字识别请求时返回的request id  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   result\_type 期望获取结果的类型,取值为“excel”时返回xls文件的地址,取值为“json”时返回json格式的字符串,默认为”excel”  
 \* @return array  
 \*/  
public function getTableRecognitionResult($requestId, $options = array())  
{

    $data = array();

    $data\['request\_id'\] = $requestId;

    $data = array\_merge($data, $options);

    return $this->request($this->tableResultGetUrl, $data);  
}

/\*\*  
 \* VIN码识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function vinCode($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->vinCodeUrl, $data);  
}

/\*\*  
 \* VIN码识别接口  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function vinCodeUrl($image, $options = array())  
{

    $data = array();

    $data\['url'\] = $image;

    $data = array\_merge($data, $options);

    return $this->request($this->vinCodeUrl, $data);  
}

/\*\*  
 \* 定额发票识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function quotaInvoice($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->quotaInvoiceUrl, $data);  
}

/\*\*  
 \* 户口本识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function householdRegister($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->householdRegisterUrl, $data);  
}

/\*\*  
 \* 港澳通行证识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function HKMacauExitentrypermit($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->HKMacauExitentrypermitUrl, $data);  
}

/\*\*  
 \* 台湾通行证识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function taiwanExitentrypermit($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->taiwanExitentrypermitUrl, $data);  
}

/\*\*  
 \* 出生医学证明识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function birthCertificate($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->birthCertificateUrl, $data);  
}

/\*\*  
 \* 机动车销售发票识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function vehicleInvoice($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->vehicleInvoiceUrl, $data);  
}

/\*\*  
 \* 车辆合格证识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function vehicleCertificate($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->vehicleCertificateUrl, $data);  
}

/\*\*  
 \* 税务局通用机打发票识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   location 是否输出位置信息,true:输出位置信息,false:不输出位置信息,默认false  
 \* @return array  
 \*/  
public function invoice($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->invoiceUrl, $data);  
}

/\*\*  
 \* 行程单识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   location 是否输出位置信息,true:输出位置信息,false:不输出位置信息,默认false  
 \* @return array  
 \*/  
public function airTicket($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->airTicketUrl, $data);  
}

/\*\*  
 \* 保单识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   rkv\_business 是否进行商业逻辑处理,rue:进行商业逻辑处理,false:不进行商业逻辑处理,默认true  
 \* @return array  
 \*/  
public function insuranceDocuments($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->insuranceDocumentsUrl, $data);  
}

/\*\*  
 \* 增值税发票识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function vatInvoice($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->vatInvoiceUrl, $data);  
}

/\*\*  
 \* 增值税发票识别接口  
 \*  
 \* @param string $url - 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   string type 进行识别的增值税发票类型,默认为 normal,可缺省  
 \*           - normal:可识别增值税普票、专票、电子发票  
 \*           - roll:可识别增值税卷票  
 \* @return array  
 \*/  
public function vatInvoiceUrl($url, $options = array())  
{

    $data = array();

    $data\['url'\] = $url;

    $data = array\_merge($data, $options);

    return $this->request($this->vatInvoiceUrl, $data);  
}

/\*\*  
 \* 增值税发票识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表  
 \*   string type 进行识别的增值税发票类型,默认为 normal,可缺省  
 \*           - normal:可识别增值税普票、专票、电子发票  
 \*           - roll:可识别增值税卷票  
 \* @return array  
 \*/  
public function vatInvoicePdf($pdfFile, $options = array())  
{

    $data = array();

    $data\['pdf\_file'\] = base64\_encode($pdfFile);

    $data = array\_merge($data, $options);

    return $this->request($this->vatInvoiceUrl, $data);  
}

/\*\*  
 \* 二维码识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function qrcode($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->qrcodeUrl, $data);  
}

/\*\*  
 \* 数字识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   recognize\_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置  
 \*   detect\_direction 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:<br>- true:检测朝向;<br>- false:不检测朝向。  
 \* @return array  
 \*/  
public function numbers($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->numbersUrl, $data);  
}

/\*\*  
 \* 彩票识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   recognize\_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置  
 \* @return array  
 \*/  
public function lottery($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->lotteryUrl, $data);  
}

/\*\*  
 \* 护照识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function passport($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->passportUrl, $data);  
}

/\*\*  
 \* 名片识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \* @return array  
 \*/  
public function businessCard($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->businessCardUrl, $data);  
}

/\*\*  
 \* 手写文字识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   recognize\_granularity 是否定位单字符位置,big:不定位单字符位置,默认值;small:定位单字符位置  
 \* @return array  
 \*/  
public function handwriting($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->handwritingUrl, $data);  
}

/\*\*  
 \* 自定义模板文字识别接口  
 \*  
 \* @param string $image - 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式  
 \* @param array $options - 可选参数对象,key: value都为string类型  
 \* @description options列表:  
 \*   templateSign 您在自定义文字识别平台制作的模板的ID  
 \*   classifierId 分类器Id。这个参数和templateSign至少存在一个,优先使用templateSign。存在templateSign时,表示使用指定模板;如果没有templateSign而有classifierId,表示使用分类器去判断使用哪个模板  
 \* @return array  
 \*/  
public function custom($image, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    $data = array\_merge($data, $options);

    return $this->request($this->customUrl, $data);  
}

/\*\*  
 \* 同步请求  
 \* @param string $image 图像读取  
 \* @param options 接口可选参数  
 \* @return array  
 \*/  
public function tableRecognition($image, $options = array(), $timeout = 10000)  
{  
    $result = $this->tableRecognitionAsync($image);  
    if (isset($result\['error\_code'\])) {  
        return $result;  
    }  
    $requestId = $result\['result'\]\[0\]\['request\_id'\];  
    $count = ceil($timeout / 1000);  
    for ($i = 0; $i < $count; $i++) {  
        $result = $this->getTableRecognitionResult($requestId, $options);  
        // 完成  
        if ($result\['result'\]\['ret\_code'\] == 3) {  
            break;  
        }  
        sleep(1);  
    }  
    return $result;  
}

/\*\*  
 \* 文档版面分析与识别  
 \*  
 \* @param string $image  
 \* @param string $languageType  
 \* @param string $resultType  
 \* @param bool $detectDirection  
 \* @param bool $lineProbability  
 \* @param null $wordsType  
 \* @param null $layoutAnalysis  
 \* @param array $options  
 \* @return bool|mix|mixed|string|string\[\]  
 \*/  
public function docAnalysis($image, $languageType, $resultType, $options = array())  
{

    $data = array();

    $data\['image'\] = base64\_encode($image);

    if ($languageType == null || in\_array($languageType, array('CHN\_ENG', 'ENG')) <> 1) {  
        return "please provide correct param: language\_type ";  
    }  
    $data\['language\_type'\] = $languageType;

    if ($resultType == null || in\_array($resultType, array('big', 'small')) <> 1) {  
        return "please provide correct param: result\_type ";  
    }  
    $data\['result\_type'\] = $resultType;

    $data = array\_merge($data, $options);

    return $this->request($this->docAnalysis, $data);  
}

/\*\*  
 \* 仪器仪表盘读数识别  
 \*  
 \* @param string $image  
 \* @param bool $probability  
 \* @param bool $polyLocation  
 \* @param array|options $  
 \* @return bool|mix|mixed|string\[\]  
 \*/  
public function meter($image, $options = array())  
{  
    $data = array();  
    $data\['image'\] = base64\_encode($image);  
    $data = array\_merge($data, $options);  
    return $this->request($this->meter, $data);  
}

/\*\*  
 \* 网络图片文字识别(含位置版)  
 \*  
 \* @param string $image  
 \* @param bool $detect\_direction  
 \* @param bool $probability  
 \* @param bool $poly\_location  
 \* @param null $recognize\_granularity  
 \* @param array $options  
 \* @return string  
 \*/  
public function webimageLoc($image, $options = array())  
{  
    $data = array();  
    $data\['image'\] = base64\_encode($image);  
    $data = array\_merge($data, $options);  
    return $this->request($this->webimageLoc, $data);  
}

}

11:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu;
//require_once 'lib/AipBase.php';
use App\Libs\baidu\lib\AipBase;

/**
* 百度语音
*/
class AipSpeech extends AipBase{

/\*\*  
 \* url  
 \* @var string  
 \*/  
public $asrUrl = 'http://vop.baidu.com/server\_api';

/\*\*  
 \* url  
 \* @var string  
 \*/  
public $ttsUrl = 'http://tsn.baidu.com/text2audio';

/\*\*  
 \* 判断认证是否有权限  
 \* @param  array   $authObj  
 \* @return boolean  
 \*/  
protected function isPermission($authObj)  
{  
    return true;  
}

/\*\*  
 \* 处理请求参数  
 \* @param string $url  
 \* @param array $params  
 \* @param array $data  
 \* @param array $headers  
 \*/  
protected function proccessRequest($url, &$params, &$data, $headers){

    $token = isset($params\['access\_token'\]) ? $params\['access\_token'\] : '';

    if(empty($data\['cuid'\])){  
        $data\['cuid'\] = md5($token);  
    }

    if($url === $this->asrUrl){  
        $data\['token'\] = $token;  
        $data = json\_encode($data);  
    }else{  
        $data\['tok'\] = $token;  
    }

    unset($params\['access\_token'\]);  
}

/\*\*  
 \* 格式化结果  
 \* @param $content string  
 \* @return mixed  
 \*/  
protected function proccessResult($content){  
    $obj = json\_decode($content, true);

    if($obj === null){  
        $obj = array(  
            '\_\_json\_decode\_error' => $content  
        );  
    }

    return $obj;  
}

/\*\*  
 \* @param  string $speech  
 \* @param  string $format  
 \* @param  int $rate  
 \* @param  array $options  
 \* @return array  
 \*/  
public function asr($speech, $format, $rate, $options=array()){  
    $data = array();

    if(!empty($speech)){  
        $data\['speech'\] = base64\_encode($speech);  
        $data\['len'\] = strlen($speech);  
    }

    $data\['format'\] = $format;  
    $data\['rate'\] = $rate;  
    $data\['channel'\] = 1;

    $data = array\_merge($data, $options);

    return $this->request($this->asrUrl, $data, array());  
}

/\*\*  
 \* @param  string $text  
 \* @param  string $lang  
 \* @param  int $ctp  
 \* @param  array $options  
 \* @return array  
 \*/  
public function synthesis($text, $lang='zh', $ctp=1, $options=array()){  
    $data = array();

    $data\['tex'\] = $text;  
    $data\['lan'\] = $lang;  
    $data\['ctp'\] = $ctp;

    $data = array\_merge($data, $options);

    $result = $this->request($this->ttsUrl, $data, array());

    if(isset($result\['\_\_json\_decode\_error'\])){  
        return $result\['\_\_json\_decode\_error'\];  
    }

    return $result;  
}

}

12:

{
"name": "baidu/aip-sdk",
"description": "baidu pulic ai php sdk",
"authors": [
{
"name": "baidu"
}
],
"license": "Apache-2.0",
"require": {
"php": ">=5.3.3"
},
"minimum-stability": "stable",
"autoload": {
"files": [
"lib/AipBase.php",
"AipBodyAnalysis.php",
"AipContentCensor.php",
"AipFace.php",
"AipImageClassify.php",
"AipImageSearch.php",
"AipKg.php",
"AipNlp.php",
"AipOcr.php",
"AipSpeech.php"
]
}
}

libs目录建baidu目录下建lib目录,写以下文件夹

1:

{"refresh_token":"25.2762963b33cafa1dfa1673e3a620d3ab.315360000.1926222595.282335-9249799","expires_in":2592000,"session_key":"9mzdC3qb\/+CqiDlhbJeG2VCcp\/N3Lo0zqj1HcMudfu3sXmy1OInSGJpy2vZCMl\/wHqJKoQtYfjYWOI3\/ZlGvm2yS0+Vb","access_token":"24.0bc61f4c6e96ab8683d9242327e2a58c.2592000.1613454595.282335-9249799","scope":"vis-faceverify_FACE_EFFECT brain_cvpaas-app-scope vis-faceverify_idl_face_merge vis-faceverify_FACE_Police vis-faceverify_FACE_V3 brain_poi_recognize brain_contrast_enhance brain_dehaze vis-faceverify_faceverify_h5-face-liveness brain_image_quality_enhance brain_antispam_spam brain_qrcode brain_ocr_handwriting brain_ocr_passport brain_form brain_general_classify brain_general_classify_970 vis-classify_flower brain_flower brain_body_analysis brain_body_attr brain_body_number brain_advanced_general_classify vis-faceverify_faceverify_v2 brain_nlp_topic vis-classify_\u6076\u5fc3\u56fe\u8bc6\u522b\u670d\u52a1 brain_disgust brain_solution_iocr brain_nlp_keyword brain_nlp_lexer_custom brain_realtime_product vis-faceverify_faceverify vis-ocr_ocr vis-faceattribute_faceattribute nlp_simnet nlp_wordemb nlp_comtag vis-classify_dishes nlp_dnnlm_cn vis-antiporn_antiporn_v2 vis-classify_watermark brain_ocr_scope vis-faceverify_faceverify_match_v2 vis-classify_car brain_gif_antiporn brain_ocr_general brain_ocr_general_basic brain_ocr_general_enhanced vis-classify_terror vis-ocr_business_license brain_ocr_webimage brain_nlp_lexer solution_face brain_ocr_idcard brain_ocr_driving_license brain_ocr_vehicle_license brain_antiporn brain_antiterror brain_nlp_comment_tag brain_nlp_dnnlm_cn brain_nlp_word_emb_vec brain_nlp_word_emb_sim brain_nlp_sentiment_classify vis-ocr_plate_number vis-classify_animal brain_politician brain_imgquality_general brain_nlp_simnet brain_nlp_depparser vis-classify_plant brain_solution brain_ocr_plate_number brain_nlp_wordembedding brain_nlp_dnnlm_cn_legacy brain_nlp_simnet_legacy brain_nlp_comment_tag_legacy brain_watermark brain_ocr_accurate brain_ocr_accurate_basic brain_ocr_receipt brain_ocr_business_license vis-classify_\u5b9e\u65f6\u68c0\u7d22-\u76f8\u4f3c brain_object_detect brain_realtime_logo brain_realtime_same_hq brain_dish_detect brain_car_detect iknow-antispam_spamauth vis-faceverify_vis-faceverify-detect brain_realtime_similar brain_animal_classify brain_plant_classify public brain_all_scope wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test\u6743\u9650 lpq_\u5f00\u653e cop_helloScope ApsMis_fangdi_permission smartapp_snsapi_base smartapp_mapp_dev_manage iop_autocar oauth_tp_app smartapp_smart_game_openapi oauth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi smartapp_opensource_recapi fake_face_detect_\u5f00\u653eScope vis-ocr_\u865a\u62df\u4eba\u7269\u52a9\u7406 idl-video_\u865a\u62df\u4eba\u7269\u52a9\u7406 smartapp_component smartapp_search_plugin","session_secret":"2d4c2948f4ef76ae1da66358bc915218","time":1610862597,"is_cloud_user":false}

2:

{"refresh_token":"25.b2e031f132a605e25bb577b52d68fef6.315360000.1951200386.282335-23841417","expires_in":2592000,"session_key":"9mzdDZRpGikSmrWnTIKsgMbktUU1JadyHp2uau9OJM5ayG2ZioeLOHGANZjBKgj5t53zqoj5yP5ltlC526bfFMo6Zh1bnA==","access_token":"24.6b1882907c4846ed6189a3ebade697ee.2592000.1638432386.282335-23841417","scope":"public brain_all_scope solution_face wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test\u6743\u9650 vis-classify_flower lpq_\u5f00\u653e cop_helloScope ApsMis_fangdi_permission smartapp_snsapi_base smartapp_mapp_dev_manage iop_autocar oauth_tp_app smartapp_smart_game_openapi oauth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi smartapp_opensource_recapi fake_face_detect_\u5f00\u653eScope vis-ocr_\u865a\u62df\u4eba\u7269\u52a9\u7406 idl-video_\u865a\u62df\u4eba\u7269\u52a9\u7406 smartapp_component smartapp_search_plugin avatar_video_test b2b_tp_openapi","session_secret":"7bb3e2c7cc448a571fd73adc360b7030","time":1635840386,"is_cloud_user":false}

3:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace App\Libs\baidu\lib;
//require_once 'AipHttpClient.php';
//require_once 'AipBCEUtil.php';

/**
* Aip Base 基类
*/
class AipBase {

/\*\*  
 \* 获取access token url  
 \* @var string  
 \*/  
protected $accessTokenUrl = 'https://aip.baidubce.com/oauth/2.0/token';

 /\*\*  
 \* 反馈接口  
 \* @var string  
 \*/  
protected $reportUrl = 'https://aip.baidubce.com/rpc/2.0/feedback/v1/report';

/\*\*  
 \* appId  
 \* @var string  
 \*/  
protected $appId = '';

/\*\*  
 \* apiKey  
 \* @var string  
 \*/  
protected $apiKey = '';

/\*\*  
 \* secretKey  
 \* @var string  
 \*/  
protected $secretKey = '';

/\*\*  
 \* 权限  
 \* @var array  
 \*/  
protected $scope = 'brain\_all\_scope';

/\*\*  
 \* @param string $appId  
 \* @param string $apiKey  
 \* @param string $secretKey  
 \*/  
public function \_\_construct($appId, $apiKey, $secretKey){  
    $this->appId = trim($appId);  
    $this->apiKey = trim($apiKey);  
    $this->secretKey = trim($secretKey);  
    $this->isCloudUser = null;  
    $this->client = new AipHttpClient();  
    $this->version = '2\_2\_20';  
    $this->proxies = array();  
}

/\*\*  
 \* 查看版本  
 \* @return string  
 \*  
 \*/  
public function getVersion(){  
    return $this->version;  
}

/\*\*  
 \* 连接超时  
 \* @param int $ms 毫秒  
 \*/  
public function setConnectionTimeoutInMillis($ms){  
    $this->client->setConnectionTimeoutInMillis($ms);  
}

/\*\*  
 \* 响应超时  
 \* @param int $ms 毫秒  
 \*/  
public function setSocketTimeoutInMillis($ms){  
    $this->client->setSocketTimeoutInMillis($ms);  
}

/\*\*  
 \* 代理  
 \* @param array $proxy  
 \* @return string  
 \*  
 \*/  
public function setProxies($proxies){  
    $this->client->setConf($proxies);  
}

/\*\*  
 \* 处理请求参数  
 \* @param  string $url  
 \* @param array $params  
 \* @param array $data  
 \* @param array $headers  
 \*/  
protected function proccessRequest($url, &$params, &$data, $headers){  
    $params\['aipSdk'\] = 'php';  
    $params\['aipSdkVersion'\] = $this->version;  
}

/\*\*  
 \* Api 请求  
 \* @param  string $url  
 \* @param  mixed $data  
 \* @return mixed  
 \*/  
protected function request($url, $data, $headers=array()){  
    try{  
        $result = $this->validate($url, $data);  
        if($result !== true){  
            return $result;  
        }

        $params = array();  
        $authObj = $this->auth();

        if($this->isCloudUser === false){  
            $params\['access\_token'\] = $authObj\['access\_token'\];  
        }

        // 特殊处理  
        $this->proccessRequest($url, $params, $data, $headers);

        $headers = $this->getAuthHeaders('POST', $url, $params, $headers);  
        $response = $this->client->post($url, $data, $params, $headers);

        $obj = $this->proccessResult($response\['content'\]);

        if(!$this->isCloudUser && isset($obj\['error\_code'\]) && $obj\['error\_code'\] == 110){  
            $authObj = $this->auth(true);  
            $params\['access\_token'\] = $authObj\['access\_token'\];  
            $response = $this->client->post($url, $data, $params, $headers);  
            $obj = $this->proccessResult($response\['content'\]);  
        }

        if(empty($obj) || !isset($obj\['error\_code'\])){  
            $this->writeAuthObj($authObj);  
        }  
    }catch(Exception $e){  
        return array(  
            'error\_code' => 'SDK108',  
            'error\_msg' => 'connection or read data timeout',  
        );  
    }

    return $obj;  
}

/\*\*  
 \* Api 多个并发请求  
 \* @param  string $url  
 \* @param  mixed $data  
 \* @return mixed  
 \*/  
protected function multi\_request($url, $data){  
    try{  
        $params = array();  
        $authObj = $this->auth();  
        $headers = $this->getAuthHeaders('POST', $url);

        if($this->isCloudUser === false){  
            $params\['access\_token'\] = $authObj\['access\_token'\];  
        }

        $responses = $this->client->multi\_post($url, $data, $params, $headers);

        $is\_success = false;  
        foreach($responses as $response){  
            $obj = $this->proccessResult($response\['content'\]);

            if(empty($obj) || !isset($obj\['error\_code'\])){  
                $is\_success = true;  
            }

            if(!$this->isCloudUser && isset($obj\['error\_code'\]) && $obj\['error\_code'\] == 110){  
                $authObj = $this->auth(true);  
                $params\['access\_token'\] = $authObj\['access\_token'\];  
                $responses = $this->client->post($url, $data, $params, $headers);  
                break;  
            }  
        }

        if($is\_success){  
            $this->writeAuthObj($authObj);  
        }

        $objs = array();  
        foreach($responses as $response){  
            $objs\[\] = $this->proccessResult($response\['content'\]);  
        }

    }catch(Exception $e){  
        return array(  
            'error\_code' => 'SDK108',  
            'error\_msg' => 'connection or read data timeout',  
        );  
    }

    return $objs;  
}

/\*\*  
 \* 格式检查  
 \* @param  string $url  
 \* @param  array $data  
 \* @return mix  
 \*/  
protected function validate($url, &$data){  
    return true;  
}

/\*\*  
 \* 格式化结果  
 \* @param $content string  
 \* @return mixed  
 \*/  
protected function proccessResult($content){  
    return json\_decode($content, true);  
}

/\*\*  
 \* 返回 access token 路径  
 \* @return string  
 \*/  
private function getAuthFilePath(){  
    return dirname(\_\_FILE\_\_) . DIRECTORY\_SEPARATOR . md5($this->apiKey);  
}

/\*\*  
 \* 写入本地文件  
 \* @param  array $obj  
 \* @return void  
 \*/  
private function writeAuthObj($obj){  
    if($obj === null || (isset($obj\['is\_read'\]) && $obj\['is\_read'\] === true)){  
        return;  
    }

    $obj\['time'\] = time();  
    $obj\['is\_cloud\_user'\] = $this->isCloudUser;  
    @file\_put\_contents($this->getAuthFilePath(), json\_encode($obj));  
}

/\*\*  
 \* 读取本地缓存  
 \* @return array  
 \*/  
private function readAuthObj(){  
    $content = @file\_get\_contents($this->getAuthFilePath());  
    if($content !== false){  
        $obj = json\_decode($content, true);  
        $this->isCloudUser = $obj\['is\_cloud\_user'\];  
        $obj\['is\_read'\] = true;  
        if($this->isCloudUser || $obj\['time'\] + $obj\['expires\_in'\] - 30 > time()){  
            return $obj;  
        }  
    }

    return null;  
}

/\*\*  
 \* 认证  
 \* @param bool $refresh 是否刷新  
 \* @return array  
 \*/  
private function auth($refresh=false){

    //非过期刷新  
    if(!$refresh){  
        $obj = $this->readAuthObj();  
        if(!empty($obj)){  
            return $obj;  
        }  
    }

    $response = $this->client->get($this->accessTokenUrl, array(  
        'grant\_type' => 'client\_credentials',  
        'client\_id' => $this->apiKey,  
        'client\_secret' => $this->secretKey,  
    ));

    $obj = json\_decode($response\['content'\], true);

    $this->isCloudUser = !$this->isPermission($obj);  
    return $obj;  
}

/\*\*  
 \* 判断认证是否有权限  
 \* @param  array   $authObj  
 \* @return boolean  
 \*/  
protected function isPermission($authObj)  
{  
    if(empty($authObj) || !isset($authObj\['scope'\])){  
        return false;  
    }

    $scopes = explode(' ', $authObj\['scope'\]);

    return in\_array($this->scope, $scopes);  
}

/\*\*  
 \* @param  string $method HTTP method  
 \* @param  string $url  
 \* @param  array $param 参数  
 \* @return array  
 \*/  
private function getAuthHeaders($method, $url, $params=array(), $headers=array()){

    //不是云的老用户则不用在header中签名 认证  
    if($this->isCloudUser === false){  
        return $headers;  
    }

    $obj = parse\_url($url);  
    if(!empty($obj\['query'\])){  
        foreach(explode('&', $obj\['query'\]) as $kv){  
            if(!empty($kv)){  
                list($k, $v) = explode('=', $kv, 2);  
                $params\[$k\] = $v;  
            }  
        }  
    }

    //UTC 时间戳  
    $timestamp = gmdate('Y-m-d\\TH:i:s\\Z');  
    $headers\['Host'\] = isset($obj\['port'\]) ? sprintf('%s:%s', $obj\['host'\], $obj\['port'\]) : $obj\['host'\];  
    $headers\['x-bce-date'\] = $timestamp;

    //签名  
    $headers\['authorization'\] = AipSampleSigner::sign(array(  
        'ak' => $this->apiKey,  
        'sk' => $this->secretKey,  
    ), $method, $obj\['path'\], $headers, $params, array(  
        'timestamp' => $timestamp,  
        'headersToSign' => array\_keys($headers),  
    ));

    return $headers;  
}

/\*\*  
 \* 反馈  
 \*  
 \* @param array $feedbacks  
 \* @return array  
 \*/  
public function report($feedback){

    $data = array();

    $data\['feedback'\] = $feedback;

    return $this->request($this->reportUrl, $data);  
}

/\*\*  
 \* 通用接口  
 \* @param string $url  
 \* @param array $data  
 \* @param array header  
 \* @return array  
 \*/  
public function post($url, $data, $headers=array()){  
    return $this->request($url, $data, $headers);  
}

}

4:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
/**
* BCE Util
*/
namespace App\Libs\baidu\lib;

class AipHttpUtil
{
// 根据RFC 3986,除了:
// 1.大小写英文字符
// 2.阿拉伯数字
// 3.点'.'、波浪线'~'、减号'-'以及下划线'_'
// 以外都要编码
public static $PERCENT_ENCODED_STRINGS;

//填充编码数组  
public static function \_\_init()  
{  
    AipHttpUtil::$PERCENT\_ENCODED\_STRINGS = array();  
    for ($i = 0; $i < 256; ++$i) {  
        AipHttpUtil::$PERCENT\_ENCODED\_STRINGS\[$i\] = sprintf("%%%02X", $i);  
    }

    //a-z不编码  
    foreach (range('a', 'z') as $ch) {  
        AipHttpUtil::$PERCENT\_ENCODED\_STRINGS\[ord($ch)\] = $ch;  
    }

    //A-Z不编码  
    foreach (range('A', 'Z') as $ch) {  
        AipHttpUtil::$PERCENT\_ENCODED\_STRINGS\[ord($ch)\] = $ch;  
    }

    //0-9不编码  
    foreach (range('0', '9') as $ch) {  
        AipHttpUtil::$PERCENT\_ENCODED\_STRINGS\[ord($ch)\] = $ch;  
    }

    //以下4个字符不编码  
    AipHttpUtil::$PERCENT\_ENCODED\_STRINGS\[ord('-')\] = '-';  
    AipHttpUtil::$PERCENT\_ENCODED\_STRINGS\[ord('.')\] = '.';  
    AipHttpUtil::$PERCENT\_ENCODED\_STRINGS\[ord('\_')\] = '\_';  
    AipHttpUtil::$PERCENT\_ENCODED\_STRINGS\[ord('~')\] = '~';  
}

/\*\*  
 \* 在uri编码中不能对'/'编码  
 \* @param  string $path  
 \* @return string  
 \*/  
public static function urlEncodeExceptSlash($path)  
{  
    return str\_replace("%2F", "/", AipHttpUtil::urlEncode($path));  
}

/\*\*  
 \* 使用编码数组编码  
 \* @param  string $path  
 \* @return string  
 \*/  
public static function urlEncode($value)  
{  
    $result = '';  
    for ($i = 0; $i < strlen($value); ++$i) {  
        $result .= AipHttpUtil::$PERCENT\_ENCODED\_STRINGS\[ord($value\[$i\])\];  
    }  
    return $result;  
}

/\*\*  
 \* 生成标准化QueryString  
 \* @param  array $parameters  
 \* @return array  
 \*/  
public static function getCanonicalQueryString(array $parameters)  
{  
    //没有参数,直接返回空串  
    if (count($parameters) == 0) {  
        return '';  
    }

    $parameterStrings = array();  
    foreach ($parameters as $k => $v) {  
        //跳过Authorization字段  
        if (strcasecmp('Authorization', $k) == 0) {  
            continue;  
        }  
        if (!isset($k)) {  
            throw new \\InvalidArgumentException(  
                "parameter key should not be null"  
            );  
        }  
        if (isset($v)) {  
            //对于有值的,编码后放在=号两边  
            $parameterStrings\[\] = AipHttpUtil::urlEncode($k)  
                . '=' . AipHttpUtil::urlEncode((string) $v);  
        } else {  
            //对于没有值的,只将key编码后放在=号的左边,右边留空  
            $parameterStrings\[\] = AipHttpUtil::urlEncode($k) . '=';  
        }  
    }  
    //按照字典序排序  
    sort($parameterStrings);

    //使用'&'符号连接它们  
    return implode('&', $parameterStrings);  
}

/\*\*  
 \* 生成标准化uri  
 \* @param  string $path  
 \* @return string  
 \*/  
public static function getCanonicalURIPath($path)  
{  
    //空路径设置为'/'  
    if (empty($path)) {  
        return '/';  
    } else {  
        //所有的uri必须以'/'开头  
        if ($path\[0\] == '/') {  
            return AipHttpUtil::urlEncodeExceptSlash($path);  
        } else {  
            return '/' . AipHttpUtil::urlEncodeExceptSlash($path);  
        }  
    }  
}

/\*\*  
 \* 生成标准化http请求头串  
 \* @param  array $headers  
 \* @return array  
 \*/  
public static function getCanonicalHeaders($headers)  
{  
    //如果没有headers,则返回空串  
    if (count($headers) == 0) {  
        return '';  
    }

    $headerStrings = array();  
    foreach ($headers as $k => $v) {  
        //跳过key为null的  
        if ($k === null) {  
            continue;  
        }  
        //如果value为null,则赋值为空串  
        if ($v === null) {  
            $v = '';  
        }  
        //trim后再encode,之后使用':'号连接起来  
        $headerStrings\[\] = AipHttpUtil::urlEncode(strtolower(trim($k))) . ':' . AipHttpUtil::urlEncode(trim($v));  
    }  
    //字典序排序  
    sort($headerStrings);

    //用'\\n'把它们连接起来  
    return implode("\\n", $headerStrings);  
}  

}
AipHttpUtil::__init();

class AipSignOption
{
const EXPIRATION_IN_SECONDS = 'expirationInSeconds';

const HEADERS\_TO\_SIGN = 'headersToSign';

const TIMESTAMP = 'timestamp';

const DEFAULT\_EXPIRATION\_IN\_SECONDS = 1800;

const MIN\_EXPIRATION\_IN\_SECONDS = 300;

const MAX\_EXPIRATION\_IN\_SECONDS = 129600;  

}

class AipSampleSigner
{

const BCE\_AUTH\_VERSION = "bce-auth-v1";  
const BCE\_PREFIX = 'x-bce-';

//不指定headersToSign情况下,默认签名http头,包括:  
//    1.host  
//    2.content-length  
//    3.content-type  
//    4.content-md5  
public static $defaultHeadersToSign;

public static function  \_\_init()  
{  
    AipSampleSigner::$defaultHeadersToSign = array(  
        "host",  
        "content-length",  
        "content-type",  
        "content-md5",  
    );  
}

/\*\*  
 \* 签名  
 \* @param  array $credentials  
 \* @param  string $httpMethod  
 \* @param  string $path  
 \* @param  array  $headers  
 \* @param  string $params  
 \* @param  array  $options  
 \* @return string  
 \*/  
public static function sign(  
    array $credentials,  
    $httpMethod,  
    $path,  
    $headers,  
    $params,  
    $options = array()  
) {  
    //设定签名有效时间  
    if (!isset($options\[AipSignOption::EXPIRATION\_IN\_SECONDS\])) {  
        //默认值1800秒  
        $expirationInSeconds = AipSignOption::DEFAULT\_EXPIRATION\_IN\_SECONDS;  
    } else {  
        $expirationInSeconds = $options\[AipSignOption::EXPIRATION\_IN\_SECONDS\];  
    }

    //解析ak sk  
    $accessKeyId = $credentials\['ak'\];  
    $secretAccessKey = $credentials\['sk'\];

    //设定时间戳,注意:如果自行指定时间戳需要为UTC时间  
    if (!isset($options\[AipSignOption::TIMESTAMP\])) {  
        //默认值当前时间  
        $timestamp = gmdate('Y-m-d\\TH:i:s\\Z');  
    } else {  
        $timestamp = $options\[AipSignOption::TIMESTAMP\];  
    }

    //生成authString  
    $authString = AipSampleSigner::BCE\_AUTH\_VERSION . '/' . $accessKeyId . '/'  
        . $timestamp . '/' . $expirationInSeconds;

    //使用sk和authString生成signKey  
    $signingKey = hash\_hmac('sha256', $authString, $secretAccessKey);

    //生成标准化URI  
    $canonicalURI = AipHttpUtil::getCanonicalURIPath($path);

    //生成标准化QueryString  
    $canonicalQueryString = AipHttpUtil::getCanonicalQueryString($params);

    //填充headersToSign,也就是指明哪些header参与签名  
    $headersToSign = null;  
    if (isset($options\[AipSignOption::HEADERS\_TO\_SIGN\])) {  
        $headersToSign = $options\[AipSignOption::HEADERS\_TO\_SIGN\];  
    }

    //生成标准化header  
    $canonicalHeader = AipHttpUtil::getCanonicalHeaders(  
        AipSampleSigner::getHeadersToSign($headers, $headersToSign)  
    );

    //整理headersToSign,以';'号连接  
    $signedHeaders = '';  
    if ($headersToSign !== null) {  
        $signedHeaders = strtolower(  
            trim(implode(";", $headersToSign))  
        );  
    }

    //组成标准请求串  
    $canonicalRequest = "$httpMethod\\n$canonicalURI\\n"  
        . "$canonicalQueryString\\n$canonicalHeader";

    //使用signKey和标准请求串完成签名  
    $signature = hash\_hmac('sha256', $canonicalRequest, $signingKey);

    //组成最终签名串  
    $authorizationHeader = "$authString/$signedHeaders/$signature";

    return $authorizationHeader;  
}

/\*\*  
 \* 根据headsToSign过滤应该参与签名的header  
 \* @param  array $headers  
 \* @param  array $headersToSign  
 \* @return array  
 \*/  
public static function getHeadersToSign($headers, $headersToSign)  
{

    $arr = array();  
    foreach ($headersToSign as $value) {  
        $arr\[\] = strtolower(trim($value));  
    }

    //value被trim后为空串的header不参与签名  
    $result = array();  
    foreach ($headers as $key => $value) {  
        if (trim($value) !== '') {  
            $key = strtolower(trim($key));  
            if (in\_array($key, $arr)) {  
                $result\[$key\] = $value;  
            }  
        }  
    }

    //返回需要参与签名的header  
    return $result;  
}

/\*\*  
 \* 检查header是不是默认参加签名的:  
 \* 1.是host、content-type、content-md5、content-length之一  
 \* 2.以x-bce开头  
 \* @param  array $header  
 \* @return boolean  
 \*/  
public static function isDefaultHeaderToSign($header)  
{  
    $header = strtolower(trim($header));  
    if (in\_array($header, AipSampleSigner::$defaultHeadersToSign)) {  
        return true;  
    }  
    return substr\_compare($header, AipSampleSigner::BCE\_PREFIX, 0, strlen(AipSampleSigner::BCE\_PREFIX)) == 0;  
}  

}
AipSampleSigner::__init();

5:

<?php
/*
* Copyright (c) 2017 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
/**
* Http Client
*/
namespace App\Libs\baidu\lib;

class AipHttpClient{

/\*\*  
 \* HttpClient  
 \* @param array $headers HTTP header  
 \*/  
public function \_\_construct($headers=array()){  
    $this->headers = $this->buildHeaders($headers);  
    $this->connectTimeout = 60000;  
    $this->socketTimeout = 60000;  
    $this->conf = array();  
}

/\*\*  
 \* 连接超时  
 \* @param int $ms 毫秒  
 \*/  
public function setConnectionTimeoutInMillis($ms){  
    $this->connectTimeout = $ms;  
}

/\*\*  
 \* 响应超时  
 \* @param int $ms 毫秒  
 \*/  
public function setSocketTimeoutInMillis($ms){  
    $this->socketTimeout = $ms;  
}

/\*\*  
 \* 配置  
 \* @param array $conf  
 \*/  
public function setConf($conf){  
    $this->conf = $conf;  
}

/\*\*  
 \* 请求预处理  
 \* @param resource $ch  
 \*/  
public function prepare($ch){  
    foreach($this->conf as $key => $value){  
        curl\_setopt($ch, $key, $value);  
    }  
}

/\*\*  
 \* @param  string $url  
 \* @param  array $data HTTP POST BODY  
 \* @param  array $param HTTP URL  
 \* @param  array $headers HTTP header  
 \* @return array  
 \*/  
public function post($url, $data=array(), $params=array(), $headers=array()){  
    $url = $this->buildUrl($url, $params);  
    $headers = array\_merge($this->headers, $this->buildHeaders($headers));

    $ch = curl\_init();  
    $this->prepare($ch);  
    curl\_setopt($ch, CURLOPT\_URL, $url);  
    curl\_setopt($ch, CURLOPT\_POST, 1);  
    curl\_setopt($ch, CURLOPT\_HEADER, false);  
    curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, true);  
    curl\_setopt($ch, CURLOPT\_SSL\_VERIFYPEER, false);  
    curl\_setopt($ch, CURLOPT\_HTTPHEADER, $headers);  
    curl\_setopt($ch, CURLOPT\_POSTFIELDS, is\_array($data) ? http\_build\_query($data) : $data);  
    curl\_setopt($ch, CURLOPT\_TIMEOUT\_MS, $this->socketTimeout);  
    curl\_setopt($ch, CURLOPT\_CONNECTTIMEOUT\_MS, $this->connectTimeout);  
    $content = curl\_exec($ch);  
    $code = curl\_getinfo($ch, CURLINFO\_HTTP\_CODE);

    if($code === 0){  
        throw new Exception(curl\_error($ch));  
    }

    curl\_close($ch);  
    return array(  
        'code' => $code,  
        'content' => $content,  
    );  
}

/\*\*  
 \* @param  string $url  
 \* @param  array $datas HTTP POST BODY  
 \* @param  array $param HTTP URL  
 \* @param  array $headers HTTP header  
 \* @return array  
 \*/  
public function multi\_post($url, $datas=array(), $params=array(), $headers=array()){  
    $url = $this->buildUrl($url, $params);  
    $headers = array\_merge($this->headers, $this->buildHeaders($headers));

    $chs = array();  
    $result = array();  
    $mh = curl\_multi\_init();  
    foreach($datas as $data){  
        $ch = curl\_init();  
        $chs\[\] = $ch;  
        $this->prepare($ch);  
        curl\_setopt($ch, CURLOPT\_URL, $url);  
        curl\_setopt($ch, CURLOPT\_POST, 1);  
        curl\_setopt($ch, CURLOPT\_HEADER, false);  
        curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, true);  
        curl\_setopt($ch, CURLOPT\_SSL\_VERIFYPEER, false);  
        curl\_setopt($ch, CURLOPT\_HTTPHEADER, $headers);  
        curl\_setopt($ch, CURLOPT\_POSTFIELDS, is\_array($data) ? http\_build\_query($data) : $data);  
        curl\_setopt($ch, CURLOPT\_TIMEOUT\_MS, $this->socketTimeout);  
        curl\_setopt($ch, CURLOPT\_CONNECTTIMEOUT\_MS, $this->connectTimeout);  
        curl\_multi\_add\_handle($mh, $ch);  
    }

    $running = null;  
    do{  
        curl\_multi\_exec($mh, $running);  
        usleep(100);  
    }while($running);

    foreach($chs as $ch){  
        $content = curl\_multi\_getcontent($ch);  
        $code = curl\_getinfo($ch, CURLINFO\_HTTP\_CODE);  
        $result\[\] = array(  
            'code' => $code,  
            'content' => $content,  
        );  
        curl\_multi\_remove\_handle($mh, $ch);  
    }  
    curl\_multi\_close($mh);

    return $result;  
}

/\*\*  
 \* @param  string $url  
 \* @param  array $param HTTP URL  
 \* @param  array $headers HTTP header  
 \* @return array  
 \*/  
public function get($url, $params=array(), $headers=array()){  
    $url = $this->buildUrl($url, $params);  
    $headers = array\_merge($this->headers, $this->buildHeaders($headers));

    $ch = curl\_init();  
    $this->prepare($ch);  
    curl\_setopt($ch, CURLOPT\_URL, $url);  
    curl\_setopt($ch, CURLOPT\_HEADER, false);  
    curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, true);  
    curl\_setopt($ch, CURLOPT\_SSL\_VERIFYPEER, false);  
    curl\_setopt($ch, CURLOPT\_HTTPHEADER, $headers);  
    curl\_setopt($ch, CURLOPT\_TIMEOUT\_MS, $this->socketTimeout);  
    curl\_setopt($ch, CURLOPT\_CONNECTTIMEOUT\_MS, $this->connectTimeout);  
    $content = curl\_exec($ch);  
    $code = curl\_getinfo($ch, CURLINFO\_HTTP\_CODE);

    if($code === 0){  
        throw new Exception(curl\_error($ch));  
    }

    curl\_close($ch);  
    return array(  
        'code' => $code,  
        'content' => $content,  
    );  
}

/\*\*  
 \* 构造 header  
 \* @param  array $headers  
 \* @return array  
 \*/  
private function buildHeaders($headers){  
    $result = array();  
    foreach($headers as $k => $v){  
        $result\[\] = sprintf('%s:%s', $k, $v);  
    }  
    return $result;  
}

/\*\*  
 \*  
 \* @param  string $url  
 \* @param  array $params 参数  
 \* @return string  
 \*/  
private function buildUrl($url, $params){  
    if(!empty($params)){  
        $str = http\_build\_query($params);  
        return $url . (strpos($url, '?') === false ? '?' : '&') . $str;  
    }else{  
        return $url;  
    }  
}  

}

新建HTML页面



Document

@csrf 文件上传:


路由

//文件上传视图
Route::get('img','usercontroller@img');

控制器:

// 文件上传
public function img(){
return view('admin.img.img');

    }  

处理文件上传的控制器代码:use  BaiduService

<?php

namespace App\Http\Controllers\admin;

use App\Http\Controllers\Controller;
use App\models\UserModel;
use Illuminate\Http\Request;
use App\Libs\BaiduService;
class UserController extends Controller
{

// 文件上传
public function img(){
return view('admin.img.img');

    }  

//处理文件上传
public function uploadImg(Request $request){
$file=$request->file('img');
BaiduService::imageCheck($file);
}

}

路由

//处理文件上传  
Route::post('uploadImg','usercontroller@uploadImg');

效果图