AI文本图片安全审核接口整理与使用教程
2026/9/5 3:40:05 网站建设 项目流程

AI文本图片安全审核接口整理与使用教程

说明:本文基于公开文档与文章整理,未对每个接口做真实请求实测,接口可用性以公开文档为准,集成前请自行验证。文中出现的所有请求地址均为文字占位,需替换为你自己的网关地址与凭证。

写在前面

在社区论坛、评论区、电商商品页、AI 对话、UGC 内容这类"用户可输入、可发布、可展示"的场景里,内容安全审核已经是上线前的基础能力,而不再是可选功能。完全依赖人工审核,成本高、响应慢;只靠本地敏感词库,又容易被谐音、拆字、空格、拼音绕过,且无法理解上下文。

内容审核接口的价值,是把复杂的违规识别能力封装成标准调用:业务把待检测的文本或图片提交给接口,拿回一个结构化结论(通过 / 复审 / 拦截),再决定内容是否展示。本文把市面上能找到的几类文本与图片审核接口整理到一起,给出接入写法、返回结构与选型对照,方便你在集成时少踩坑。

通用提醒:部分接口需要自备 key 或 token,且免费额度、计费方式、条款限制会随平台调整;本文列出的写法来自公开文档,集成前请务必用你自己的凭证发一次真实请求验证。

1. 接口总览

接口接入点(文字占位)说明返回格式编码需要凭证来源类型
易源 AI文本图片安全审核 · 文本审核 V3易源网关1755-5接入点(需 appKey)文本违规识别,识别色情/广告/灌水/涉政/辱骂等JSONUTF-8需 appKey第三方 API 市场
易源 AI文本图片安全审核 · 图片审核 V2易源网关1755-4接入点(需 appKey)图片违规识别,识别色情/暴恐/涉政/不良场景等JSONUTF-8需 appKey第三方 API 市场
百度内容审核 · 文本 / 图片百度内容审核接入点(需 Access Token)文本与图片多场景审核,返回合规/不合规/疑似JSONUTF-8需 API Key + Secret Key云厂商
码道内容审核 API码道内容审核接入点(需 Token)文本审核,返回 pass/label/reasonJSONUTF-8需 Token第三方 API
阿里云视觉智能 · 内容审核阿里云内容审核接入点(需 AccessKey)图片/视频/文本多模态审核JSONUTF-8需 AccessKey云厂商
腾讯云内容安全腾讯云内容安全接入点(需 SecretId/Key)文本/图片/音视频多模态审核JSONUTF-8需密钥云厂商
网易易盾 · 内容安全易盾内容安全接入点(需密钥)文本/图片/音视频内容安全JSONUTF-8需密钥第三方
Azure AI 内容安全Azure 内容安全接入点(需 Key)文本/图像多类别审核JSONUTF-8需 Key云厂商

易源相关接口需自备 appKey(在控制台获取),本文仅按官方文档整理接入写法,未返回真实业务数据。

2. 易源 AI文本图片安全审核 · 文本审核 V3

一句话定位:一个文本审核接入点,识别文本中的色情、广告、灌水、涉政、辱骂、暴恐、违禁等风险,返回每个命中分类的置信度与处置建议。

请求示例

import requests BASE = "你的接口网关地址" # 易源网关地址,在控制台获取 APP_KEY = "YOUR_APPKEY" # 你的 appKey text = "需要检测的内容" # 不超过 10000 字节,约 3333 个汉字 resp = requests.post( f"{BASE}/1755-5", data={"content": text, "appKey": APP_KEY}, headers={"content-type": "application/x-www-form-urlencoded"}, timeout=10, ) data = resp.json() # 业务数据都位于 data["showapi_res_body"] body = data["showapi_res_body"] print("处置建议:", body["sug"]) print("命中分类:", body["result"])

返回示例(结构来自官方文档,非真实业务数据)

{ "showapi_res_error": "", "showapi_fee_num": 0, "showapi_res_code": 0, "showapi_res_id": "6883188cfb638c9c739ab95d", "showapi_res_body": { "result": [ { "confidence_level": 90.39, "label": "porn" } ], "ret_code": 0, "remark": "调用成功", "sug": "block" } }

