图像审核
百度 官方文档
通过人脸检测、文字识别、色情识别、暴恐识别、公众人物检测等多个维度,识别图片是否合规,直接返回审核结果,并支持自定义黑词库和审核规则配置
基本说明:
接口地址:https://aip.baidubce.com/rest/2.0/solution/v1/face_audit
返回格式:json
请求方式:post
请求示例:https://aip.baidubce.com/rest/2.0/solution/v1/face_audit?access_token=test
请求参数说明:
名称 类型 必填 说明
images string 选填 待审核图片Base64编码字符串,以图片文件形式请求时必填。不能与imgUrls并存。
imgUrls string 选填 网图URL地址,以网图形式请求,图片Url需要做UrlEncode。不能与images并存。
返回参数说明:
名称 类型 说明
error_code uint32 错误码,错误才返回,成功不返回,具体错误码请参考下文
error_msg string 错误提示,错误才返回,成功不返回
result object[] 识别结果集合,成功才返回,默认[]
+res_code uint32 业务校验结果 0:校验通过,1:校验不通过
+res_msg object[] 未校验通过的项,[]描述的是未校验通过的规则,具体参考 result中的res_msg业务错误码定义
+error_code uint32 底层服务调用异常码,正常不返回,异常才返回
+error_msg string 底层服务调用提示信息,正常不返回,异常才返回
+data object 识别详细结果数据,默认[],data中的key含义:<br>ocr:文字识别<br>face:人脸检测<br>public:公众人物<br>politicians:政治敏感识别<br>antiporn:色情识别<br>terror:暴恐识别<br>quality:图像质量检测
++ocr object 文字识别服务返回结果。请参照“<a href="http://ai.baidu.com/docs#/OCR-API/top" target="_blank">通用文字识别接口文档</a>”
++face object 人脸检测服务返回结果。请参照“<a href="http://ai.baidu.com/docs#/Face-API/top" target="_blank">人脸检测接口文档</a>”
++antiporn object 色情识别返回结果。请参照下文,色情识别说明。
++terror object 暴恐识别返回结果。请参照本文档 下文,暴恐识别说明。
++public object 公众人物服务返回结果。请参照下文,公众人物识别说明。
++politician object 政治敏感识别返回结果。请参照下文,政治敏感识别说明。
++quality object 图像质量返回结果。请参照下文,图像质量识别说明。
log_id uint64 请求标识码,随机数,唯一。
JSON返回示例:
{
	"log_id": 149319909347709,
	"result": [{
		"res_code": 0,
		"res_msg": [
			2001,
			2002,
			2003
		],
		"data": {
			"ocr": {
				"log_id": 2471272194,
				"words_result_num": 2,
				"words_result": [{
						"words": " TSINGTAO"
					},
					{
						"words": "青島睥酒"
					}
				]
			},
			"face": {
				"result_num": 1,
				"result": [{
					"location": {
						"left": 90,
						"top": 92,
						"width": 111,
						"height": 99
					},
					"face_probability": 1,
					"rotation_angle": 6,
					"yaw": 11.61234664917,
					"pitch": -0.30852827429771,
					"roll": 8.8044967651367,
					"landmark": [{
						"x": 105,
						"y": 110
					}],
					"landmark72": [{
						"x": 88,
						"y": 109
					}],
					"gender": "male",
					"gender_probability": 0.99358034133911,
					"glasses": 0,
					"glasses_probability": 0.99991309642792,
					"race": "yellow",
					"race_probability": 0.99960690736771,
					"qualities": {
						"occlusion": {
							"left_eye": 0.000085282314103097,
							"right_eye": 0.00001094374601962,
							"nose": 3.2677664307812e-7,
							"mouth": 2.6582130940866e-10,
							"left_cheek": 8.752236624332e-8,
							"right_cheek": 1.0212766454742e-7,
							"chin": 4.2632994357028e-10
						},
						"blur": 4.5613666312237e-41,
						"illumination": 0,
						"completeness": 0,
						"type": {
							"human": 0.98398965597153,
							"cartoon": 0.016010366380215
						}
					}
				}],
				"log_id": 2418894422
			},
			"antiporn": [{
					"class_name": "色情",
					"probability": 0.014619
				},
				{
					"class_name": "正常",
					"probability": 0.171783
				},
				{
					"class_name": "性感",
					"probability": 0.813598
				}
			]
		}
	}]
}
服务级错误码参照
错误码 说明
1 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(375765194)或工单联系技术支持团队。
2 服务暂不可用,请再次请求, 如果持续出现此类错误,请通过QQ群(375765194)或工单联系技术支持团队。
3 调用的API不存在,请检查后重新尝试
4 集群超限额
6 无权限访问该用户数据
17 每天流量超限额
18 QPS超限额
19 请求总量超限额
100 无效参数
110 Access Token失效
111 Access token过期
216015 模块关闭
216100 非法参数
216101 参数数量不够
216102 业务不支持
216103 参数太长
216110 APP ID不存在
216111 非法用户ID
216200 空的图片
216201 图片格式错误
216202 图片大小错误
216300 DB错误
216400 后端系统错误
216401 内部错误
216500 未知错误
282000 业务逻辑层内部错误
282001 业务逻辑层后端服务错误
282002 请求参数编码错误
282100 图片压缩转码错误
282202 检测超时
282203 gif单帧大小超限
282204 gif总帧数超限
282205 图片格式错误
282800 配置Id不存在
282801 image和imgUrl均为空
282802 image和imgUrl只能有一个有值
282804 图片下载失败
282805 调用底层服务异常
282806 图片宽高异常
282872 图片链接过多
282873 部分url异常
101 文字中包含手机号码
102 文字中包含“QQ”号字样,或包含超过9位的连续数字
103 文字中包含竞品名称
104 文字中包含疑似手机号/QQ的连续数字
201 图片中不包含人脸
202 图片中包含人脸
203 图片中包含多个人脸(默认为&gt;=2)
204 图片中包含明星脸
205 片中包含政治人物人脸
206 片中包含公众人物人脸
207 自定义人脸库识别未通过
301 图片中包含色情内容
302 图片中包含性感内容,如穿着比较暴露
401 图片中包含血腥暴力场景内容
501 图像美观度低于阀值
502 图像美观度高于阀值
503 图像美观度不等于阀值
完整教学代码示例
#!/bin/bash
curl -i -k 'https://aip.baidubce.com/rest/2.0/solution/v1/face_audit?access_token=【调用鉴权接口获取的token】' --data 'configId=1&images=%2f9j%2f4AAQSkZJRgABAQEASABIAAD%2f【图片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_init();
    curl_setopt($curl, CURLOPT_URL, $postUrl);
    // 要求结果为字符串
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // post方式
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
    $data = curl_exec($curl);
    var_dump(curl_error($curl));
    curl_close($curl);

    return $data;
}

