完整 API 文档
基础地址
1. 提交图片转 PPT 任务
该接口接收多张图片 URL,通过 SSE 返回处理进度。任务完成后,finished
如果 SSE 连接中途断开,后端任务仍会继续执行。调用方应保存 starteddebug_id
接口信息
- 方法:POST
- 路径:
https://docmee.cn/image-api/ocr/process-oss-urls-ppt-sse - 鉴权:请求头传
token - 请求体:
application/json - 响应体:
text/event-stream
Headers
| Header | 必填 | 示例 | 说明 |
|---|---|---|---|
token | 是 | token_xxx | 平台分配的调用凭证 |
Origin | 建议 | https://www.docmee.cn | 非浏览器国内调用建议显式携带,用于稳定识别国内账号体系 |
Accept | 否 | text/event-stream | 建议携带,表示客户端希望接收 SSE |
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
address | string | 是 | 地区参数。国内传 cn,海外传 sv |
items | object[] | 是 | 图片列表,每一项对应一页 PPT |
items[].image_url | string | 是 | 服务端可访问的图片 URL |
items[].remove_mode | string | 是 | 当前页处理模式,可选值为 text、elements、all |
max_concurrency | number | 否 | 最大并发处理页数。一般不需要传,由服务端自动决定 |
remove_mode 可选值
| 值 | 说明 |
|---|---|
text | 仅处理文字,输出可编辑文字层 |
elements | 仅处理元素,跳过文字去除 |
all | 同时处理文字和元素,输出更完整的可编辑 PPT |
请求示例
curl -N -X POST 'https://docmee.cn/image-api/ocr/process-oss-urls-ppt-sse' \ -H 'Content-Type: application/json' \ -H 'Accept: text/event-stream' \ -H 'Origin: https://www.docmee.cn' \ -H 'token: token_xxx' \ --data-raw '{ "address": "cn", "items": [ { "image_url": "https://example.com/slide-1.png", "remove_mode": "all" }, { "image_url": "https://example.com/slide-2.png", "remove_mode": "text" } ] }'
SSE 数据格式
服务端返回的是标准 SSE 文本流。每条有效消息都在 data:
data: {"eventName":"started","total":2,"debug_id":"20260528092108897"} data: {"eventName":"slide-started","index":0,"image_url":"https://example.com/slide-1.png","remove_mode":"all"}
解析规则:
- 读取
开头的行,并将后面的内容按 JSON 解析。data: - 以
开头的行是 keepalive,可忽略。: 在 JSON 内部,不依赖 SSE 的eventName 字段。event: 和finished 是最终事件;收到最终事件后可以关闭连接。failed
SSE 事件
| eventName | 说明 |
|---|---|
started | 任务开始,返回 debug_id |
slide-started | 某一页开始处理 |
slide-image-processing | 某一页图片处理进度 |
slide-text-processing | 某一页文字处理进度 |
slide-element-processing | 某一页元素处理进度 |
slide-background-processing | 某一页背景处理进度 |
slide-finished | 某一页处理成功 |
slide-failed | 某一页处理失败 |
export-started | 开始合成并上传 PPT |
finished | 整体完成,返回 PPT 下载地址 |
failed | 整体失败,通常表示所有页都未成功 |
started 事件示例
data: {"eventName":"started","total":2,"debug_id":"20260528092108897"}
| 字段名 | 类型 | 说明 |
|---|---|---|
eventName | string | 固定为 started |
total | number | 本次提交的图片数量 |
debug_id | string | 任务 ID。SSE 断开后,用该值查询任务状态 |
slide-failed 事件示例
data: {"eventName":"slide-failed","index":1,"reason":"资源紧张,请稍后重试"}
| 字段名 | 类型 | 说明 |
|---|---|---|
eventName | string | 固定为 slide-failed |
index | number | 失败页下标,从 0 开始 |
reason | string | 失败原因 |
export-started 事件示例
data: {"eventName":"export-started","success_count":1,"failed_count":1}
| 字段名 | 类型 | 说明 |
|---|---|---|
eventName | string | 固定为 export-started |
success_count | number | 成功页数 |
failed_count | number | 失败页数 |
finished 事件示例
data: {"eventName":"finished","url":"https://example.com/result.pptx","debug_id":"20260528092108897","success_count":2,"failed_count":0,"failed_items":[],"export_ppt_ms":1200.35,"upload_ppt_oss_ms":360.2,"ppt_size_bytes":1188498}
| 字段名 | 类型 | 说明 |
|---|---|---|
eventName | string | 固定为 finished |
debug_id | string | 任务 ID |
url | string | PPT 下载地址 |
success_count | number | 成功页数 |
failed_count | number | 失败页数 |
failed_items | array | 失败明细 |
export_ppt_ms | number | PPT 合成耗时,单位毫秒 |
upload_ppt_oss_ms | number | PPT 上传耗时,单位毫秒 |
ppt_size_bytes | number | PPT 文件大小,单位 bytes |
failed 事件示例
data: {"eventName":"failed","reason":"资源紧张,请稍后重试","failed_items":[{"index":0,"image_url":"https://example.com/slide-1.png","reason":"资源紧张,请稍后重试"}]}
| 字段名 | 类型 | 说明 |
|---|---|---|
eventName | string | 固定为 failed |
reason | string | 整体失败原因 |
failed_items | array | 失败页明细 |
2. 查询任务状态
当 SSE 连接断开、客户端未收到 finishedstarteddebug_id
查询接口不会重新生成 PPT,也不会扣积分;它读取服务端已保存的任务状态。
接口信息
- 方法:GET
- 路径:
https://docmee.cn/image-api/ocr/process-oss-urls-ppt-sse/{debug_id}/status - 鉴权:请求头传
token - 响应体:
application/json
Headers
| Header | 必填 | 示例 | 说明 |
|---|---|---|---|
token | 建议 | token_xxx | 建议携带与提交任务相同的调用凭证 |
Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
debug_id | string | 是 | 提交接口 started 事件返回的任务 ID |
请求示例
curl -X GET 'https://docmee.cn/image-api/ocr/process-oss-urls-ppt-sse/20260528092108897/status' \ -H 'token: token_xxx'
completed 响应示例
{ "debug_id": "20260528092108897", "status": "completed", "url": "https://example.com/result.pptx", "success_count": 2, "failed_count": 0, "failed_items": [], "ppt_size_bytes": 1188498, "batch_total_ms": 122425.12, "reason": null }
running 响应示例
{ "debug_id": "20260528092108897", "status": "running", "url": null, "success_count": null, "failed_count": null, "failed_items": [], "ppt_size_bytes": null, "batch_total_ms": null, "reason": null }
failed 响应示例
{ "debug_id": "20260528092108897", "status": "failed", "url": null, "success_count": 0, "failed_count": 2, "failed_items": [ { "index": 0, "image_url": "https://example.com/slide-1.png", "reason": "资源紧张,请稍后重试" } ], "ppt_size_bytes": null, "batch_total_ms": 60000, "reason": "资源紧张,请稍后重试" }
响应字段
| 字段名 | 类型 | 说明 |
|---|---|---|
debug_id | string | 任务 ID |
status | string | 任务状态:running、completed、failed |
url | string/null | PPT 下载地址。completed 时返回 |
success_count | number/null | 成功页数 |
failed_count | number/null | 失败页数 |
failed_items | array | 失败明细 |
ppt_size_bytes | number/null | PPT 文件大小,单位 bytes |
batch_total_ms | number/null | 任务总耗时,单位毫秒 |
reason | string/null | 失败原因 |
Last updated on