文本同步识别
1. 接口介绍
该接口对文本中的色情、涉政、暴恐、敏感、广告、谩骂等违法低质内容进行识别及过滤,并实时返回审核结果。 业务流程如下:
提示
- 接口并发限制:默认每秒请求数不超过 50 次;
- 字数限制:同步文本识别接口最大支持 2,000 个字符识别;
- 支持语种:文本审核默认识别中英文,如需识别其他语种(例如,日语、韩语、泰语、越南语、马来语、印尼语、 印地语、菲律宾语、阿拉伯语、土耳其语、俄语、德语、法语、意大利语、西班牙语、葡萄牙语等)中的风险内容, 请联系我们进行相应配置,以保证识别效果。
1.1 接入指南
- 联系客户经理开通账号
- 同客户经理沟通详细需求与审核标准。根据您的需求,客户经理将为您开通对应的应用(SID)
- 访问控制台 - 数字证书 获取 API 鉴权所需的密钥
- 点击 签名及验证示例 查看签名示例,了解如何生成鉴权所需的签名
- 查阅下方的接口参数文档,了解如何构建请求以及如何解析响应数据
- 使用 示例资源 调用接口,进行调试和测试
- 查阅 审核场景汇总结果说明,了解如何通过汇总结果判断内容是否违规,以及如何解析汇总结果
- 添加异常处理逻辑,以处理可能出现的错误和异常情况,增强代码的健壮性和稳定性
如果在接入过程中遇到任何技术问题,请联系客户经理以获取帮助。
2. 请求
2.1 请求地址
- v3.1(预览)
- v3
区域 | 请求地址 |
---|---|
国内 | https://api.text.tuputech.com/v3.1/recognition/text/<secretId> |
国外 | https://api-oversea.text.tuputech.com/v3.1/recognition/text/<secretId> |
区域 | 请求地址 |
---|---|
国内 | https://api.text.tuputech.com/v3/recognition/text/<secretId> |
国外 | https://api-oversea.text.tuputech.com/v3/recognition/text/<secretId> |
提示
<secretId>
需替换为您的应用 SID
,请联系客户经理为您开通及配置。关于 SID
详见 常见问题(FAQ)。
2.2 请求方法
POST
2.3 请求头
Content-Type: application/json
2.4 超时时间及异常处理
建议配置超时时间 1
秒(如文本较长,建议适当增加超时时间),在 HTTP 响应状态码非 200
或业务状态码不为 0
时进行重试。
2.5 请求参数说明 🔥
- v3.1(预览)
- v3
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
text | String | 是 | 待检测的文本内容,最大支持 2,000 字符 |
language | String | 否 | 语言种类代码(预览),在进行多语种文本审核时填写。支持的语言种类及代码列表详见: 语言代码列表 |
customInfo | Object<String, Any> | 否 | 自定义信息,为识别任务添加业务信息(如房间 ID、文件 ID 等)或其他扩展参数,详见 自定义信息参数说明 |
nonce | Float | 是 | 随机数(建议使用 Unix 时间戳或若干位随机整数) |
timestamp | Int | 是 | 当前服务器的 Unix 时间戳 |
signature | String | 是 |
|
自定义信息参数说明
参数名称 | 类型 | 是否必需 | 说明 |
---|---|---|---|
contentId | String | 否(建议填入) | 自定义文本 ID(指定时可在控制台根据此字段搜索识别结果) |
userId | String | 否 | 用户 ID(指定时可在控制台根据此字段搜索识别结果) |
forumId | String | 否 | 板块 ID(指定时可在控制台根据此字段搜索识别结果) |
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
text | Array<Text> | 是 | 文本内容, 详见 Text 参数说明 |
language | String | 否 | 语言种类代码(预览),在进行多语种文本审核时填写。支持的语言种类及代码列表详见:语言代码列表 |
nonce | Float | 是 | 随机数(建议使用 Unix 时间戳或若干位随机整数) |
timestamp | Int | 是 | 当前服务器的 Unix 时间戳 |
signature | String | 是 |
|
Text 参数说明
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
content | String | 是 | 待检测的文本内容,最大支持 2,000 字符 |
contentId | String | 否(建议填入) | 自定义文本 ID(指定时可在控制台根据此字段搜索识别结果) |
userId | String | 否 | 用户 ID(指定时可在控制台根据此字段搜索识别结果) |
forumId | String | 否 | 板块 ID(指定时可在控制台根据此字段搜索识别结果) |
2.6 请求示例
- v3.1(预览)
- v3
{
"text": "<文本内容>",
"language": "<language>",
"customInfo": {
"contentId": "<文本 ID>",
"userId": "<用户 ID>",
"forumId": "<板块 ID>"
},
"nonce": 1685000000,
"timestamp": 1685000000,
"signature": "<signature>"
}
{
"text": [
{
"content": "<文本内容>",
"contentId": "<文本 ID>",
"userId": "<用户 ID>",
"forumId": "<板块 ID>"
}
],
"nonce": 1685000000,
"timestamp": 1685000000,
"signature": "<signature>"
}
3. 同步响应
3.1 响应参数说明 🔥🔥
参数名称 | 类型 | 说明 |
---|---|---|
signature | String | 同步响应或回调请求签名,由图普使用私钥签名,在需要时,您可以通过 图普公钥
进行验签以确保此响应内容来自图普(与您调用接口时使用的公私钥不同)。验签步骤:
|
json | String | 同步响应或回调请求经过 JSON 转义后的字符串,需进一步解析得到业务数据。
|
- v3.1(预览)
- v3
JSON 参数说明
参数名称 | 类型 | 是否必有 | 说明 |
---|---|---|---|
code | Int | 是 | 请求状态码,详见 业务状态码 |
message | String | 是 | 状态信息 |
requestId | String | 是 | 请求 ID |
suggestion | Int | 否 | 当前文本汇总结果,整体的通过/拒绝情况,参考 审核场景汇总结果说明 |
riskType | Int | 否 | 当前文本汇总结果,整体的风险类型,参考 审核场景汇总结果说明 |
customInfo | Object<String, Any> | 否 | 提交的自定义信息,请求参数中的 customInfo |
<任务 ID> | Object | 是 | 识别任务的结果,每个识别任务会有 全局固定不变 的 taskId 和对应数据结构,详见下述链接:1. 图片类任务结果 2. 文本类任务结果 3. 语音类任务结果 |
timestamp | Int | 是 | 当前服务器的 Unix 时间戳 |
nonce | Float | 是 | 随机数(建议使用 Unix 时间戳或若干位随机整数) |
JSON 参数说明
参数名称 | 类型 | 是否必有 | 说明 |
---|---|---|---|
code | Int | 是 | 请求状态码,详见 业务状态码 |
message | String | 是 | 状态信息 |
summary | Array<Summary> | 否 | 应用下所有任务的汇总结果,数组长度与入参图片数量对应,汇总结果详见 汇总结果解析。summary 参数详见 Summary 参数说明 |
<任务 ID> | Object | 是 | 识别任务的结果,每个识别任务会有 全局固定不变 的 taskId 和对应数据结构,详见下述链接:1. 图片类任务结果 2. 文本类任务结果 3. 语音类任务结果 |
timestamp | Int | 是 | 当前服务器的 Unix 时间戳 |
nonce | Float | 是 | 随机数(建议使用 Unix 时间戳或若干位随机整数) |
Summary 参数说明
参数名称 | 类型 | 是否必有 | 说明 |
---|---|---|---|
code | Int | 是 | 图片识别状态码,详见 业务状态码 |
name | String | 是 | 图片 url 或文件名 |
suggestion | Int | 否 | 建议的操作,详见汇总结果解析中的 Suggestion 处理建议说明 |
riskType | Int | 否 | 风险类型,详见汇总结果解析中的 RiskType 风险类型说明 |
riskTask | String | 否 | 风险任务 ID |
tag | String | 否 | 图片业务信息 |
3.2 审核结果解析伪代码
下述给出不同使用场景下,解析审核结果的伪代码示例供参考。
3.2.1 仅关注文本是否违规,以及是否需要复审
- v3.1(预览)
- v3
// 1. 解析审核结果的 json 字段
result = JSON.parse(Response.json)
// 2. 校验请求整体是否处理成功,否的话进入整体错误处理流程
if (result.code != 0) {
handleError(result)
return
}
// 3. 检查文本的汇总结果
switch (result.suggestion) {
// 3.1 汇总通过,进入正常数据处理流程
case 0:
handlePass(result)
continue
// 3.2 汇总拒绝,疑似违规,进入违规数据处理流程
case 1:
handleReject(result)
continue
// 3.3 汇总复审,可能违规,进入数据人工复审处理流程
case 2:
handleReview(result)
continue
}
// 1. 解析审核结果的 json 字段
result = JSON.parse(Response.json)
// 2. 校验请求整体是否处理成功,否的话进入整体错误处理流程
if (result.code != 0) {
handleError(result)
return
}
// 3. 遍历汇总结果,检查每条文本的汇总结果
for (const summary of result.summary) {
// 3.1 校验该文本是否处理成功,否的话进入单条数据错误处理流程
if (summary.code != 0) {
handleError(summary)
continue
}
switch (summary.suggestion) {
// 3.2 汇总通过,进入正常数据处理流程
case 0:
handlePass(result)
continue
// 3.3 汇总拒绝,疑似违规,进入违规数据处理流程
case 1:
handleReject(result)
continue
// 3.4 汇总复审,可能违规,进入数据人工复审处理流程
case 2:
handleReview(result)
continue
}
}
3.2.2 当文本疑似违规时,解析风险类型
- v3.1(预览)
- v3
// 1. 解析审核结果的 json 字段
result = JSON.parse(Response.json)
// 2. 校验请求整体是否处理成功,否的话进入整体错误处理流程
if (result.code != 0) {
handleError(result)
return
}
// 3. 解析风险类型
handleRiskType(result.riskType)
// 1. 解析审核结果的 json 字段
result = JSON.parse(Response.json)
// 2. 校验请求整体是否处理成功,否的话进入整体错误处理流程
if (result.code != 0) {
handleError(result)
return
}
// 3. 遍历汇总结果,检查每条文本的汇总结果,解析风险类型
for (const summary of result.summary) {
if (summary.code == 0 && summary.suggestion == 1) {
handleRiskType(summary.riskType)
}
}
3.3 响应示例
- v3.1(预览)
- v3
{
"code": 0,
"message": "success",
"requestId": "<requestId>",
"suggestion": 1,
"riskType": 1,
"customInfo": {
"contentId": "<contentId>"
},
"57c4036c557603652aeeb222": {
"texts": [
{
"content": "<文本内容>",
"label": 3,
"review": false,
"rate": 1,
"details": [
{
"keyword": "<关键词>",
"hint": "<文本内容>",
"mainLabel": 3,
"subLabel": "Political_Negative_events",
"startPos": 0,
"endPos": 3
}
]
}
]
},
"nonce": 1685000000,
"timestamp": 1685000000
}
{
"code": 0,
"message": "success",
"summary": [
{
"code": 0,
"message": "ok",
"suggestion": 1,
"riskType": 1,
"riskTask": "57c4036c557603652aeeb222"
}
],
"57c4036c557603652aeeb222": {
"texts": [
{
"content": "<文本内容>",
"action": "block",
"label": "Politics",
"review": false,
"rate": 1,
"details": [
{
"keyword": "<关键词>",
"hint": "<文本内容>",
"mainLabel": "Politics",
"subLabel": "Political_Negative_events",
"startPos": 0,
"endPos": 3
}
]
}
]
},
"nonce": 1685000000,
"timestamp": 1685000000
}
4. 更新日志
日期 | 说明 |
---|---|
2025-02-06 | 新增 v3.1 版本(预览) |
2025-01-03 | 新增接入指南 |
2024-12-20 | 新增 language 参数(预览),用于在进行多语种识别时,指定语言种类 |
2024-12-18 | 新增《审核结果解析伪代码》章节,为如何解析审核结果提供参考 |