LogoParse4ai 文档

文档解析 API

欢迎使用文档解析 API!本文档将帮助您快速集成我们的文档解析服务。

快速开始

1. 获取 API 密钥

首先,您需要在用户中心创建一个 API 密钥:

  1. 登录到您的账户
  2. 进入 API 密钥管理 页面
  3. 点击"创建新密钥"按钮
  4. 复制生成的密钥(密钥仅显示一次,请妥善保管)

2. 认证方式

所有 API 请求都需要在 HTTP 请求头中包含 Authorization 字段:

Authorization: Bearer YOUR_API_KEY

API 端点

基础 URL

生产环境: http://8.148.69.123:8088/api
测试环境: http://8.148.69.123:8088/api

单个文件解析

创建解析任务

创建一个新的文档解析任务。

端点: POST /api/v1/extract/task

接口说明

  • 适用于通过 API 创建解析任务的场景,用户须先申请 Token
  • 单个文件大小不能超过 200MB,文件页数不超出 600 页
  • 该接口不支持文件直接上传,需要提供可访问的文件 URL
  • header 头中需要包含 Authorization 字段,格式为 Bearer + 空格 + Token

请求参数:

参数类型是否必选示例描述
urlstringhttps://example.com/document.pdf文件 URL,支持.pdf、.doc、.docx、.ppt、.pptx、.png、.jpg、.jpeg多种格式
isOcrbooleantrue是否启动 OCR 功能,默认 false
enableFormulabooleantrue是否开启公式识别,默认 true
enableTablebooleantrue是否开启表格识别,默认 true
languagestringch指定文档语言,默认 ch
dataIdstringdoc_123解析对象对应的数据 ID。由大小写英文字母、数字、下划线(_)、短划线(-)、英文句号(.)组成,不超过 128 个字符
callbackstringhttp://127.0.0.1/callback解析结果回调通知您的 URL,支持使用 HTTP 和 HTTPS 协议的地址
seedstringrandom_seed_123随机字符串,用于回调通知请求中的签名。由英文字母、数字、下划线(_)组成,不超过 64 个字符。当使用 callback 时,该字段必须提供
extraFormatsarray[string]["docx","html"]额外导出格式,支持 docx、html、latex 三种格式中的一个或多个
pageRangesstring1-600指定页码范围,格式为逗号分隔的字符串。例如:"2,4-6":表示选取第2页、第4页至第6页;"2--2":表示从第2页一直选取到倒数第二页
modelVersionstringpipeline模型版本,两个选项:pipeline、vlm,默认 pipeline

Python 请求示例:

import requests

token = "您的 API Token"
url = "http://8.148.69.123:8088/api/v1/extract/task"
header = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {token}"
}
data = {
    "url": "https://example.com/document.pdf",
    "isOcr": True,
    "enableFormula": True,
    "enableTable": True,
    "language": "ch"
}

res = requests.post(url, headers=header, json=data)
print(res.status_code)
print(res.json())

CURL 请求示例:

curl --location --request POST 'http://8.148.69.123:8088/api/v1/extract/task' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--header 'Accept: */*' \
--data-raw '{
    "url": "https://example.com/document.pdf",
    "isOcr": true,
    "enableFormula": true,
    "enableTable": true,
    "language": "ch"
}'

响应参数说明:

参数类型示例说明
codeint0接口状态码,成功:0
messagestringok接口处理信息
data.taskIdstringa90e6ab6-44f3-4554-b459-b62fe4c6b436提取任务 id,可用于查询任务结果
timestamplong1640995200000时间戳

响应示例:

{
  "code": 0,
  "message": "ok",
  "data": {
    "taskId": "a90e6ab6-44f3-4554-b459-b62fe4c6b436"
  },
  "timestamp": 1640995200000
}

获取任务结果

查询解析任务的进度和结果。

端点: GET /api/v1/extract/task/{taskId}

接口说明

  • 通过 taskId 查询提取任务目前的进度
  • 任务处理完成后,接口会响应对应的提取详情
  • header 头中需要包含 Authorization 字段,格式为 Bearer + 空格 + Token

Python 请求示例:

import requests

token = "您的 API Token"
task_id = "a90e6ab6-44f3-4554-b459-b62fe4c6b436"
url = f"http://8.148.69.123:8088/api/v1/extract/task/{task_id}"
header = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {token}"
}