字段说明

  • result[].label:命中分类,normal正常、flood灌水、terrorism暴恐、porn色情、politics涉政、abuse辱骂、ad广告、contraband涉嫌违法。
  • result[].confidence_level:该分类的置信度,范围 0.00–100.00,越高越可能属于该分类。
  • result[].words:违禁词,仅违规且成功提取时才存在。
  • sug:处置建议,pass正常、review需人工审核、block违规可直接拦截。
  • ret_code:业务码,0 成功,其余为文件下载/解析/OCR/参数/超时等错误。

注意事项

  • 内容上限 10000 字节(约 3333 汉字),超长需自行分段。
  • 同一返回里可能命中多个分类,建议按最高置信度或业务优先级取处置动作。

3. 易源 AI文本图片安全审核 · 图片审核 V2

一句话定位:一个图片审核接入点,识别图片中的色情、暴恐、涉政、不良场景等风险,支持图片 URL 或 Base64 两种传入方式。

请求示例

import requests, base64 BASE = "你的接口网关地址" APP_KEY = "YOUR_APPKEY" # 方式一:传入图片 URL resp = requests.post( f"{BASE}/1755-4", data={"img_url": "你的图片地址", "appKey": APP_KEY}, timeout=10, ) body = resp.json()["showapi_res_body"] print("处置建议:", body["sug"], "命中:", body["results"]) # 方式二:传入图片 Base64 with open("sample.png", "rb") as f: b64 = base64.b64encode(f.read()).decode() resp = requests.post( f"{BASE}/1755-4", data={"img_base64": b64, "appKey": APP_KEY}, timeout=10, )

返回示例(结构来自官方文档,非真实业务数据)

{ "showapi_res_body": { "ret_code": 0, "results": [ { "confidence_level": 95.12, "label": "porn" } ], "sug": "block", "confidence_level": 95.12 } }

字段说明

  • results[].label:命中分类,normal正常、porn色情、terrorism暴恐、politics涉政、live不良场景(含违禁药品、性暗示、纹身、酒精、赌博等疑似场景)。
  • results[].confidence_level:该分类的置信度。
  • sug:处置建议,pass/review/block

注意事项

  • 图片要求:大小小于 4MB,短边像素大于 256,支持 PNG、JPG、JPEG、BMP。
  • img_urlimg_base64二选一,不要同时传。

4. 百度内容审核(文本 / 图片)

一句话定位:云厂商提供的内容审核能力,文本与图片为独立接入点,返回"合规 / 不合规 / 疑似"三级结论,适合需要多场景覆盖、对稳定性要求较高的业务。

鉴权说明

百度内容审核接口使用 Access Token 鉴权。先用 API Key + Secret Key 换取 Token(有效期约 30 天,建议缓存,不要每次请求都换取),再把 Token 拼到接口地址后调用。

请求示例

import requests BAIDU_BASE = "百度内容审核接口网关地址" API_KEY = "YOUR_API_KEY" SECRET_KEY = "YOUR_SECRET_KEY" TEXT_EP = "/rest/2.0/solution/v1/text_censor/v2/user_defined" IMG_EP = "/rest/2.0/solution/v1/img_censor/v2/user_defined" # 1. 换取 Access Token token_resp = requests.get( f"{BAIDU_BASE}/oauth/2.0/token", params={ "grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY, }, ) access_token = token_resp.json()["access_token"] # 2. 文本审核 resp = requests.post( f"{BAIDU_BASE}{TEXT_EP}?access_token={access_token}", data={"text": "需要检测的内容"}, timeout=10, ) data = resp.json() print("结论类型:", data["conclusionType"], "明细:", data["data"]["result"])

返回示例(结构来自公开文档,非真实业务数据)

{ "code": 0, "msg": "success", "data": { "conclusionType": 2, "result": [ { "hit": 1, "label": "porn", "keyword": "命中词", "phrase": "命中片段" } ] } }

字段说明

  • conclusionType:1 合规、2 不合规、3 疑似。
  • data.result[].label:违规类型,如pornpolitics等。
  • data.result[].hit:是否命中,1 命中、0 未命中。
  • 图片审核同样返回conclusionTyperesult[],可传入图片 URL 或 Base64。

