laravel7 百度智能云检测图片是否合规
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>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页面
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <form action="/admin/uploadImg" method="post" enctype="multipart/form-data"> @csrf 文件上传: <input type="file" name="img" id="img" > <input type="submit" value="立即上传"> </form> </body> </html>
路由
//文件上传视图 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');
效果图