res = requests.get(url, headers=header)
print(res.status_code)
print(res.json())
print(res.json()["data"])

CURL 请求示例:

curl --location --request GET 'http://8.148.69.123:8088/api/v1/extract/task/{taskId}' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Accept: */*'

响应参数说明:

参数类型示例说明
codeint0接口状态码,成功:0
messagestringok接口处理信息
data.taskIdstringabc**任务 ID
data.statestringdone任务处理状态,完成:done,pending: 排队中,running: 正在解析,failed:解析失败,converting:格式转换中
data.fullZipUrlstringhttps://cdn.parse4ai.com/xxx.zip文件解析结果压缩包
data.markdownUrlstringhttps://cdn.parse4ai.com/xxx.mdMarkdown 文件 URL
data.errMsgstring文件格式不支持解析失败原因,当 state=failed 时有效
timestamplong1640995200000时间戳

响应示例(进行中):

{
  "code": 0,
  "message": "ok",
  "data": {
    "taskId": "47726b6e-46ca-4bb9-******",
    "state": "running",
    "errMsg": ""
  },
  "timestamp": 1640995200000
}

响应示例(完成):

{
  "code": 0,
  "message": "ok",
  "data": {
    "taskId": "47726b6e-46ca-4bb9-******",
    "state": "done",
    "fullZipUrl": "https://cdn.parse4ai.com/pdf/018e53ad-d4f1-475d-b380-36bf24db9914.zip",
    "markdownUrl": "https://cdn.parse4ai.com/pdf/018e53ad-d4f1-475d-b380-36bf24db9914.md",
    "errMsg": ""
  },
  "timestamp": 1640995200000
}

响应示例(失败):

{
  "code": 0,
  "message": "ok",
  "data": {
    "taskId": "47726b6e-46ca-4bb9-******",
    "state": "failed",
    "errMsg": "文件格式不支持,请上传符合要求的文件类型"
  },
  "timestamp": 1640995200000
}

批量文件解析

URL 批量解析

适用于通过 API 批量创建提取任务的场景。

端点POST http://8.148.69.123:8088/api/v1/extract/task/batch

接口说明

  • 单次请求最多 200 个文件
  • 单个文件大小≤200MB、页数≤600
  • header 中需要携带 Authorization: Bearer <Token>

Python 请求示例

import requests

token = "官网申请的api token"
url = "http://8.148.69.123:8088/api/v1/extract/task/batch"
header = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {token}"
}
data = {
    "files": [
        {"url":"https://example.com/document.pdf", "data_id": "abcd"}
    ],
    "model_version": "vlm"
}
response = requests.post(url, headers=header, json=data)
print(response.status_code)
print(response.json())

CURL 请求示例

curl --location --request POST 'http://8.148.69.123:8088/api/v1/extract/task/batch' \
--header 'Authorization: Bearer ***' \
--header 'Content-Type: application/json' \
--header 'Accept: */*' \
--data-raw '{
    "files": [
        {"url":"https://example.com/document.pdf", "data_id": "abcd"}
    ],
    "model_version": "vlm"
}'

请求体参数说明

参数类型是否必选示例描述
files[].urlstringhttps://.../demo.pdf文件链接,支持 pdf/doc/docx/ppt/pptx/png/jpg/jpeg
files[].is_ocrbooltrue是否启动 ocr 功能,默认 false,仅对 pipeline 模型有效
files[].data_idstringabc**业务数据 ID,≤128 个字符
files[].page_rangesstring1-600指定页码范围,例如 2,4-62--2
enable_formulabooltrue是否开启公式识别,默认 true,仅对 pipeline 模型有效
enable_tablebooltrue是否开启表格识别,默认 true,仅对 pipeline 模型有效
languagestringch文档语言,仅对 pipeline 模型有效
callbackstringhttps://example.com/callback结果回调地址(POST + JSON),为空则需轮询
seedstringabc**回调签名使用的随机字符串,使用 callback 时必填
extra_formats[string]["docx","html"]额外导出格式,支持 docx/html/latex
model_versionstringvlm模型版本,pipeline(默认)或 vlm

响应参数说明

