开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
图像搜索

    绘本图片搜索

    产品使用说明

    可在自建图库中找到与检索图相同的绘本图片、儿童书本教材。支持用局部绘本页,找到内容相同的大图;可用于绘本、图书、教材的精确查找、重复图片过滤等场景。

    • 典型应用场景:进行儿童绘本、教材书本的“拍照搜书”,儿童通过学习机、pad等设备拍摄绘本、书本的照片,在学习库中自动检索出对应的封面或者书页,实现绘本跟读、教材讲解等功能
    • 适用的图片类型:各种网络图片、实拍图均可

    绘本图片搜索包含入库、检索、删除、更新4个子接口;在正式使用之前请在控制台创建应用后,在应用详情页申请建库,建库成功后方可正常使用入库、检索、删除、更新接口

    申请建库时,图库的图片数量上限为50万,避免浪费资源;如果容量不够用,可在控制台-应用详情页 申请扩容,工作人员会在1-3个工作日内审批,每次扩容的申请上限也是50万,可以反复申请扩容,原则上图库总量无上限,百万级、千万级、甚至亿级的图片量都可以做到实时检索,秒级返回检索结果。

    绘本图片搜索—入库

    请求说明

    该接口实现单张图片入库,入库时需要同步提交图片及可关联至本地图库的摘要信息(具体变量为brief,具体可传入图片在本地标记id、图片url、图片名称等);同时可提交分类维度信息(具体变量为tags,最多可传入2个tag),方便对图库中的图片进行管理、分类检索。

    注:重复添加完全相同的图片会返回错误。

    请求图片需经过base64编码:图片的base64编码指将一副图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。

    注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)

    请求示例

    HTTP 方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/add

    URL参数:

    参数
    access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

    Header如下:

    参数
    Content-Type application/x-www-form-urlencoded

    Body中放置请求参数,参数详情如下:

    请求参数

    参数 是否必选 类型 可选值范围 说明
    image string - 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M。(和url二选一,image优先级更高),注意要去掉图片头部,如(data:image/jpg;base64,);最短边至少150px,最长边最大4096px,长宽比在1:10-10:1之间。支持jpg/png/bmp格式。重复添加完全相同的图片会返回错误,提示不能重复入库。
    url string - 图片URL,和image二选一,image优先级更高,由于图床的差异性,抓图服务无法适配所有的图床,部分URL可能抓不到图,或者图片下载超时,遇到上述情况时请更换图片URL、或者将图片下载到本地转码后上传
    brief string - 检索时原样带回,最长256B。样例:{"name":"周杰伦", "id":"666"} 。请注意,检索接口不返回原图,仅返回入库时填写的brief信息,所以调用入库接口时,brief信息请尽量填写可关联至本地图库的图片id或者图片url、图片名称等信息
    tags string 1 - 65535范围内的整数 tag间以逗号分隔,最多2个tag,2个tag无层级关系,检索时支持逻辑运算。样例:"100,11" ;检索时可圈定分类维度进行检索

    请求代码示例

    提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

    提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

    # 绘本图片搜索—入库
    curl -i -k 'https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/add?access_token=【调用鉴权接口获取的token】' --data 'brief={"name":"小度", "id":"1"}&image=【图片Base64编码,需UrlEncode】&tags=1,1' -H 'Content-Type:application/x-www-form-urlencoded'
    <?php
    /**
     * 发起http post请求(REST API), 并获取REST请求的结果
     * @param string $url
     * @param string $param
     * @return - http response body if succeeds, else false.
     */
    function request_post($url = '', $param = '')
    {
        if (empty($url) || empty($param)) {
            return false;
        }
    
        $postUrl = $url;
        $curlPost = $param;
        // 初始化curl
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $postUrl);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        // 要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        // post提交方式
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        // 运行curl
        $data = curl_exec($curl);
        curl_close($curl);
    
        return $data;
    }
    
    $token = '[调用鉴权接口获取的token]';
    $url = 'https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/add?access_token=' . $token;
    $img = file_get_contents('[本地文件路径]');
    $img = base64_encode($img);
    $bodys = array(
        'brief' => "{"name":"小度", "id":"1"}",
        'image' => $img,
        'tags' => "1,1"
    );
    $res = request_post($url, $bodys);
    
    var_dump($res);
    package com.baidu.ai.aip;
    
    import com.baidu.ai.aip.utils.Base64Util;
    import com.baidu.ai.aip.utils.FileUtil;
    import com.baidu.ai.aip.utils.HttpUtil;
    
    import java.net.URLEncoder;
    
    /**
    * 绘本图片搜索—入库
    */
    public class PictureBookAdd {
    
        /**
        * 重要提示代码中所需工具类
        * FileUtil,Base64Util,HttpUtil,GsonUtils请从
        * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
        * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
        * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
        * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
        * 下载
        */
        public static String pictureBookAdd() {
            // 请求url
            String url = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/add";
            try {
                // 本地文件路径
                String filePath = "[本地文件路径]";
                byte[] imgData = FileUtil.readFileByBytes(filePath);
                String imgStr = Base64Util.encode(imgData);
                String imgParam = URLEncoder.encode(imgStr, "UTF-8");
    
                String param = "brief=" + "{"name":"小度", "id":"1"}" + "&image=" + imgParam + "&tags=" + "1,1";
    
                // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
                String accessToken = "[调用鉴权接口获取的token]";
    
                String result = HttpUtil.post(url, accessToken, param);
                System.out.println(result);
                return result;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static void main(String[] args) {
            PictureBookAdd.pictureBookAdd();
        }
    }
    # encoding:utf-8
    
    import requests
    import base64
    
    '''
    绘本图片搜索—入库
    '''
    
    request_url = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/add"
    # 二进制方式打开图片文件
    f = open('[本地文件]', 'rb')
    img = base64.b64encode(f.read())
    
    params = {"brief":"{\"name\":\"小度\", \"id\":\"1\"}","image":img,"tags":"1,1"}
    access_token = '[调用鉴权接口获取的token]'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print (response.json())
    #include <iostream>
    #include <curl/curl.h>
    
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    const static std::string request_url = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/add";
    static std::string pictureBookAdd_result;
    /**
     * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
     * @param 参数定义见libcurl文档
     * @return 返回值定义见libcurl文档
     */
    static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
        // 获取到的body存放在ptr中,先将其转换为string格式
        pictureBookAdd_result = std::string((char *) ptr, size * nmemb);
        return size * nmemb;
    }
    /**
     * 绘本图片搜索—入库
     * @return 调用成功返回0,发生错误返回其他错误码
     */
    int pictureBookAdd(std::string &json_result, const std::string &access_token) {
        std::string url = request_url + "?access_token=" + access_token;
        CURL *curl = NULL;
        CURLcode result_code;
        int is_success;
        curl = curl_easy_init();
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_URL, url.data());
            curl_easy_setopt(curl, CURLOPT_POST, 1);
            curl_httppost *post = NULL;
            curl_httppost *last = NULL;
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "brief", CURLFORM_COPYCONTENTS, "{"name":"小度", "id":"1"}", CURLFORM_END);
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, "【base64_img】", CURLFORM_END);
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "tags", CURLFORM_COPYCONTENTS, "1,1", CURLFORM_END);
    
            curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
            result_code = curl_easy_perform(curl);
            if (result_code != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                        curl_easy_strerror(result_code));
                is_success = 1;
                return is_success;
            }
            json_result = pictureBookAdd_result;
            curl_easy_cleanup(curl);
            is_success = 0;
        } else {
            fprintf(stderr, "curl_easy_init() failed.");
            is_success = 1;
        }
        return is_success;
    }
    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Web;
    
    namespace com.baidu.ai
    {
        public class PictureBookAdd
        {
            // 绘本图片搜索—入库
            public static string pictureBookAdd()
            {
                string token = "[调用鉴权接口获取的token]";
                string host = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/add?access_token=" + token;
                Encoding encoding = Encoding.Default;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
                request.Method = "post";
                request.KeepAlive = true;
                // 图片的base64编码
                string base64 = getFileBase64("[本地图片文件]");
                String str = "brief=" + "{"name":"小度", "id":"1"}" + "&image=" + HttpUtility.UrlEncode(base64) + "&tags=" + "1,1";
                byte[] buffer = encoding.GetBytes(str);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
                string result = reader.ReadToEnd();
                Console.WriteLine("绘本图片搜索—入库:");
                Console.WriteLine(result);
                return result;
            }
    
            public static String getFileBase64(String fileName) {
                FileStream filestream = new FileStream(fileName, FileMode.Open);
                byte[] arr = new byte[filestream.Length];
                filestream.Read(arr, 0, (int)filestream.Length);
                string baser64 = Convert.ToBase64String(arr);
                filestream.Close();
                return baser64;
            }
        }
    }

    返回说明

    返回参数

    字段 是否必选 类型 说明
    log_id uint64 唯一的log id,无实际意义,用于问题定位
    cont_sign string 入库图片的签名信息,请务必保存至本地,以便后续用作批量删除、查询某张图是否已经入过库等用途

    返回示例

    {
        "log_id": 2263663554,
        "cont_sign": "4261577168,501945506"
    }

    入库之后的图片,可在控制台的图库管理后台进行可视化管理,支持预览大图、更新摘要、更新分类信息、删除图片,入口在控制台-应用详情页 管理图库

    • 注:大批量更新图片摘要/分类、删除图片请调用API。

    同时,图库管理后台支持在线测试检索效果,点击右上角搜索框边上的“相机”标识,可以上传图片,测试检索效果。

    绘本图片搜索—检索

    请求说明

    完成入库后,可使用该接口实现绘本图检索。支持传入指定分类维度(具体变量tags)进行检索,返回结果支持翻页(具体变量pn、rn)。

    注意:检索接口不返回原图,仅反馈当前填写的brief信息,请调用入库接口时尽量填写可关联至本地图库的图片id或者图片url等信息

    请求图片需经过base64编码:图片的base64编码指将一副图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。

    注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)

    请求示例

    HTTP 方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/search

    URL参数:

    参数
    access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

    Header如下:

    参数
    Content-Type application/x-www-form-urlencoded

    Body中放置请求参数,参数详情如下:

    请求参数

    参数 是否必选 类型 可选值范围 说明
    image string - 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M。(和url二选一,image优先级更高),注意要去掉图片头部,如(data:image/jpg;base64,);最短边至少150px,最长边最大4096px,长宽比在1:10-10:1之间。支持jpg/png/bmp格式
    url string - 图片URL,和image二选一,image优先级更高,由于图床的差异性,抓图服务无法适配所有的图床,部分URL可能抓不到图,或者图片下载超时,遇到上述情况时请更换图片URL、或者将图片下载到本地转码后上传
    tags string 1 - 65535范围内的整数 分类维度信息,tag间以逗号分隔,最多可传入2个tag,tag间无层级关系,示例:"100,11"
    tag_logic string 0,1 检索时tag之间的逻辑, 0:逻辑and,1:逻辑or
    pn string 0 - 99范围内的整数 分页功能,起始位置,例:0,代表从第1个结果开始。注:未指定分页时,默认返回第1个结果;接口返回数量最大限制100个,例如:起始位置为90,截取条数100条,接口也只返回第91 - 100条的结果,共计10条
    rn string 1 - 100范围内的整数 分页功能,截取条数,例:10

    请求代码示例

    提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

    提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

    # 绘本图片搜索—检索
    curl -i -k 'https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/search?access_token=【调用鉴权接口获取的token】' --data 'image=【图片Base64编码,需UrlEncode】&pn=200&rn=100' -H 'Content-Type:application/x-www-form-urlencoded'
    <?php
    /**
     * 发起http post请求(REST API), 并获取REST请求的结果
     * @param string $url
     * @param string $param
     * @return - http response body if succeeds, else false.
     */
    function request_post($url = '', $param = '')
    {
        if (empty($url) || empty($param)) {
            return false;
        }
    
        $postUrl = $url;
        $curlPost = $param;
        // 初始化curl
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $postUrl);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        // 要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        // post提交方式
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        // 运行curl
        $data = curl_exec($curl);
        curl_close($curl);
    
        return $data;
    }
    
    $token = '[调用鉴权接口获取的token]';
    $url = 'https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/search?access_token=' . $token;
    $img = file_get_contents('[本地文件路径]');
    $img = base64_encode($img);
    $bodys = array(
        'image' => $img,
        'pn' => 200,
        'rn' => 100
    );
    $res = request_post($url, $bodys);
    
    var_dump($res);
    package com.baidu.ai.aip;
    
    import com.baidu.ai.aip.utils.Base64Util;
    import com.baidu.ai.aip.utils.FileUtil;
    import com.baidu.ai.aip.utils.HttpUtil;
    
    import java.net.URLEncoder;
    
    /**
    * 绘本图片搜索—检索
    */
    public class PictureBookSearch {
    
        /**
        * 重要提示代码中所需工具类
        * FileUtil,Base64Util,HttpUtil,GsonUtils请从
        * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
        * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
        * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
        * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
        * 下载
        */
        public static String pictureBookSearch() {
            // 请求url
            String url = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/search";
            try {
                // 本地文件路径
                String filePath = "[本地文件路径]";
                byte[] imgData = FileUtil.readFileByBytes(filePath);
                String imgStr = Base64Util.encode(imgData);
                String imgParam = URLEncoder.encode(imgStr, "UTF-8");
    
                String param = "image=" + imgParam + "&pn=" + 200 + "&rn=" + 100;
    
                // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
                String accessToken = "[调用鉴权接口获取的token]";
    
                String result = HttpUtil.post(url, accessToken, param);
                System.out.println(result);
                return result;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static void main(String[] args) {
            PictureBookSearch.pictureBookSearch();
        }
    }
    # encoding:utf-8
    
    import requests
    import base64
    
    '''
    绘本图片搜索—检索
    '''
    
    request_url = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/search"
    # 二进制方式打开图片文件
    f = open('[本地文件]', 'rb')
    img = base64.b64encode(f.read())
    
    params = {"image":img,"pn":200,"rn":100}
    access_token = '[调用鉴权接口获取的token]'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print (response.json())
    #include <iostream>
    #include <curl/curl.h>
    
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    const static std::string request_url = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/search";
    static std::string pictureBookSearch_result;
    /**
     * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
     * @param 参数定义见libcurl文档
     * @return 返回值定义见libcurl文档
     */
    static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
        // 获取到的body存放在ptr中,先将其转换为string格式
        pictureBookSearch_result = std::string((char *) ptr, size * nmemb);
        return size * nmemb;
    }
    /**
     * 绘本图片搜索—检索
     * @return 调用成功返回0,发生错误返回其他错误码
     */
    int pictureBookSearch(std::string &json_result, const std::string &access_token) {
        std::string url = request_url + "?access_token=" + access_token;
        CURL *curl = NULL;
        CURLcode result_code;
        int is_success;
        curl = curl_easy_init();
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_URL, url.data());
            curl_easy_setopt(curl, CURLOPT_POST, 1);
            curl_httppost *post = NULL;
            curl_httppost *last = NULL;
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, "【base64_img】", CURLFORM_END);
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "pn", CURLFORM_COPYCONTENTS, "200", CURLFORM_END);
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "rn", CURLFORM_COPYCONTENTS, "100", CURLFORM_END);
    
            curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
            result_code = curl_easy_perform(curl);
            if (result_code != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                        curl_easy_strerror(result_code));
                is_success = 1;
                return is_success;
            }
            json_result = pictureBookSearch_result;
            curl_easy_cleanup(curl);
            is_success = 0;
        } else {
            fprintf(stderr, "curl_easy_init() failed.");
            is_success = 1;
        }
        return is_success;
    }
    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Web;
    
    namespace com.baidu.ai
    {
        public class PictureBookSearch
        {
            // 绘本图片搜索—检索
            public static string pictureBookSearch()
            {
                string token = "[调用鉴权接口获取的token]";
                string host = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/search?access_token=" + token;
                Encoding encoding = Encoding.Default;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
                request.Method = "post";
                request.KeepAlive = true;
                // 图片的base64编码
                string base64 = getFileBase64("[本地图片文件]");
                String str = "image=" + HttpUtility.UrlEncode(base64) + "&pn=" + 200 + "&rn=" + 100;
                byte[] buffer = encoding.GetBytes(str);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
                string result = reader.ReadToEnd();
                Console.WriteLine("绘本图片搜索—检索:");
                Console.WriteLine(result);
                return result;
            }
    
            public static String getFileBase64(String fileName) {
                FileStream filestream = new FileStream(fileName, FileMode.Open);
                byte[] arr = new byte[filestream.Length];
                filestream.Read(arr, 0, (int)filestream.Length);
                string baser64 = Convert.ToBase64String(arr);
                filestream.Close();
                return baser64;
            }
        }
    }

    返回说明

    返回参数

    字段 是否必选 类型 说明
    log_id uint64 唯一的log id,无实际含义,用于问题定位
    result_num uint32 检索结果数
    result object[] 结果数组
    +cont_sign string 入库图片签名,可以用来删除图片或定位问题
    +score float 图片相关性,取值范围0-1,越接近1表示越相关
    +brief string 调用入库add接口时添加的brief信息,为保证该结果有效性,请入库时填写可关联至本地图片库的有效id信息
    has_more bool 是否还有下一页,返回值:true、false;如果不分页,不用关注该字段

    返回示例

    {
        "result_num": 1,
        "result": [
            {
                "score": 0.97976700290421,
                "brief": "./data/jay1.jpg",
                "cont_sign": "475124309,1080176642"
            }
        ],
    	"has_more": "false",
        "log_id": 1968648150
    }

    绘本图片搜索—删除

    请求说明

    删除图库中的图片,支持批量删除,批量删除时请传cont_sign参数,勿传image、url,最多支持100个cont_sign。

    图片删除延时生效,每天数据库定时更新进行物理删除,刚删除时仍然可以在图库中检索到(但图库管理后台是同步清除),请过一段时间再验证,一般最多延时4小时左右

    请求图片需经过base64编码:图片的base64编码指将一副图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。

    注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)

    请求示例

    HTTP 方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/delete

    URL参数:

    参数
    access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

    Header如下:

    参数
    Content-Type application/x-www-form-urlencoded

    Body中放置请求参数,参数详情如下:

    请求参数

    参数 是否必选 类型 可选值范围 说明
    image string - 图片数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,(和url、cont_sign三选一,优先级:image > url > cont_sign),注意要去掉图片头部,如(data:image/jpg;base64,)。最短边至少150px,最长边最大4096px,长宽比在1:10-10:1之间。支持jpg/png/bmp格式
    url string - 图片URL,和image、cont_sign三选一,image优先级更高,由于图床的差异性,抓图服务无法适配所有的图床,部分URL可能抓不到图,或者图片下载超时,遇到上述情况时请更换图片URL、或者将图片下载到本地转码后上传
    cont_sign string - 图片签名(和image、url三选一),支持批量删除,批量删除时请勿传image、url,最多支持50个cont_sign列表,样例:"932301884,1068006219;316336521,553141152;2491030726,1352091083"

    请求代码示例

    提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

    提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

    # 绘本图片搜索—删除
    curl -i -k ' https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/delete?access_token=【调用鉴权接口获取的token】' --data 'image=【图片Base64编码,需UrlEncode】' -H 'Content-Type:application/x-www-form-urlencoded'
    <?php
    /**
     * 发起http post请求(REST API), 并获取REST请求的结果
     * @param string $url
     * @param string $param
     * @return - http response body if succeeds, else false.
     */
    function request_post($url = '', $param = '')
    {
        if (empty($url) || empty($param)) {
            return false;
        }
    
        $postUrl = $url;
        $curlPost = $param;
        // 初始化curl
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $postUrl);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        // 要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        // post提交方式
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        // 运行curl
        $data = curl_exec($curl);
        curl_close($curl);
    
        return $data;
    }
    
    $token = '[调用鉴权接口获取的token]';
    $url = ' https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/delete?access_token=' . $token;
    $img = file_get_contents('[本地文件路径]');
    $img = base64_encode($img);
    $bodys = array(
        'image' => $img
    );
    $res = request_post($url, $bodys);
    
    var_dump($res);
    package com.baidu.ai.aip;
    
    import com.baidu.ai.aip.utils.Base64Util;
    import com.baidu.ai.aip.utils.FileUtil;
    import com.baidu.ai.aip.utils.HttpUtil;
    
    import java.net.URLEncoder;
    
    /**
    * 绘本图片搜索—删除
    */
    public class PictureBookDelete {
    
        /**
        * 重要提示代码中所需工具类
        * FileUtil,Base64Util,HttpUtil,GsonUtils请从
        * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
        * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
        * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
        * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
        * 下载
        */
        public static String pictureBookDelete() {
            // 请求url
            String url = " https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/delete";
            try {
                // 本地文件路径
                String filePath = "[本地文件路径]";
                byte[] imgData = FileUtil.readFileByBytes(filePath);
                String imgStr = Base64Util.encode(imgData);
                String imgParam = URLEncoder.encode(imgStr, "UTF-8");
    
                String param = "image=" + imgParam;
    
                // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
                String accessToken = "[调用鉴权接口获取的token]";
    
                String result = HttpUtil.post(url, accessToken, param);
                System.out.println(result);
                return result;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static void main(String[] args) {
            PictureBookDelete.pictureBookDelete();
        }
    }
    # encoding:utf-8
    
    import requests
    import base64
    
    '''
    绘本图片搜索—删除
    '''
    
    request_url = " https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/delete"
    # 二进制方式打开图片文件
    f = open('[本地文件]', 'rb')
    img = base64.b64encode(f.read())
    
    params = {"image":img}
    access_token = '[调用鉴权接口获取的token]'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print (response.json())
    #include <iostream>
    #include <curl/curl.h>
    
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    const static std::string request_url = " https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/delete";
    static std::string pictureBookDelete_result;
    /**
     * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
     * @param 参数定义见libcurl文档
     * @return 返回值定义见libcurl文档
     */
    static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
        // 获取到的body存放在ptr中,先将其转换为string格式
        pictureBookDelete_result = std::string((char *) ptr, size * nmemb);
        return size * nmemb;
    }
    /**
     * 绘本图片搜索—删除
     * @return 调用成功返回0,发生错误返回其他错误码
     */
    int pictureBookDelete(std::string &json_result, const std::string &access_token) {
        std::string url = request_url + "?access_token=" + access_token;
        CURL *curl = NULL;
        CURLcode result_code;
        int is_success;
        curl = curl_easy_init();
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_URL, url.data());
            curl_easy_setopt(curl, CURLOPT_POST, 1);
            curl_httppost *post = NULL;
            curl_httppost *last = NULL;
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, "【base64_img】", CURLFORM_END);
    
            curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
            result_code = curl_easy_perform(curl);
            if (result_code != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                        curl_easy_strerror(result_code));
                is_success = 1;
                return is_success;
            }
            json_result = pictureBookDelete_result;
            curl_easy_cleanup(curl);
            is_success = 0;
        } else {
            fprintf(stderr, "curl_easy_init() failed.");
            is_success = 1;
        }
        return is_success;
    }
    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Web;
    
    namespace com.baidu.ai
    {
        public class PictureBookDelete
        {
            // 绘本图片搜索—删除
            public static string pictureBookDelete()
            {
                string token = "[调用鉴权接口获取的token]";
                string host = " https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/delete?access_token=" + token;
                Encoding encoding = Encoding.Default;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
                request.Method = "post";
                request.KeepAlive = true;
                // 图片的base64编码
                string base64 = getFileBase64("[本地图片文件]");
                String str = "image=" + HttpUtility.UrlEncode(base64);
                byte[] buffer = encoding.GetBytes(str);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
                string result = reader.ReadToEnd();
                Console.WriteLine("绘本图片搜索—删除:");
                Console.WriteLine(result);
                return result;
            }
    
            public static String getFileBase64(String fileName) {
                FileStream filestream = new FileStream(fileName, FileMode.Open);
                byte[] arr = new byte[filestream.Length];
                filestream.Read(arr, 0, (int)filestream.Length);
                string baser64 = Convert.ToBase64String(arr);
                filestream.Close();
                return baser64;
            }
        }
    }

    返回说明

    返回参数

    字段 是否必选 类型 说明
    log_id uint64 唯一的log id,用于问题定位

    返回示例

    {
      "log_id": 50488417
    }

    绘本图片搜索—更新

    请求说明

    更新图库中图片的摘要和分类信息(具体变量为brief、tags)

    请求图片需经过base64编码:图片的base64编码指将一副图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。

    注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)

    请求示例

    HTTP 方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/update

    URL参数:

    参数
    access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

    Header如下:

    参数
    Content-Type application/x-www-form-urlencoded

    Body中放置请求参数,参数详情如下:

    请求参数

    参数 是否必选 类型 可选值范围 说明
    image string - 图片数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,和url、cont_sign三选一,优先级:image > url > cont_sign,注意要去掉图片头部,如(data:image/jpg;base64,),最短边至少150px,最长边最大4096px,长宽比在1:10-10:1之间。支持jpg/png/bmp格式
    url string - 图片URL,和image、cont_sign三选一,优先级:image > url > cont_sign ,由于图床的差异性,抓图服务无法适配所有的图床,部分URL可能抓不到图,或者图片下载超时,遇到上述情况时请更换图片URL、或者将图片下载到本地转码后上传
    cont_sign string - 图片签名,和image、url三选一,优先级:image > url > cont_sign;不支持批量传入签名,样例:"932301884,10680062193"
    brief string - 更新的摘要信息,最长256B。样例:{"name":"周杰伦", "id":"666"}
    tags string 1 - 65535范围内的整数 更新的分类信息,tag间以逗号分隔,最多2个tag。样例:"100,11"

    请求代码示例

    提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

    提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

    # 绘本图片搜索—更新
    curl -i -k 'https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/update?access_token=【调用鉴权接口获取的token】' --data 'brief={"name":"小度2", "id":"2"}&image=【图片Base64编码,需UrlEncode】&tags=2,2' -H 'Content-Type:application/x-www-form-urlencoded'
    <?php
    /**
     * 发起http post请求(REST API), 并获取REST请求的结果
     * @param string $url
     * @param string $param
     * @return - http response body if succeeds, else false.
     */
    function request_post($url = '', $param = '')
    {
        if (empty($url) || empty($param)) {
            return false;
        }
    
        $postUrl = $url;
        $curlPost = $param;
        // 初始化curl
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $postUrl);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        // 要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        // post提交方式
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        // 运行curl
        $data = curl_exec($curl);
        curl_close($curl);
    
        return $data;
    }
    
    $token = '[调用鉴权接口获取的token]';
    $url = 'https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/update?access_token=' . $token;
    $img = file_get_contents('[本地文件路径]');
    $img = base64_encode($img);
    $bodys = array(
        'brief' => "{"name":"小度2", "id":"2"}",
        'image' => $img,
        'tags' => "2,2"
    );
    $res = request_post($url, $bodys);
    
    var_dump($res);
    package com.baidu.ai.aip;
    
    import com.baidu.ai.aip.utils.Base64Util;
    import com.baidu.ai.aip.utils.FileUtil;
    import com.baidu.ai.aip.utils.HttpUtil;
    
    import java.net.URLEncoder;
    
    /**
    * 绘本图片搜索—更新
    */
    public class PictureBookUpdate {
    
        /**
        * 重要提示代码中所需工具类
        * FileUtil,Base64Util,HttpUtil,GsonUtils请从
        * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
        * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
        * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
        * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
        * 下载
        */
        public static String pictureBookUpdate() {
            // 请求url
            String url = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/update";
            try {
                // 本地文件路径
                String filePath = "[本地文件路径]";
                byte[] imgData = FileUtil.readFileByBytes(filePath);
                String imgStr = Base64Util.encode(imgData);
                String imgParam = URLEncoder.encode(imgStr, "UTF-8");
    
                String param = "brief=" + "{"name":"小度2", "id":"2"}" + "&image=" + imgParam + "&tags=" + "2,2";
    
                // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
                String accessToken = "[调用鉴权接口获取的token]";
    
                String result = HttpUtil.post(url, accessToken, param);
                System.out.println(result);
                return result;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static void main(String[] args) {
            PictureBookUpdate.pictureBookUpdate();
        }
    }
    # encoding:utf-8
    
    import requests
    import base64
    
    '''
    绘本图片搜索—更新
    '''
    
    request_url = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/update"
    # 二进制方式打开图片文件
    f = open('[本地文件]', 'rb')
    img = base64.b64encode(f.read())
    
    params = {"brief":"{\"name\":\"小度2\", \"id\":\"2\"}","image":img,"tags":"2,2"}
    access_token = '[调用鉴权接口获取的token]'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print (response.json())
    #include <iostream>
    #include <curl/curl.h>
    
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    const static std::string request_url = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/update";
    static std::string pictureBookUpdate_result;
    /**
     * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
     * @param 参数定义见libcurl文档
     * @return 返回值定义见libcurl文档
     */
    static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
        // 获取到的body存放在ptr中,先将其转换为string格式
        pictureBookUpdate_result = std::string((char *) ptr, size * nmemb);
        return size * nmemb;
    }
    /**
     * 绘本图片搜索—更新
     * @return 调用成功返回0,发生错误返回其他错误码
     */
    int pictureBookUpdate(std::string &json_result, const std::string &access_token) {
        std::string url = request_url + "?access_token=" + access_token;
        CURL *curl = NULL;
        CURLcode result_code;
        int is_success;
        curl = curl_easy_init();
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_URL, url.data());
            curl_easy_setopt(curl, CURLOPT_POST, 1);
            curl_httppost *post = NULL;
            curl_httppost *last = NULL;
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "brief", CURLFORM_COPYCONTENTS, "{"name":"小度2", "id":"2"}", CURLFORM_END);
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, "【base64_img】", CURLFORM_END);
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "tags", CURLFORM_COPYCONTENTS, "2,2", CURLFORM_END);
    
            curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
            result_code = curl_easy_perform(curl);
            if (result_code != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                        curl_easy_strerror(result_code));
                is_success = 1;
                return is_success;
            }
            json_result = pictureBookUpdate_result;
            curl_easy_cleanup(curl);
            is_success = 0;
        } else {
            fprintf(stderr, "curl_easy_init() failed.");
            is_success = 1;
        }
        return is_success;
    }
    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Web;
    
    namespace com.baidu.ai
    {
        public class PictureBookUpdate
        {
            // 绘本图片搜索—更新
            public static string pictureBookUpdate()
            {
                string token = "[调用鉴权接口获取的token]";
                string host = "https://aip.baidubce.com/rest/2.0/imagesearch/v1/realtime_search/picturebook/update?access_token=" + token;
                Encoding encoding = Encoding.Default;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
                request.Method = "post";
                request.KeepAlive = true;
                // 图片的base64编码
                string base64 = getFileBase64("[本地图片文件]");
                String str = "brief=" + "{"name":"小度2", "id":"2"}" + "&image=" + HttpUtility.UrlEncode(base64) + "&tags=" + "2,2";
                byte[] buffer = encoding.GetBytes(str);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
                string result = reader.ReadToEnd();
                Console.WriteLine("绘本图片搜索—更新:");
                Console.WriteLine(result);
                return result;
            }
    
            public static String getFileBase64(String fileName) {
                FileStream filestream = new FileStream(fileName, FileMode.Open);
                byte[] arr = new byte[filestream.Length];
                filestream.Read(arr, 0, (int)filestream.Length);
                string baser64 = Convert.ToBase64String(arr);
                filestream.Close();
                return baser64;
            }
        }
    }

    返回说明

    返回参数

    字段 是否必选 类型 说明
    log_id uint64 唯一的log id,用于问题定位

    返回示例

    {
        "log_id": 2263663554
    }
    上一篇
    商品图片搜索
    下一篇
    产品价格