OCR 接口的 Key 本质上只是一张身份凭证,但 OCR 的使用场景有它的特殊性:批量处理票据、证件和扫描件,任务往往在后台跑,Key 一旦泄露,别人消耗的是你的额度,泄露的可能是客户资料。很多团队第一次接入时会把控制台登录密码、网页账号和 API Key 混在一起,也会把测试 Key 直接带进生产。

本文按实际接入顺序讲:先分清 Key 的类型,再走注册和创建流程,然后处理权限、额度、环境变量、401 排查、官方与网关的选择,最后是轮换和泄露处理。

说明:OpenAI、Google、Microsoft、阿里云、腾讯云、百度及其他文中提及的品牌均为其权利人的商标。本文仅用于技术说明,与相关厂商无隶属关系;接口、权限、计费规则以各平台官方文档及站内页面为准。

一、先分清 OCR 的三种鉴权方式

OCR 接口的 Key 没有统一标准。接入前先确认目标平台属于哪一类,否则很容易出现“Key 没错但就是 401”的情况:

  • Bearer Key:OpenAI 兼容接口最常见,请求头是 Authorization: Bearer sk-...,聊天、视觉和 OCR 能力通常共用同一套鉴权。
  • Access Key + Secret Key:部分云厂商使用,请求需要按文档做签名,Secret 不能直接写进前端或日志。
  • API Key + Secret Key 换 token:先用 Key 和 Secret 调鉴权接口换取短期 access_token,再带 token 调用 OCR,过期要重新获取。

同一平台里,OCR 也可能和聊天模型共用一把 Key。能不能调某个 OCR 模型,取决于账号权限、模型授权和余额,而不是 Key 的类型。创建前先看控制台是否支持模型白名单、项目范围或子账号权限。

二、注册与创建 Key 的步骤

以中商起航 AI 网关为例,流程如下:

  1. 打开 https://ai.zhongshangqihang.com 或直接使用 注册链接,用邮箱注册并完成验证。
  2. 登录后进入控制台,在「API 密钥」页面查看已有 Key。
  3. 到「钱包」确认余额;测试阶段先充小额,避免一次性充太多。
  4. 点击「新建密钥」,填写名称、额度上限和过期时间;如果平台支持,限定可用模型。
  5. 保存后立即复制完整 Key。多数平台只显示一次,关闭页面后只能看到掩码。
  6. 用一张测试图片跑通请求,再到「用量日志」确认模型、调用次数和费用记录是否正常。

如果你用的是某家云厂商的原生 OCR,建议创建子账号,只授予 OCR 相关权限,不要拿主账号的 Access Key 做测试和上线。

三、创建时怎么填:名称、额度与过期时间

名称不是给平台看的,是给半年后的自己和账单排查看的。建议写成“用途 + 环境”的组合,例如 ocr-prod-batch、ocr-staging、ocr-dev-zhang,不要用“测试1”这类名字。

额度上限先设低,确认一批真实图片的消耗后再提高。过期时间按用途区分:临时脚本设 7 天或 30 天,生产 Key 也要有固定轮换周期。一个可执行的分配方式如下:

场景 Key 命名 额度 存放位置 轮换周期
本地开发 ocr-dev-姓名 最低档 本机 .env 30 天
测试环境 ocr-staging 低 CI/CD Secret 60 天
生产批量 ocr-prod-batch 按预算 密钥管理服务 90 天
生产实时 ocr-prod-realtime 按预算 密钥管理服务 90 天

如果平台支持按模型限制权限,只勾选需要用到的 OCR 或视觉模型;如果只能按项目隔离,就至少做到项目和额度分开。不要把同一把 Key 同时用于本地调试、测试环境和线上生产。

四、权限设计的四个原则

  • 一用途一 Key:批量识别、实时接口、管理脚本分开。某一类任务出异常时,可以直接停用对应的 Key,不影响其他业务。
  • 最小权限:能只开 OCR 就不开全部模型;能用子账号就不发主账号 Key;能限制项目就不给账号级权限。
  • 前端不放 Key:浏览器、App、小程序里的 Key 一定会被提取。图片上传和 OCR 请求必须经过你自己的后端,由后端持有 Key。
  • 生产和测试隔离:测试 Key 泄露不会影响生产账单,也不会让测试流量污染生产用量记录。

OCR 往往涉及发票、合同、身份证件等敏感材料。Key 的权限在某种程度上等同于数据访问权限,除了控制谁能调用,还要确认平台是否留存原图、留存多久、是否用于训练,以及日志里会不会出现图片内容。生产环境如果支持 IP 白名单,建议开启,并保留调用审计记录。

五、把 Key 放进环境变量

不要硬编码在代码里,也不要提交到 Git。Python 项目可以这样读取:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ZSQH_API_KEY"],
    base_url="https://ai.zhongshangqihang.com/v1",
)