参数类型示例说明
codeint0接口状态码,0 表示成功
msgstringok接口处理信息
trace_idstringc876cd60b202f2396de1f9e39a1b0172请求 ID
data.batch_idstring2bb2f0ec-a336-4a0a-b61a-****批量任务 ID,可用于查询结果
{
  "code": 0,
  "data": {
    "batch_id": "2bb2f0ec-a336-4a0a-b61a-241afaf9cc87"
  },
  "msg": "ok",
  "trace_id": "c876cd60b202f2396de1f9e39a1b0172"
}

批量获取任务结果

通过 batch_id 查询批量任务的整体进度与结果。

端点GET http://8.148.69.123:8088/api/v1/extract-results/batch/{batch_id}

Python 请求示例

import requests

token = "官网申请的api token"
batch_id = "2bb2f0ec-a336-4a0a-b61a-241afaf9cc87"
url = f"http://8.148.69.123:8088/api/v1/extract-results/batch/{batch_id}"
header = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {token}"
}
res = requests.get(url, headers=header)
print(res.status_code)
print(res.json())
print(res.json()["data"])

CURL 请求示例

curl --location --request GET 'http://8.148.69.123:8088/api/v1/extract-results/batch/{batch_id}' \
--header 'Authorization: Bearer *****' \
--header 'Accept: */*'

响应参数说明

参数类型示例说明
codeint0接口状态码
msgstringok接口处理信息
trace_idstringc876cd60b202f2396de1f9e39a1b0172请求 ID
data.batch_idstring2bb2f0ec-a336-4a0a-b61a-241afaf9cc87批次 ID
data.extract_result[].file_namestringdemo.pdf文件名
data.extract_result[].statestringdone任务状态:done、pending、running、failed、converting
data.extract_result[].full_zip_urlstringhttps://cdn-mineru...zip文件解析结果压缩包 URL(完成时)
data.extract_result[].err_msgstring...失败原因(state=failed 时)
data.extract_result[].data_idstringabc**业务数据 ID
data.extract_result[].extract_progress.*object解析进度字段,state=running 时有效
{
  "code": 0,
  "data": {
    "batch_id": "2bb2f0ec-a336-4a0a-b61a-241afaf9cc87",
    "extract_result": [
      {
        "file_name": "example.pdf",
        "state": "done",
        "err_msg": "",
        "full_zip_url": "https://cdn-mineru.openxlab.org.cn/pdf/018e53ad-d4f1-475d-b380-36bf24db9914.zip"
      },
      {
        "file_name":"demo.pdf",
        "state": "running",
        "err_msg": "",
        "extract_progress": {
          "extracted_pages": 1,
          "total_pages": 2,
          "start_time": "2025-01-20 11:43:20"
        }
      }
    ]
  },
  "msg": "ok",
  "trace_id": "c876cd60b202f2396de1f9e39a1b0172"
}

任务状态

状态说明
pending排队中
running正在解析
done解析完成
failed解析失败
converting格式转换中

常见错误码

错误码说明解决建议
-20002Token 错误检查 Token 是否正确,请检查是否有 Bearer 前缀或更换新 Token
-20011Token 过期更换新 Token
-500传参错误请确保参数类型及 Content-Type 正确
-10001服务异常请稍后再试
-10002请求参数错误检查请求参数格式
-60002获取匹配的文件格式失败检测文件类型失败,请求的文件名及链接中带有正确的后缀名
-60003文件读取失败请检查文件是否损坏并重新上传
-60004空文件请上传有效文件
-60005文件大小超出限制检查文件大小,最大支持 200MB
-60006文件页数超过限制请拆分文件后重试
-60007模型服务暂时不可用请稍后重试或联系技术支持
-60008文件读取超时检查 URL 可访问
-60009任务提交队列已满请稍后再试
-60010解析失败请稍后再试
-60012找不到任务请确保 taskId 有效且未删除
-60013没有权限访问该任务只能访问自己提交的任务
-60015文件转换失败可以手动转为 PDF 再上传
-60017页码余额不足请充值或升级套餐

限制说明

  • 单个文件大小:最大 200MB
  • 文件页数:最大 600 页
  • 支持的文件格式:PDF (.pdf)、Word (.doc, .docx)、PowerPoint (.ppt, .pptx)、图片 (.png, .jpg, .jpeg)