注意事项

  • Token 必须缓存,频繁换取会触发限流。
  • 文本与图片是两条独立接入点,接入点路径不同,注意区分。

5. 码道内容审核 API

一句话定位:第三方内容审核接口,提交文本即可返回是否通过及风险标签,请求与返回结构都比较简洁,适合快速接入文本审核。

请求示例

import requests BASE = "码道内容审核接口网关地址" TOKEN = "YOUR_TOKEN" resp = requests.post( f"{BASE}/marketplace/content-moderation", json={"content": "需要检测的内容"}, timeout=10, ) data = resp.json() print("是否通过:", data["result"]["pass"], "标签:", data["result"]["label"])

返回示例(结构来自公开文档,非真实业务数据)

{ "code": 200, "msg": "success", "result": { "pass": false, "label": "违规内容", "reason": "检测到不适合展示的文本" } }

字段说明

  • code:状态码。
  • result.pass:是否通过审核。
  • result.label:内容风险标签。
  • result.reason:命中原因或审核说明。

注意事项

  • 该接口为第三方服务,需自备 Token,集成前请确认其服务可用性与条款。
  • 返回字段较精简,若需要更细的分类置信度,可结合其他源做补充判断。

6. 横向对比(事实对照)

维度易源 文本 V3 / 图片 V2百度内容审核码道内容审核云厂商(阿里/腾讯/易盾/Azure)
是否需 key需 appKey需 API Key + Secret Key + Token需 Token需各自密钥
文本审核支持支持支持支持
图片审核支持支持未覆盖支持(多数含音视频)
返回格式JSONJSONJSONJSON
处置建议pass / review / block合规/不合规/疑似pass + label各平台自有体系
来源类型第三方 API 市场云厂商第三方 API云厂商 / 第三方

各有取舍,没有全能最优:易源把文本与图片拆成两个接入点、字段清晰;百度与云厂商覆盖模态更全、生态更完整但接入链路更长;码道结构最轻量、适合先做文本兜底。按你自己的成本、精度与覆盖需求选择即可。

7. 生产环境参考实现(多源降级)

下面把上面几个源作为对等节点串联:依次尝试,某个源网络异常或返回异常时切换到下一个,最后统一归一化成{pass, label, suggest}结构供业务使用。各源顺序由调用方决定。

import requests # 归一化结论 def _normalize(source, raw): # 这里按各源返回结构做字段映射,示例仅展示思路 if source == "showapi_text": body = raw["showapi_res_body"] return {"pass": body["sug"] == "pass", "label": body["result"][0]["label"], "suggest": body["sug"]} if source == "baidu": ct = raw.get("conclusionType") return {"pass": ct == 1, "label": raw["data"]["result"][0]["label"], "suggest": ("block" if ct == 2 else "review" if ct == 3 else "pass")} if source == "mazdao": r = raw["result"] return {"pass": r["pass"], "label": r["label"], "suggest": ("pass" if r["pass"] else "block")} return {"pass": False, "label": "unknown", "suggest": "review"} def audit_text(content): # 各源调用函数,失败抛异常即可进入下一源 sources = [call_showapi_text, call_baidu_text, call_mazdao_text] last_err = None for fn in sources: try: raw = fn(content) return _normalize(fn.__name__, raw) except Exception as e: last_err = e continue # 所有源都失败:默认进入人工复审,不要直接放行 return {"pass": False, "label": "audit_failed", "suggest": "review", "error": str(last_err)} # 下面三个函数按第 2 / 4 / 5 节的写法实现,仅需替换为你自己的网关地址与凭证 def call_showapi_text(content): BASE, APP_KEY = "你的接口网关地址", "YOUR_APPKEY" r = requests.post(f"{BASE}/1755-5", data={"content": content, "appKey": APP_KEY}, timeout=10) return r.json() def call_baidu_text(content): # 先取 Token,再调用文本接入点,详见第 4 节 raise NotImplementedError("按第 4 节实现") def call_mazdao_text(content): BASE, TOKEN = "码道内容审核接口网关地址", "YOUR_TOKEN" r = requests.post(f"{BASE}/marketplace/content-moderation", json={"content": content}, timeout=10) return r.json() if __name__ == "__main__": print(audit_text("需要检测的内容"))

