# 客服/审核后台赋能:一键识别用户上传图片中的文字
> 接口 926(接入点 926-1) · 免费 · POST/GET · JSON · 适用人群:客服/审核/后台系统开发者 · 阅读时间:约 6 分钟
## 核心要点
- 把识别嵌进后台:用户上传图片 → 转 base64 → 调接口 → 自动填充/标红,省去人工逐字看。
- 用 `confidence` 做低置信度标记,让人工只复核「不确定的行」,而非全部。
- 免费接口、接入成本低,适合作为客服/审核流程的辅助提取层。
## Why:让客服从「看图打字」中解放
客服经常要处理用户发来的截图、凭证、单据——过去靠人眼读图、手敲文字,慢且易错。把印刷体OCR识别接到后台,用户一上传,文字自动提取出来,客服一眼就能核对,低置信度的再标红提醒。这是性价比很高的小改造。
## What:接入点速览
| 项目 | 说明 |
|------|------|
| 接口 | 926-1 印刷体图片文字识别 |
| 入参 | `img_base64`(前端上传图转码)或 `img_url` |
| 出参 | `str`(整段)/ `list`(逐行+坐标+置信度) |
| 成本 | 免费(按档次限流) |
## How:后台一键识别(Python + Flask 示例)
```python
import base64, requests
from flask import Flask, request, jsonify
app = Flask(__name__)
ENDPOINT = "https://route.showapi.com/926-1"
@app.route("/ocr", methods=["POST"])
def ocr():
# 前端传 base64(去掉 data: 前缀)
raw = request.json.get("img_base64", "")
b64 = raw.split(",", 1)[-1] if "," in raw else raw
r = requests.post(ENDPOINT, params={"appKey": "YOUR_APPKEY"},
data={"img_base64": b64, "need_all_region": "1"}, timeout=10)
rb = r.json()["showapi_res_body"]
if rb["ret_code"] != 0:
return jsonify({"ok": False, "msg": rb.get("remark")}), 422
items = rb.get("list") or [{"text": rb.get("str", ""), "confidence": 1.0}]
# 低置信度标记(阈值自定)
for it in items:
it["need_review"] = it.get("confidence", 1) < 0.8
return jsonify({"ok": True, "items": items})
```
**Node.js(Express)**
```javascript
import express from "express";
import fetch from "node-fetch";
const app = express();
app.use(express.json());
app.post("/ocr", async (req, res) => {
const raw = req.body.img_base64 || "";
const b64 = raw.includes(",") ? raw.split(",")[1] : raw;
const r = await fetch("https://route.showapi.com/926-1?appKey=YOUR_APPKEY", {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ img_base64: b64, need_all_region: "1" }),
});
const rb = (await r.json()).showapi_res_body;
if (rb.ret_code !== 0) return res.status(422).json({ ok: false, msg: rb.remark });
const items = rb.list || [{ text: rb.str, confidence: 1 }];
items.forEach((it) => (it.need_review = (it.confidence ?? 1) < 0.8));
res.json({ ok: true, items });
});
app.listen(3000);
```
**前端直传(无后端 Demo)**:见《浏览器端实战:HTML+JS 调用》。
## 返回示例与解析
成功 `ret_code=0`,`list` 每项带 `confidence`;用阈值(如 0.8)标 `need_review`,前端对 `need_review=true` 的行标黄。
## 应用模式
| 场景 | 用法 |
|------|------|
| 客服核对凭证 | 用户传图→自动提取文字→客服对照,低置信度行高亮 |
| 审核辅助 | 批量上传→逐张识别→结果进审核队列,异常(70/空)自动标红 |
| 工单自动填充 | 识别结果回填表单字段,减少人工录入 |
## 进阶 / 边界
- **只作辅助,不作裁决**:OCR 结果尤其手写/模糊场景可能错,关键字段(金额、账号)必须人审。
- **隐私合规**:用户上传的证件/票据含个人信息,传输与存储需加密、按需脱敏、定期清理。
- **限流适配**:客服高峰并发可能触顶,参考《10 并发与档位优化》做队列削峰。
## FAQ
**Q1:用户发的是手写单据能直接用吗?**
A1:仅工整楷书部分可识别且不稳定,建议对低置信度行强制人工复核,不自动采信。
**Q2:识别结果能直接入库当最终数据吗?**
A2:不建议。OCR 是「提取建议」,尤其金额/编号类关键字段应经人审或二次校验。
**Q3:前端直接调接口安全吗?**
A3:AppKey 会暴露在前端,仅适合内部工具/演示;对外产品应由后端代理调用(见上方示例)。
**Q4:大量并发上传会限流吗?**
A4:会,并发上限 10;用后端队列+并发池(≤8)削峰,详见限流优化篇。
## 相关能力 / 下一步阅读
- [浏览器端实战:HTML+JS 调用印刷体OCR识别(含本地图片预览)](https://www.showapi.com/guides/printed-ocr-web-demo-926)
- [免费接口也限流:印刷体OCR识别的 10 并发与档位优化指南](https://www.showapi.com/guides/printed-ocr-limit-cost-926)
- [印刷体OCR识别:用 need_all_region 获取每行文字坐标与置信度](https://www.showapi.com/guides/printed-ocr-coordinates-926)
- **本系列共 12 篇**:查看[印刷体OCR识别指南总目录](https://www.showapi.com/guides/printed-ocr-guides-926)