[AI62-1] PDF 翻译-提交翻译任务
通过 pdf 上传 PDF 文件,或通过 pdf_url 提供 PDF 下载链接(支持签名链接),两者必须且只能提供一个。output_format=pdf 输出保留版面的译文 PDF(默认),output_format=markdown 输出 Markdown 文本文件(.md)。任务接受后返回 HTTP 202。通过 status_url 查询状态;state 为 succeeded 后,访问 download_file 指向的结果接口获取所选格式的译文。 输入示例(文件上传,multipart/form-data): ```bash curl -X POST 'http://s-patsnaprd-pdf-translation-api.patsnaprd/translate' \ -H 'accept: application/json' \ -F 'pdf=@/path/to/sample.pdf;type=application/pdf' \ -F 'source_lang=zh' \ -F 'target_lang=en' \ -F 'pages=1' \ -F 'model_id=9' \ -F 'output_format=pdf' ``` 输入示例(PDF 链接,multipart/form-data): ```bash curl -X POST 'http://s-patsnaprd-pdf-translation-api.patsnaprd/translate' \ -H 'accept: application/json' \ -F 'pdf_url=https://storage.example.com/sample.pdf?signature=EXAMPLE' \ -F 'source_lang=zh' \ -F 'target_lang=en' \ -F 'pages=1' \ -F 'model_id=9' \ -F 'output_format=pdf' ``` 如需 Markdown 输出,将 output_format 改为 markdown;翻译全部页面时省略 pages。使用 pdf_url 时不传 pdf 字段。curl 使用 -F 自动生成带 boundary 的 multipart/form-data 请求头,无需手动设置 Content-Type。 成功响应示例(HTTP 202): ```json { "task_id": "0123456789abcdef0123456789abcdef", "taskId": "0123456789abcdef0123456789abcdef", "job_id": "0123456789abcdef0123456789abcdef", "state": "pending", "source_lang": "zh", "target_lang": "en", "lang": "zh2en", "model_id": "9", "output_format": "pdf", "total_pages": 2, "selected_pages": [ 1 ], "selected_page_count": 1, "skipped_pages": [ 2 ], "skipped_page_count": 1, "status_url": "http://s-patsnaprd-pdf-translation-api.patsnaprd/tasks/0123456789abcdef0123456789abcdef", "download_file": "http://s-patsnaprd-pdf-translation-api.patsnaprd/tasks/0123456789abcdef0123456789abcdef/result", "message": "任务已提交。请轮询 status_url,成功后访问 download_file 获取结果:PDF。" } ```
请求参数
此 API 接口支持的参数列表
| 名称 | 类型 | 示例 | 描述 |
|---|---|---|---|
| string | 9 | 布局模型:9 快速默认模式;25 更高精度模式。 示例:"9" |
| string | pdf | 输出格式:pdf(默认)生成保留版面的译文 PDF;markdown 生成 Markdown 文本文件(.md)。两种格式均支持通过 pages 选页,按选中翻译的去重页数计量,采用相同的异步提交、状态查询和结果获取流程。结果接口传 response_format=url 获取签名链接,传 response_format=file 直接下载文件。 示例:"pdf" |
响应结构
API 响应数据的结构说明
| 字段名 | 类型 | 示例 | 描述 |
|---|---|---|---|
lang | string | zh2en | 翻译方向。 示例:"zh2en" |
state必填 | string | pending | 任务已接受并等待处理,值为 pending。 示例:"pending" |
job_id | string | 0123456789abcdef0123456789abcdef | task_id 的兼容别名。 示例:"0123456789abcdef0123456789abcdef" |
taskId | string | 0123456789abcdef0123456789abcdef | task_id 的兼容别名。 示例:"0123456789abcdef0123456789abcdef" |
message | string | 任务已提交。请轮询 status_url,成功后访问 download_file 获取结果:PDF。 | 当前阶段说明。 示例:"任务已提交。请轮询 status_url,成功后访问 download_file 获取结果:PDF。" |
task_id必填 | string | 0123456789abcdef0123456789abcdef | 任务 ID。 示例:"0123456789abcdef0123456789abcdef" |
model_id必填 | string | 9 | 布局模型:9 快速模式,25 精准模式。 示例:"9" |
status_url必填 | string<uri> | http://s-patsnaprd-pdf-translation-api.patsnaprd/tasks/0123456789abcdef0123456789abcdef | 任务状态查询地址。 示例:"http://s-patsnaprd-pdf-translation-api.patsnaprd/tasks/0123456789abcdef0123456789abcdef" |
source_lang | string | zh | 源语言。 示例:"zh" |
target_lang | string | en | 目标语言,不能与源语言相同。 示例:"en" |
total_pages必填 | integer<int32> | 2 | 输入 PDF 的总页数,不是选中页数,也不是译文文件的页数。仅翻译整份 PDF 时,首次完全成功取结果的 X-Openapi-Amount 才等于该值。 示例:2 |
download_file必填 | string<uri> | http://s-patsnaprd-pdf-translation-api.patsnaprd/tasks/0123456789abcdef0123456789abcdef/result | 结果接口地址,本身不是 PDF 或 Markdown 签名链接。任务完成后以 response_format=url 访问该接口,响应 JSON 的 download_file 才是 PDF 或 Markdown 签名下载链接,有效期一周(7 天,604800 秒)。 示例:"http://s-patsnaprd-pdf-translation-api.patsnaprd/tasks/0123456789abcdef0123456789abcdef/result" |
output_format必填 | string | pdf | 输出文件格式。 示例:"pdf" |
skipped_pages | array | [
2
] | 未选择的页面;PDF 输出中原样保留。 示例:[2] |
selected_pages | array | [
1
] | 选中翻译的页码,从 1 开始。 示例:[1] |
skipped_page_count | integer | 1 | 未选择的页数。 示例:1 |
selected_page_count | integer | 1 | 选中翻译的去重页数,作为首次完全成功获取结果的计量值;pages 为空或未传时等于 total_pages。 示例:1 |
成功响应示例
成功调用 API 的响应示例
{
"lang": "zh2en",
"state": "pending",
"job_id": "0123456789abcdef0123456789abcdef",
"status": true,
"taskId": "0123456789abcdef0123456789abcdef",
"message": "任务已提交。请轮询 status_url,成功后访问 download_file 获取结果:PDF。",
"task_id": "0123456789abcdef0123456789abcdef",
"model_id": "9",
"error_code": 0,
"status_url": "http://s-patsnaprd-pdf-translation-api.patsnaprd/tasks/0123456789abcdef0123456789abcdef",
"source_lang": "zh",
"target_lang": "en",
"total_pages": 2,
"download_file": "http://s-patsnaprd-pdf-translation-api.patsnaprd/tasks/0123456789abcdef0123456789abcdef/result",
"output_format": "pdf",
"skipped_pages": [
2
],
"selected_pages": [
1
],
"skipped_page_count": 1,
"selected_page_count": 1
}错误码
此接口可能返回的错误码列表
业务错误码
| 错误码 | 描述 |
|---|---|
68300004 | 请求参数异常! |
68300005 | 查询Api失败! |
68300006 | 解析基本存取错误! |
68300007 | 存在错误的请求! |
68300008 | 服务中断异常,请稍后再试! |
68300010 | 文件不符合上传规范! |
平台错误码
| 错误码 | 描述 |
|---|---|
67200000 | API整体限流错误! |
67200001 | API整体限流错误! |
67200002 | 当前调用速率过快,超过当前配置限制QPS! |
67200003 | 申请token的key和secret传参不正确或者客户端已被禁用! |
67200004 | 请求的接口无权限请联系我们的支持人员! |
67200005 | 账户余额/调用次数不足! |
67200006 | 客户端超过开通有效期! |
67200007 | 当前调用超过当天配置使用额度! |
67200008 | 请检查query参数中必填的apikey是否传输! |
67200009 | apikey与所传的bearerToken不匹配,请检查是否使用在有效期内的token! |
67200012 | 请求不合法! |
67200100 | 当前服务器状态正忙,请求响应超时! |
67200101 | 当前请求的Api不存在请检查请求Path! |
HTTP 状态码
| 状态码 | 描述 |
|---|---|
0 | 请求成功 |
202 | 任务已接受;提交基础计量默认 1。 |
400 | 文件为空、不是有效 PDF、损坏或无法读取。 |
413 | 超过 output_format 对应的文件大小或整份 PDF 页数限制。 |
422 | 参数校验失败:输入未二选一、语言不支持或相同、页码无效等。 |
502 | 远程 PDF 下载失败。 |
503 | 服务暂时不可用,请稍后重试。 |
504 | 远程 PDF 下载超时。 |
性能指标
此接口的预期性能特征
正常响应时间
5000 ms
最大响应时间
10000 ms