resp = client.chat.completions.create(
    model=os.environ["OCR_MODEL"],  # 填价格页上支持图片输入的模型名
    messages=[{"role": "user", "content": "只回复 OK"}],
)
print(resp.choices[0].message.content)

这段代码只验证两件事:Key 能通过鉴权,Base URL 和模型名没有写错。确认连通后,再换成真实的图片请求。

本地用 .env 时,把文件加入 .gitignore,只提交 .env.example。生产环境优先使用容器 Secret、云厂商密钥管理或 Vault 一类服务,不要把 Key 写进 Dockerfile、镜像层、前端打包产物或 CI 日志。修改环境变量后记得重启进程;很多“线上 401、本地正常”的问题,原因是服务读到的还是旧变量,或者部署平台没有把变量注入运行环境。

六、401 排查顺序

遇到 401 Unauthorized,按这个顺序查,通常几分钟能定位:

  1. 检查请求头是否为 Authorization: Bearer sk-...,Bearer 和 Key 之间是一个空格。
  2. 重新复制 Key,确认没有空格、换行、引号或不可见字符。
  3. 确认 Key 没有被删除、禁用或过期。
  4. 确认 Key 与 Base URL 属于同一平台,不要把 A 平台的 Key 发到 B 平台。
  5. 在进程里打印环境变量的长度(不要打印内容),确认读到的是值而不是空字符串。
  6. 检查反向代理、网关或 SDK 是否改写了 Authorization 头;上传 multipart 表单时尤其容易丢头。
  7. 如果只有部分请求失败,检查是否有人在前端暴露了 Key,导致 Key 被风控停用。

还要区分错误类型:401 是身份问题,403 多是权限或地区限制,413 常见于图片过大,429 多是频率或额度问题。OCR 的 400 经常是图片格式、Base64 编码或文件损坏,不要一律归因于 Key。

七、官方 Key 还是网关 Key

两条路都能用,差别主要在采购、网络和维护:

  • 官方直连:账号、账单和模型都由原厂管理,适合有对应支付能力、能自己处理网络和合规的团队。如果只用一家 OCR,直连路径最短;缺点是不同厂商的鉴权方式不同,多接几家就要维护多套 Key、签名和账单。
  • 网关接入:一个 Base URL、一把 Key 调多家模型,国内访问和人民币结算更省事,日志和限额也集中。代价是多了一层依赖,需要确认服务商的数据政策、可用性、故障通知方式和发票支持。

选择时不要只看价格。至少确认:图片和识别结果是否会被留存、是否支持发票、模型下线有没有提前公告、能否导出用量记录、出现故障时如何联系。具体模型和价格以 模型价格 当前展示为准,价格会调整,不要按旧文章的数字做预算。

八、轮换与泄露处理

建议把轮换做成固定动作,而不是出事才做:

  1. 在原平台创建一把同权限的新 Key。
  2. 更新环境变量或密钥管理服务中的值。
  3. 重启或重新部署服务,发送一张测试图片确认成功。
  4. 观察 24 到 48 小时的用量日志,确认没有异常调用。
  5. 停用并删除旧 Key,记录轮换时间和操作人。

怀疑泄露时,顺序要反过来:先停用旧 Key,再查用量日志和调用来源,检查代码仓库历史、CI 日志、镜像层和第三方缓存,最后创建新 Key。只删代码里的字符串不够,Key 可能已经被复制到别处。如果账号里有余额,还要评估是否需要临时降低额度。

常见问题

OCR 的 Key 和聊天模型的 Key 是同一把吗?

在 OpenAI 兼容平台上通常是同一套鉴权,同一把 Key 既能调聊天,也能调支持图片输入的视觉模型。能否调用取决于账号权限和模型授权,而不是 Key 的类型。

Key 创建后还能看到完整内容吗?

通常不能。完整 Key 只在创建时显示一次,之后只保留前缀或掩码。没保存就删除重建,不要试图从日志或浏览器缓存里找回。

为什么本地能调,服务器却返回 401?

优先查三件事:线上环境变量是否注入、反向代理是否保留 Authorization 头、线上是否用了另一把已删除或过期的 Key。其次再确认 Base URL 是否指向了错误的平台。

OCR 按张计费还是按 Token 计费?

两种都有。传统 OCR 多按图片张数或页数计费,多模态模型通常按输入图片折算的 Token 加输出 Token 计费。具体规则以平台文档和 模型价格 为准。

Key 泄露后删掉就够了吗?

不够。先停用 Key,再查用量日志确认是否有异常调用,检查代码仓库、CI 日志和镜像历史,最后轮换所有可能受影响的 Key。如果涉及客户证件或票据,还要按内部安全流程评估是否需要通知。

下一步

如果还没有账号,可以从 注册页 开始,创建一把低额度 Key,先用一张测试图片跑通鉴权。跑通后再看 模型价格 选择正式使用的模型。接入细节和结构化字段的处理,可以继续读下面的接入教程。

相关阅读: