文档解析(PaddleOCR-VL)
接口描述
PaddleOCR-VL:多模态文档解析SOTA方案,专为应对复杂文档解析任务而设计。可精准识别图像中的印刷文本、手写文本、表格、公式和图表等复杂元素,自动分类并智能推断符合人类阅读习惯的排列顺序,将复杂的页面内容转化为有序、带标签的元素序列;支持中、英、日、韩、拉丁文等 109 种语言解析,满足全球化多语种文档处理需求。
文档解析(PaddleOCR-VL):基于PaddleOCR-VL最新模型,通过标准化API服务,提供开箱即用、免部署的快捷接入方式,可直接返回 Markdown/JSON 结构化输出,助您快速实现复杂文档智能解析。
文档解析(PaddleOCR-VL)API服务为异步接口,需要先调用提交请求接口获取 task_id,然后调用获取结果接口进行结果轮询,建议提交请求后 5~10 秒轮询。提交请求接口QPS为2,获取结果接口QPS为10。
在线调试
您可以在 示例代码中心 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。
提交请求接口
请求说明
请求示例
HTTP 方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/brain/online/v2/paddle-vl-parser/task
URL参数:
| 参数 | 值 |
|---|---|
| access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
| 参数 | 值 |
|---|---|
| Content-Type | application/x-www-form-urlencoded |
Body中放置请求参数,参数详情如下:
请求参数
| 参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
|---|---|---|---|---|
| file_data | 和file_url二选一 | string | - | 文件的base64编码数据:-版式文档:pdf、jpg、jpeg、png、bmp、tif、tiff,图片最长边不大于4096px文档大小不超过100M,其中PDF文档最大支持500页若文档大小超过50M,须从file_url方式上传。优先级: file_data > file_url,当file_data字段存在时,file_url字段失效 |
| file_url | 和file_data二选一 | string | - | 文件数据URL,URL长度不超过1024字节,支持单个URL传入PDF文档大小不超过100M,最大支持500页优先级: file_data > file_url,当file_data字段存在时,file_url字段失效请注意关闭URL防盗链 |
| file_name | 是 | string | - | 文件名,请保证文件名后缀正确,例如 "1.pdf " |
| recognize_formula | - | bool | - | 无需开启,大模型默认对版式类型文档进行公式识别 |
| analysis_chart | 否 | bool | True/False | 是否对统计图表进行解析 |
| parse_image_layout | - | bool | - | 无需开启,大模型默认解析文档中的所有图片 |
| language_type | - | string | - | 无需开启,大模型默认识别语种类型 |
请求代码示例
提示:使用示例代码前,请记得替换其中的示例Token、文档地址或Base64信息。
import requests
import os
import base64
def create_task(url, file_path, file_url):
"""
Args:
url: string, 服务请求链接
file_path: 本地文件路径
file_url: 文件链接
Returns: 响应
"""
# 文件请求
with open(file_path, "rb") as f:
file_data = base64.b64encode(f.read())
data = {
"file_data": file_data,
"file_url": file_url,
"file_name": os.path.basename(file_path)
}
# 文档切分参数,非必传
# return_doc_chunks = json.dumps({"switch": True, "chunk_size": -1})
# data["return_doc_chunks"] = return_doc_chunks
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(url, headers=headers, data=data)
return response
if __name__ == '__main__':
request_host = "https://aip.baidubce.com/rest/2.0/brain/online/v2/paddle-vl-parser/task?" \
"access_token={token}"
file_path = "./test.pdf"
response = create_task(request_host, file_path, "")
print(response.json())返回说明
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
| log_id | uint64 | 唯一的log id,用于问题定位 |
| error_code | int | 错误码 |
| error_msg | string | 错误描述信息 |
| result | dict | 返回的结果列表 |
| + task_id | string | 该请求生成的task_id,后续使用该task_id获取审查结果 |
返回示例
成功返回示例:
{
"error_code": 0,
"error_msg": "",
"log_id": "10138598131137362685273505665433",
"result": {
"task_id": "task-3zy9Bg8CHt1M4pPOcX2q5bg28j26801S"
}
}失败返回示例(详细的错误码说明见API文档-错误码):
{
"error_code": 282003,
"error_msg": "missing parameters",
"log_id": "37507631033585544507983253924141",
"result": "null"
}获取结果接口
请求说明
请求示例
HTTP 方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/brain/online/v2/paddle-vl-parser/task/query
URL参数:
| 参数 | 值 |
|---|---|
| access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
| 参数 | 值 |
|---|---|
| Content-Type | application/x-www-form-urlencoded |
Body中放置请求参数,参数详情如下:
请求参数
| 参数 | 是否必选 | 类型 | 说明 |
|---|---|---|---|
| task_id | 是 | string | 发送提交请求时返回的task_id |
请求代码示例
提示:使用示例代码前,请记得替换其中的示例Token、task_id。
import requests
def query_task(url, task_id):
"""
Args:
url: string, 请求链接
task_id: string, task id
Returns: 响应
"""
data = {
"task_id": task_id
}
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
print(url)
response = requests.post(url, headers=headers, data=data)
return response
if __name__ == '__main__':
# 需要替换为实际的任务id
task_id = "task_id"
# {access_token} 需要替换为实际调用鉴权接口获取的access_token
request_host = "https://aip.baidubce.com/rest/2.0/brain/online/v2/paddle-vl-parser/task/query?access_token={access_token}"
resp = query_task(request_host, task_id)
print(resp.json())返回说明
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
| log_id | uint64 | 唯一的log id,用于问题定位 |
| error_code | int | 错误码 |
| error_msg | string | 错误描述信息 |
| result | dict | 返回的结果列表 |
| + task_id | string | 任务ID |
| + status | string | 任务状态,pending:排队中;processing:运行中;success:成功;failed:失败 |
| + task_error | string | 解析报错信息,包含任务失败、额度不够 |
| + markdown_url | string | 文档解析结果的markdown格式链接,链接有效期30天 |
| + parse_result_url | string | 文档解析结果的bos链接,链接有效期30天 |
可通过parse_result_url下载解析结果的JSON文件,parse_result_url的返回参数如下:
| 字段 | 类型 | 说明 |
|---|---|---|
| file_name | string | 文档名称 |
| file_id | string | 文档ID |
| + pages | list | 文件单页解析内容 |
| ++ page_id | string | 页码ID |
| ++ page_num | int | 页码数 |
| ++ text | string | 当前页的所有纯文字内容 |
| ++ layouts | list | 页面内容版式分析的结果 |
| +++ layout_id | string | layout ID,layout元素唯一标志,以"xxxxx-layout-{global_layout_index}"形式,global_layout_index为layout元素整个文档的全局索引 |
| +++ text | string | layout对应的文本内容。注:当type为table, image时该字段为空, 需要根据type和layout_id分别到tables, images字段里找到对应的内容 |
| +++ position | list | layout元素在页面中的位置,[x, y, w, h] box框,左上角和宽高 |
| +++ type | string | layout元素类型, 当前可取值: • abstract:摘要 • algorithm:算法 • aside_text:旁注文本 • chart:图表 • content:目录 • display_formula:公式 • doc_title:文档标题 • figure_title:图片标题 • footer:页脚 • footer_image:页脚图片 • footnote:脚注 • formula_number:公式编号 • header:页眉 • header_image:页眉图片 • image:图片 • inline_formula:行内公式 • number:页码 • paragraph_title:段落标题 • reference:参考文献 • reference_content:参考文献内容 • seal:印章 • table:表格 • text:文本 • vertical_text:竖排文本 |
| ++ tables | list | 页面表格解析结果 |
| +++ layout_id | string | layout ID,与layouts中的元素type为table的元素的layout ID对应 |
| +++ markdown | string | 表格内容的markdown形式 |
| +++ position | list | 边框数据 「x, y, w, h」(x, y)为坐标点坐标,w为box宽度,h为box高度(以页面坐标为原点),版式格式时有效 |
| +++ cells | list | 单元格的内嵌版面信息,layout类型为表格时有值 |
| +++ matrix | list | 二位数组 表示表格内布局位置信息,每个元素对应cells列表中元素的索引 |
| ++ images | list | 页面中图片解析结果 |
| +++ layout_id | string | layout ID,与layouts中的元素type为image的元素的layout ID对应 |
| +++ position | list | 边框数据 「x, y, w, h」(x, y)为坐标点坐标,w为box宽度,h为box高度(以页面坐标为原点),版式格式时有效 |
| +++ data_url | string | 图片存储链接 |
| +++ image_description | string | 对统计图表进行内容解析和描述,输出结果为json字符串,可通过json.loads结构化为json格式 |
| ++ meta | dict | 页面元信息 |
| +++ page_width | int | 页面宽度 |
| +++ page_height | int | 页面高度 |
表格解析结构说明
以下图为例:

{
# cells列表包含14个元素,matrix中的每个数字表示一个单元格在cells列表中的索引。
"cells": [
{"layout_id": "layout-xxxx",
"position": [90, 376, 21, 10],
"text": "序号"
...
}, # ... 其他单元格信息
],
"matrix": [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[9, 10, 11],
[12, 12, 13],
[12, 12, 14]
}返回示例
成功返回示例:
{
"log_id": "23596597899286921761579365582373",
"error_code": 0,
"error_msg": "",
"result":
{
"task_id": "task-UnvGsgbYZp9pS3BZRHn11ifzjNvKzTgf",
"status": "success",
"task_error": null,
"markdown_url": "https:xxxxxxxxxxxxxxxxxxx",
"parse_result_url": "https:xxxxxxxxxxxxxxxxxxx"
}
}解析结果示例:
{
"file_name": "示例文件1(文字+表格)更新-改-1.pdf",
"file_id": "file-u9kVDu6dtwMyNrizbejMlF8A852aJLm2",
"pages": [
{
"page_id": "2aJLm2-page-0",
"page_num": 0,
"text": "买卖合同\n甲、乙双方根据《中华人民共和国合同法》及其它相关法律、法规的规定,本着平等、自愿、互利的原则,经友好协商,订立本合同,以资共同信守:\n1.合同标的物信息\n| 序号 | 商品名称 | 产品简称 | 单价 | 数量 | 总价 | 税率 | 备注 |\n| --- | --- | --- | --- | --- | --- | --- | --- |\n| 1 | 软件-AI | 中台内网-推理平台+训练平台 | 95,000 | 1 | 905,000 | 13% | 第一单元 |\n| 2 | 硬件【A】 | 服务器 | 30,250 | 37 | 1,11950 | 13% | 第一单元 |\n\n本合同一式【2】份,经双方代表签字盖章生效。甲乙双方各执【3】份,具有同等法律效力。\n1 \n",
"layouts": [
{
"layout_id": "2aJLm2-layout-1",
"text": "买卖合同",
"position": [
263,
109,
103,
28
],
"type": "title"
]
},
{
"layout_id": "2aJLm2-layout-2",
"text": "甲、乙双方根据《中华人民共和国合同法》及其它相关法律、法规的规定,本着平等、自愿、互利的原则,经友好协商,订立本合同,以资共同信守:",
"position": [
84,
160,
444,
31
],
"type": "text"
},
{
"layout_id": "2aJLm2-layout-3",
"text": "1.合同标的物信息",
"position": [
79,
206,
110,
14
],
"type": "title"
},
{
"layout_id": "2aJLm2-layout-4",
"text": "",
"position": [
82,
224,
452,
97
],
"type": "table"
},
{
"layout_id": "2aJLm2-layout-5",
"text": "本合同一式【2】份,经双方代表签字盖章生效。甲乙双方各执【3】份,具有同等法律效力。",
"position": [
79,
348,
456,
31
],
"type": "text"
},
{
"layout_id": "2aJLm2-layout-6",
"text": "1",
"position": [
305,
745,
11,
12
],
"type": "head_tail"
}
],
"tables": [
{
"layout_id": "2aJLm2-layout-4",
"markdown": "| 序号 | 商品名称 | 产品简称 | 单价 | 数量 | 总价 | 税率 | 备注 |\n| --- | --- | --- | --- | --- | --- | --- | --- |\n| 1 | 软件-AI | 中台内网-推理平台+训练平台 | 95,000 | 1 | 905,000 | 13% | 第一单元 |\n| 2 | 硬件【A】 | 服务器 | 30,250 | 37 | 1,11950 | 13% | 第一单元 |\n",
"position": [
82,
224,
452,
97
],
"cells": [
{
"layout_id": "2aJLm2-layout-4-0",
"text": "序号",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-1",
"text": "商品名称",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-2",
"text": "产品简称"
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-3",
"text": "单价"
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-4",
"text": "数量"
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-5",
"text": "总价",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-6",
"text": "税率",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-7",
"text": "备注",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-8",
"text": "1",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-9",
"text": "软件-AI ",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-10",
"text": "中台内网-推理平台+训练平台",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-11",
"text": "95,000",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-12",
"text": "1",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-13",
"text": "905,000",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-14",
"text": "13% ",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-15",
"text": "第一单元",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-16",
"text": "2",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-17",
"text": "硬件【A】",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-18",
"text": "服务器",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-19",
"text": "30,250",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-20",
"text": "37",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-21",
"text": "1,11950",
"type": "text"
},
{
"layout_id": "2aJLm2-layout-4-22",
"text": "13% ",
"type": "text"
}
],
"matrix": [
[
0,
1,
2,
3,
4,
5,
6,
7
],
[
8,
9,
10,
11,
12,
13,
14,
15
],
[
16,
17,
18,
19,
20,
21,
22,
15
]
]
}
],
"images": [
{
"layout_id": "Kr9RM7-layout-10",
"position":
[
90,
549,
422,
221
],
"data_url": " "
}
],
"meta": {
"page_width": 612,
"page_height": 792
}
]
}失败返回示例(详细的错误码说明见API文档-错误码):
{"log_id": "13665091038742503867108513247608",
"error_code": "282007",
"error_msg": "task not exist, please check task id",
"result": "null"}