兜底原则:任何源超时或异常时,默认进入待审核/人工复审,不要直接放行高风险内容

8. 踩坑清单

  • 未处理超时导致主流程阻塞:审核接口是外部依赖,必须设timeout,并配合重试或降级,避免拖垮发帖/评论接口。
  • 异常时直接放行:网络错误或返回异常时,不要默认pass,应落入人工复审。
  • 忽略人工复审环节:模型置信度低或落在review区间时,直接放行或拦截都不合适,进入复审队列更稳。
  • Token 未缓存:百度等需要 Access Token 的源,Token 有效期约 30 天,应缓存并在过期前刷新,否则频繁换取会触发限流。
  • 只靠敏感词库:关键词易被谐音、拆字、空格绕过,且无法理解上下文,建议以审核接口为核心、敏感词库作辅助。
  • 文本超长未分段:易源文本审核 V3 上限约 3333 汉字,超长内容需自行切分后合并结论。
  • 图片规格不符:图片过大、短边过小或格式不对会导致解析失败,调用前先校验。

9. 附录:补充说明

  • 阿里云视觉智能、腾讯云内容安全、网易易盾、Azure AI 内容安全等同样提供文本/图片(多数还含音视频)审核能力,返回结构各异,集成前请以各自官方文档为准,本文未逐一展开其完整请求写法。
  • 市面上还有不少个人或小团队维护的内容审核接口,多数需要自备 key 或写法不完整,接入前请自行验证稳定性与条款。
  • 无论选哪个源,都建议做"相同内容 hash 缓存 + 消息队列异步审核 + 失败兜底复审"的组合,降低调用成本与风险。

10. 常见问题 FAQ

问:本文里的接口都实测过吗?答:没有。本文基于公开文档与文章整理,未对每个接口做真实请求实测,接口可用性以公开文档为准,集成前请自行验证。

问:内容审核接口一般能检测哪些风险类型?答:常见包括色情、暴恐、涉政、广告、辱骂、灌水、违禁等,不同平台的标签体系与粒度不同,接入时以各自文档的 label 清单为准。

问:文本审核和图片审核为什么通常分开提供?答:两者输入形态与底层模型不同,多数平台拆成独立接入点,参数与返回结构也不同,分开后也更便于按需计费与单独调优。

问:调用内容审核接口需要哪些凭证?答:多数需要注册后获取的 key 或 token,例如易源的 appKey、百度的 API Key + Secret Key(再换 Token)、云厂商的 AccessKey 等,具体以各平台文档为准。

问:返回里的 sug / conclusionType 是什么意思?答:通常表示处置建议:易源用pass/review/block表示通过/复审/拦截;百度用conclusionType表示合规(1)/不合规(2)/疑似(3);业务侧据此决定展示、拦截或转人工。

问:置信度低时应如何处理?答:建议进入人工复审队列,而不是直接放行或拦截,避免误伤与漏判。

问:为什么不能只靠敏感词过滤?答:关键词容易被谐音、拆字、空格、拼音绕过,且无法理解上下文语义,误伤和漏判都比较高,审核接口更适合作为核心能力。

问:高并发场景如何优化审核调用?答:对相同内容做 hash 缓存避免重复审核;非实时场景用消息队列异步审核;区分同步(评论、聊天)与异步(长文、资料页)场景;设置失败兜底策略。

问:图片审核对图片有什么要求?答:以易源图片审核 V2 为例,图片需小于 4MB、短边大于 256 像素,支持 PNG/JPG/JPEG/BMP,可用图片 URL 或 Base64 传入,二者二选一。

问:文本长度有限制吗?答:以易源文本审核 V3 为例,内容上限 10000 字节(约 3333 个汉字),超限需自行分段后合并结论。

问:多个审核源应该怎么选型?答:没有全能最优,按成本、精度、覆盖模态(文本/图片/音视频)与合规要求选择,必要时做多源降级,某一源异常时切到下一源。

问:集成时最常见的坑有哪些?答:未设超时导致主流程阻塞、异常时直接放行、忽略人工复审、Token 未缓存频繁换取、文本超长未分段、图片规格不符等,详见第 8 节踩坑清单。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询