通过 API 从图片和文档文件中提取文字。当前服务使用异步任务流程:创建任务、获取 task_id,再轮询查询结果。
接口返回的结果文件链接有效期为 1 小时,请及时下载存储。
鉴权
每个 API 请求都必须在请求头中携带你的 API Key。请按当前文档中的请求方式和参数说明,将其作为 X-API-KEY 请求头传入。
X-API-KEY: YOUR_API_KEY 创建 OCR 任务
/api/tasks/document/ocr 请求参数
image_url string 可选 源文件 URL。与 image_file 二选一;如果传入此参数,另一个文件来源参数必须为空。请勿使用 80、443 以外的端口地址。
language string 可选 输入文件语言。默认为 ChinesePRC、English 和 Digits。最多不超过 10 种语言。多种语言用逗号分隔,名称区分大小写,例如 English,ChinesePRC,Digits。
password string 可选 文件密码。如果输入文件有密码,请在此参数中传入密码,密码最大长度为 32 位。
format string 可选 输出文件格式。可选值为 txt、pdf、docx、xlsx、pptx。
返回参数
status number HTTP 响应状态码。200 表示请求成功,非 200 表示请求失败,详见 状态码说明。
message string 接口返回消息。如果失败,可以参考此参数返回的信息,或携带此参数联系支持人员。
data.task_id string OCR 任务 ID。创建任务成功后返回,用于后续查询结果。
查询 OCR 结果
异步请求建议每 1 秒 轮询一次结果,本接口最大轮询时长为 300 秒;累计轮询超过该时长仍未返回结果,即可视为超时失败。
/api/tasks/document/ocr/{task_id} 路径参数
task_id string 必填 创建任务后返回的 OCR 任务 ID,用于查询任务处理结果。
返回参数
status number HTTP 响应状态码。200 表示请求成功,非 200 表示请求失败,详见 状态码说明。
message string 接口返回消息。如果失败,可以参考此参数返回的信息,或携带此参数联系支持人员。
data.task_id string OCR 任务 ID。如果任务失败,请携带此 task_id 联系支持人员。
data.created_at string 任务创建时间,Unix 时间戳字符串。
data.processed_at string 任务开始处理时间,Unix 时间戳字符串。
data.completed_at string 任务完成时间,Unix 时间戳字符串。
data.file string OCR 结果文件 URL,URL 结果有效期为 1 小时。
data.progress number 任务处理进度。100 表示处理完成。
data.state number 任务状态码。1 表示处理成功,大于 1 表示处理中,小于 0 表示失败,详见 状态码说明。
使用规范与限制
-
接口返回的结果文件链接有效期为 1 小时,请及时下载并存储。
-
HTTP status 为 200 表示 HTTP 请求成功,并不一定表示 OCR 任务处理成功,详见 状态码说明。
-
使用 image_url 作为参数传递时,请遵守 URL 编码规范,且不要使用 80、443 以外的端口地址。
-
上传文件需符合以下格式、分辨率和大小限制。
输入格式 输出格式 分辨率 大小 pdf, ppt, pptx, xls, xlsx, doc, docx, jpeg, jpg, png, gif, bmp pdf, docx, pptx, xlsx, txt 输入图片文件最大 32512 x 32512 不超过 200 MB (含 200MB)
# OCR 服务 API
通过 API 从图片和文档文件中提取文字。OCR 服务使用异步任务流程:先创建任务并获取 `data.task_id`,再轮询查询接口直到任务完成。
> 注意:接口返回的结果文件链接有效期为 1 小时,请及时下载并存储。
## 接口域名(Base URL)
```
https://techsz.aoscdn.com
```
## 鉴权
每个请求都必须在请求头中携带你的 API Key:
```http
X-API-KEY: YOUR_API_KEY
```
你可以在 [API Key](https://picwish.cn/my-account?subRoute=api-key) 页面获取或管理 X-API-KEY。
## 调用方式
OCR 服务当前使用异步任务流程:
1. 携带源文件创建 OCR 任务。
2. 从创建任务响应中读取 `data.task_id`。
3. 轮询查询接口,直到 `data.state=1` 或 `data.state<0`。
## 文件来源
必须且只能提供一种源文件:
- `image_url`:可公开访问的源文件 URL,请勿使用 80、443 以外的端口地址。
- `image_file`:以 multipart 二进制方式上传的源文件。
不要同时传两者。如果传入其中一个文件来源参数,另一个文件来源参数必须为空。
## 接口列表
| 用途 | 方法 | 路径 |
| --- | --- | --- |
| 创建 OCR 任务 | POST | /api/tasks/document/ocr |
| 查询 OCR 结果 | GET | /api/tasks/document/ocr/{task_id} |
## 创建 OCR 任务
`POST /api/tasks/document/ocr`
Content-Type:`multipart/form-data`
每次成功调用消耗 1 算粒。
### 请求参数
| 参数 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| image_url | string | image_url / image_file 二选一 | 源文件 URL,与 image_file 互斥。请勿使用 80、443 以外的端口地址。 |
| image_file | file | image_url / image_file 二选一 | 二进制源文件(multipart),与 image_url 互斥。 |
| language | string | 可选 | 输入文件语言。默认为 ChinesePRC、English 和 Digits。最多不超过 10 种语言。多种语言用逗号分隔,名称区分大小写,例如 `English,ChinesePRC,Digits`。 |
| password | string | 可选 | 文件密码。如果输入文件有密码,请在此参数中传入密码,最大长度为 32 位。 |
| format | string | 可选 | 输出文件格式。可选值为 `txt`、`pdf`、`docx`、`xlsx`、`pptx`。 |
### 返回参数
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| status | number | HTTP 风格状态码。200 = 成功,非 200 = 失败。详见 /states。 |
| message | string | 接口返回消息。如果失败,可以参考此参数返回的信息,或携带此参数联系支持人员。 |
| data.task_id | string | OCR 任务 ID。创建任务成功后返回,用于后续查询结果。 |
### 示例
源文件 URL:
```bash
curl -k 'https://techsz.aoscdn.com/api/tasks/document/ocr' \
-H 'X-API-KEY: YOUR_API_KEY' \
-F 'image_url=YOUR_FILE_URL' \
-F 'format=txt'
```
本地文件上传:
```bash
curl -k 'https://techsz.aoscdn.com/api/tasks/document/ocr' \
-H 'X-API-KEY: YOUR_API_KEY' \
-F 'image_file=@/path/to/file.pdf' \
-F 'format=txt'
```
## 查询 OCR 结果
异步请求建议每 **1 秒** 轮询一次结果,本接口最大轮询时长为 **300 秒**;累计轮询超过该时长仍未返回结果,即可视为超时失败。
`GET /api/tasks/document/ocr/{task_id}`
创建任务后轮询此接口获取结果。建议每 1 秒轮询一次,总轮询时长控制在 300 秒内。当 `data.state=1` 或 `data.state<0` 时停止轮询。
### 路径参数
| 参数 | 类型 | 是否必填 | 说明 |
| --- | --- | --- | --- |
| task_id | string | 必填 | 创建任务接口返回的 OCR 任务 ID。 |
### 返回参数
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| status | number | HTTP 风格状态码。200 = 成功,非 200 = 失败。详见 /states。 |
| message | string | 接口返回消息。如果失败,可以参考此参数返回的信息,或携带此参数联系支持人员。 |
| data.task_id | string | OCR 任务 ID。如果任务失败,请携带此 task_id 联系支持人员。 |
| data.created_at | string | 任务创建时间,Unix 时间戳字符串。 |
| data.processed_at | string | 任务开始处理时间,Unix 时间戳字符串。 |
| data.completed_at | string | 任务完成时间,Unix 时间戳字符串。 |
| data.file | string | OCR 结果文件 URL,URL 结果有效期为 1 小时。 |
| data.progress | number | 任务处理进度。100 表示处理完成。 |
| data.state | number | 1 = 处理成功;大于 1 = 处理中;小于 0 = 失败。详见 /states。 |
### 示例
```bash
curl -k 'https://techsz.aoscdn.com/api/tasks/document/ocr/{task_id}' \
-H 'X-API-KEY: YOUR_API_KEY'
```
## 推荐异步调用流程
1. 调用 POST /api/tasks/document/ocr,并且只传一种源文件。
2. 从创建任务响应中读取 `data.task_id`。
3. 每 1 秒调用 GET /api/tasks/document/ocr/{task_id} 查询一次。
4. 当 `data.state=1` 或 `data.state<0` 时停止轮询;总轮询时长建议控制在 300 秒左右。
5. 处理成功后,在 1 小时内下载 `data.file`。
## 使用规范与限制
- 接口返回的结果文件链接有效期为 **1 小时**,请及时下载并存储。
- HTTP status 200 表示 HTTP 请求成功,并不一定表示 OCR 任务处理成功,请结合 `data.state` 判断任务成功或失败。
- 使用 `image_url` 作为参数传递时,请遵守 URL 编码规范,并且不要使用 80、443 以外的端口地址。
- 上传文件需符合以下格式、分辨率和大小限制。
| 输入格式 | 输出格式 | 分辨率 | 大小 |
| --- | --- | --- | --- |
| pdf, ppt, pptx, xls, xlsx, doc, docx, jpeg, jpg, png, gif, bmp | pdf, docx, pptx, xlsx, txt | 输入图片文件最大 32512 x 32512 | 不超过 200 MB (含 200MB) |
## 状态码
任务是否成功,需要结合 HTTP 响应状态码(`status`)和任务状态码(`data.state`)共同判断。
### HTTP 响应状态码
| 状态码 | 说明 |
| --- | --- |
| 200 | 请求成功。 |
| 400 | 客户端参数传递错误。请检查参数是否缺失或值是否正确。 |
| 401 | 认证失败。请检查 X-API-KEY 是否正确或服务是否开通。 |
| 404 | 请求的 URL 或资源不存在。请检查 URL 或 task_id 是否正确。 |
| 413 | 上传的文件超出大小限制。请参见各服务的最大文件限制。 |
| 429 | 请求频率超出 QPS 限制(默认 QPS 为 2)。请放缓请求速率,或联系商务提升 QPS。 |
| 500 | 服务端异常。请反馈给商务或技术对接人员。 |
### 任务状态码(data.state)
1 = 成功;大于 1 = 处理中;小于 0 = 失败。
| 状态码 | 说明 |
| --- | --- |
| -17 | 处理失败,非法提示词。 |
| -16 | 处理失败,使用第三方检测发现违规。 |
| -15 | 处理失败,资源不足。 |
| -14 | 处理失败,输入图片内容不符合要求。 |
| -13 | 处理失败,任务异常被取消。 |
| -11 | 处理失败,结果为空。 |
| -10 | 处理失败,内部检测非法。 |
| -9 | 处理失败,内部程序循环处理失败。 |
| -8 | 处理超时,最长处理时间 180 秒。 |
| -7 | 无效图片文件(如图片损坏、格式不对等)。 |
| -5 | image_url 图片超出大小限制(30MB)。 |
| -3 | 服务器下载图片文件失败,请检查图片 URL 是否可用。 |
| -2 | 处理完成,但上传 OSS 失败。 |
| -1 | 处理失败。 |
| 0 | 排队中,任务正在队列中等待。 |
| 1 | 完成,处理成功。 |
| 2 | 准备中。 |
| 3 | 等待中。 |
| 4 | 处理中,正在进行。 |
| 5 | 内部发布处理中。 |
| 6 | 处理中,内部循环处理中。 |