Skip to main content
文档
学习中心

通过完整指南、教程和 API 文档,掌握内容审核

快捷链接

OCR 文本提取

Discuse 可以从图片和文档中提取文本,让你能够读取并审核那些原本会被文本过滤器忽略的内容。向 POST /api/v2/ocr 最多发送 5 个图片或文档 URL,你将收到识别出的文本;默认情况下,这些文本还会经过你项目的内容检查。

为什么审核需要 OCR?

大量滥用内容都藏在图片里:嵌入表情包中的辱骂词、截图里的钓鱼链接、传单上的诈骗电话号码。普通文本检查根本看不到这些内容。OCR 会先提取文字,因此你已经用于文本的情绪、垃圾内容、敏感词和语言检查,也同样适用于图片和文档内容。

如何提取文本?

发送一个或多个文件 URL。moderate 默认值为 true,因此提取出的文本也会被检查,并返回一个 results 对象;如果你只想获取原始文本,请将其设为 false

curl -X POST https://api.discuse.com/api/v2/ocr \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "file_urls": ["https://example.com/user-meme.jpg"],
    "moderate": true
  }'

单个请求最多可接受 5 个图片或文档 URL。

响应

{
  "text": "BUY FOLLOWERS NOW — dm @spammer for 50% off",
  "has_text": true,
  "num_files": 1,
  "has_violations": true,
  "results": {
    "hits": true,
    "spamfinder": {
      "label": "spam",
      "confidence": 0.94,
      "is_spam": true,
      "hit": true
    }
  },
  "usage": {
    "api_requests_used": 412,
    "api_requests_limit": 10000,
    "api_requests_remaining": 9588
  }
}

moderatefalse(或未找到文本)时,results 会被省略,has_violationsfalse —— 你只会得到提取出的 text

请求字段

字段 类型 说明
api_key string 可选,放在请求体中;也可以改用 X-API-Key 发送
file_urls string[] 要读取的图片或文档 URL。至少需要一个,最多 5 个
moderate boolean 是否对提取出的文本执行文本检查。默认值为 true

响应字段

字段 类型 描述
text string 识别出的文本,会合并所有文件中的内容
has_text boolean 如果识别到任何非空文本,则为 True
num_files number 成功读取的文件数量
has_violations boolean 如果审核后的文本触发了某项检查,则为 True
results object 文本检查结果(见文本分析),仅在执行了审核且找到文本时出现
usage object api_requests_used, api_requests_limit, api_requests_remaining

results 对象的结构与 POST /api/v2/check 相同 —— 包含 spamfindersentimentlanguagebadwords 以及顶层的 hits 标志。字段详情请参阅文本分析

使用限制

OCR 是付费套餐功能;你提取的每个文件都会计入一次 OCR 配额。

套餐 每月 OCR 提取次数 超额费用
Basic 不可用 -
Gold 1,000 $0.0015/次提取
Platinum 2,000 $0.001275/次提取(15% 折扣)
Ultimate 4,000 $0.001125/次提取(25% 折扣)

如果项目没有有效订阅,OCR 请求将被拒绝。

最佳实践

一次调用完成审核

当你的目标是发现图片中的政策违规内容时,请保持 moderate 开启(默认设置)。一次 OCR 调用会同时提取文本并进行检查,而无需先调用 OCR、再单独调用 /check

async function moderateImage(fileUrl) {
  const res = await ocr([fileUrl], true);
  if (res.has_violations) {
    await flagForReview(fileUrl, res.results);
  }
  return res.text;
}

操作前先检查 has_text

没有可读文本的图片会返回 has_text: false 和空的 text。请根据它进行分支处理,避免把“没有内容可读”误判为“干净且已确认”。

批量提交相关文件

如果一次提交包含多张图片,请将它们一起发送(最多 5 个)到同一个请求中,而不是每个文件调用一次 —— 这样可以减少往返请求,并获得一次计入配额的响应。

集成示例

Node.js

async function ocr(fileUrls, moderate = true) {
  const response = await fetch('https://api.discuse.com/api/v2/ocr', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.DISCUSE_API_KEY
    },
    body: JSON.stringify({ file_urls: fileUrls, moderate })
  });
  return response.json();
}

Python

import os
import requests

def ocr(file_urls, moderate=True):
    response = requests.post(
        'https://api.discuse.com/api/v2/ocr',
        headers={
            'Content-Type': 'application/json',
            'X-API-Key': os.environ['DISCUSE_API_KEY']
        },
        json={'file_urls': file_urls, 'moderate': moderate}
    )
    return response.json()

准备好从图片中读取文本了吗?开始使用 Discuse

Discuse 团队 撰写 · 最后更新于 June 2026

相关文章

文本分析和情感检测

检测垃圾内容、毒性、脏话,并分析文本内容中的情感

图像 NSFW 检测

自动检测并过滤不当图像和成人内容

垃圾内容检测

由 AI 驱动的文本和消息垃圾内容过滤