$token = '#####调用鉴权接口获取的token#####';
$url = 'https://aip.baidubce.com/rest/2.0/solution/v1/face_audit?access_token=' . $token;
$img = file_get_contents('#####本地文件路径######');
$img = base64_encode($img);
$bodys = array(
    "configId" => "1",
    "images" => $img
);
$res = request_post($url, $bodys);
var_dump($res);
/*
 * Copyright (C) 2017 Baidu, Inc. All Rights Reserved.
 */
package com.baidu.ai.aip.solution;

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;

/**
 * 用户头像审核API.
 */
public class FaceAudit {

    /**
     * 重要提示代码中所需工具类
     * 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 void main(String[] args) {
        // 用户头像审核 url
        String faceAuditUrl = "https://aip.baidubce.com/rest/2.0/solution/v1/face_audit";
        // 请求参数
        String configId = "1";
        String filePath = "#####本地文件路径#####";
        try {
            byte[] imgData = FileUtil.readFileByBytes(filePath);
            String imgStr = Base64Util.encode(imgData);
            String params = "configId=" + configId + "&" + URLEncoder.encode("images", "UTF-8") + "=" + URLEncoder
                    .encode(imgStr, "UTF-8");
            String accessToken = "#####调用鉴权接口获取的token#####";
            String result = HttpUtil.post(faceAuditUrl, accessToken, params);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
#!/usr/bin/env python
# encoding:utf-8
# import base64
import urllib
import urllib2

# '''
# 用户头像检测接口
# '''

faceAuditUrl = "https://aip.baidubce.com/rest/2.0/solution/v1/face_audit"
# 参数images:图像base64编码,多张图片半角逗号分隔,configId:审核配置组ID
params = {"configId": "1",
          "images": "【图片base64编码】"}
params = urllib.urlencode(params)
access_token = access_token.AuthService()
faceAuditUrl = faceAuditUrl + "?access_token=" + access_token
request = urllib2.Request(url=faceAuditUrl, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if content:
    print content
#include <iostream>
#include <curl/curl.h>
#include "face_audit.h"
// libcurl库下载链接:https://curl.haxx.se/download.html
// 图像审核接口url
const static std::string face_audit_url = "https://aip.baidubce.com/rest/2.0/solution/v1/face_audit";
static std::string face_audit_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格式
    face_audit_result = std::string((char *) ptr, size * nmemb);
    return size * nmemb;
}

/**
 * 调用图像审核接口,返回json格式的结果,具体格式解析见百度大脑文档
 * @param json_result 以string格式返回的json格式的结果
 * @param image_base64 以string格式传递的base64编码的图像数据(注:base64数据不包含格式信息(即不包含data:image/jpeg;base64))
 * @param access_token 以string格式传入的access token数据,access token获取方式见access_token获取相关文档及代码
 * @return 调用成功返回0,发生错误返回其他错误码
 */
int face_audit(std::string &json_result, const std::string &config_id, const std::string &image_base64, const std::string &access_token){
    std::string url = face_audit_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, "configId", CURLFORM_COPYCONTENTS, config_id.data(),
                     CURLFORM_END);
        curl_formadd(&post, &last, CURLFORM_COPYNAME, "images", CURLFORM_COPYCONTENTS, image_base64.data(),
                     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
",
                    curl_easy_strerror(result_code));
            is_success = 1;
            return is_success;
        }
        json_result = face_audit_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 static class FaceAudit
	{

		// 图像审核
		public static string audit()
		{

			string token = "#####调用鉴权接口获取的token#####";
			string strbaser64 = FileUtils.getFileBase64("/Users/baidu/Documents/TestData/用户头像审核/一菲测试/123.JPG"); // 图片的base64编码
			string host = "https://aip.baidubce.com/rest/2.0/solution/v1/face_audit?access_token=" + token;
			Encoding encoding = Encoding.Default;
			HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
			request.Method = "post";
			request.ContentType = "application/x-www-form-urlencoded";
			request.KeepAlive = true;
			String str = "imgUrls=" + HttpUtility.UrlEncode("http://n.sinaimg.cn/news/transform/20170522/3mH2-fyfkzhs8600955.jpg");
			// 调用方有自定义configId的情况
			// String str ="configId=【用户自定义configId】" + "imgUrls=" + HttpUtility.UrlEncode("http://n.sinaimg.cn/news/transform/20170522/3mH2-fyfkzhs8600955.jpg");
			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;

		}
	}
}