资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

文档解析(旧接口)

接口描述

支持对doc、pdf、图片、xlsx等16种格式文档进行解析,输出文档的版面、表格、阅读顺序、标题层级、旋转角度等信息,将非结构化数据转化为易于处理的结构化数据,识别准确率可达 90% 以上。

该接口正在公测中,完成个人/企业认证的用户可领取200页免费额度,如需申请更多额度或者QPS,请合作咨询,或者提交工单

文档解析为异步接口,需要先调用提交请求接口获取 task_id,然后调用获取结果接口进行结果轮询,建议提交请求后 5~10 秒轮询。提交请求接口QPS为2,获取结果接口QPS为10。

提交请求接口

请求说明

请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/file/2.0/brain/online/v1/parser/task

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header如下:

参数
Content-Type multipart/form-data

Body中放置请求参数,参数详情如下:

请求参数

参数 是否必选 类型 可选值范围 说明
file 和file_url二选一 file - 文件数据,支持的文件类型:
-版式文档:pdf、jpg、jpeg、png、bmp、tif、tiff、ofd、ppt、pptx
-流式文档:doc、docx、txt、xls、xlsx、wps
文档大小不超过50M,文档页数不超过1000页(流式文档按2000字算一页)
优先级: file > file_url,当file字段存在时,file_url字段失效
file_url 和file二选一 string - 文件完整URL,仅支持北京区域的BOS公网访问,URL长度不超过1024字节,支持格式与file一致,仅支持上传1篇文件,文件大小不超过50M
优先级: file > file_url,当file字段存在时,file_url字段失效
请注意关闭URL防盗链
file_name string - 文件名,请保证文件名后缀正确,例如 "1.pdf "
return_para_nodes bool true/false 是否返回标题层级段落树。默认为false

请求代码示例

提示:使用示例代码前,请记得替换其中的示例Token、文档地址或Base64信息。

import requests
import os


def create_task(url, file_path, file_url):
    """
    Args:
        url: string, 服务请求链接
        file_path: 本地文件路径
        file_url: 文件链接
    Returns: 响应
    """
    # 文件请求
    body = {
        "file": (os.path.basename(file_path), open(file_path, 'rb'), "multipart/form-data"),
    }
    
    # 文件链接请求
    # body = {
    #     "file_url": (file_url, "multipart/form-data")
    # }

    data = {
        "file_name": os.path.basename(file_path),
        "return_para_nodes": True
    }

    response = requests.post(url, data=data, files=body)
    return response

if __name__ == '__main__':
    request_host = "https://aip.baidubce.com/file/2.0/brain/online/v1/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/file/2.0/brain/online/v1/parser/task/query

URL参数:

参数
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

Header如下:

参数
Content-Type multipart/form-data

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
    }

    response = requests.post(url, data=data, files=data)
    return response


if __name__ == '__main__':
    task_id = "task-3ej6eh9m98OzWEovWlJv0B2pJpVhd1T0"
    request_host = "https://aip.baidubce.com/file/2.0/brain/online/v1/parser/task/query?" \
                   "access_token={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:排队中;running:运行中;success:成功;failed:失败
+ task_error string 解析报错信息,包含任务失败、额度不够
+ duration string 任务执行时长
+ parse_result_url string 文档解析结果的bos链接

可通过parse_result_url下载解析结果的JSON文件,parse_result_url的返回参数如下:

字段 类型 说明
file_name string 文档名称
file_content list 文档解析的内容
+ page_num int 页码,从0开始
+ page_size dict 页面大小,版式格式时有效
++ width float 页面宽度,版式格式时有效
++ height float 页面高度,版式格式时有效
+ page_angle int 页面旋转角度,版式格式时有效
+ is_scan bool 是否为扫描件
+ page_content dict 文档单页的解析内容
++ layout string 页面内layout布局数据
+++ node_id int 和para_node中的node_id对应
+++ box list 边框数据 「x, y, w, h」(x, y)为坐标点坐标,w为box宽度,h为box高度(以页面坐标为原点),版式格式时有效
+++ type string 布局类型 「text」- 段落、「image」- 图片、「table」- 表格、「head_tail」- 页眉页脚、「contents」- 目录、「cell」- 单元格(仅表格内才有)
+++ text string 布局内文字信息
+++ children list 布局嵌套数据, 当前layout type为table时有值,列表内部数据结构同layout ,为单元格的内容
++++ box list 边框数据 「x, y, w, h」(x, y)为坐标点坐标,w为box宽度,h为box高度(以页面坐标为原点),版式格式时有效
++++ type string 「cell」- 单元格(仅表格内才有)
++++ text string 表格单元格内文字
+++ matrix list 二维数组 表示表格内部合并单元格信息,「table类型layout返回,见table layout示例」
+++ merge_table string 表格结构才有该字段,「begin」- 跨页表格开始、「inner」- 跨页表格中间表格(表格跨页超过两页)、「end」- 跨页表格结束
++ sheet_name string excel sheet表名
++ type string 页面属性 「text」- 正文、「contents」- 目录、「appendix」- 附录、「others」- 其他
para_nodes list 文章段落标题层级结构树,「return_para_nodes=True」时返回
+ node_id int 节点id(从1开始计数,存在root节点id为0)
+ text string 节点对应文本内容
+ node_type string 节点类型 样举值「root、title、text、image、table、head_tail、contents」
+ parent int 最近父节点node_id
+ children list 子节点 node_id 数组
+ para_type string 标题类型,当nodetype为title时,固定格式 title{int}(如title_1、title_2)对应标题层数,其余情况同node_type
+ position list 节点对应在文档中的位置信息,包含layout的位置信息。列表形式,每个元素为一个layout的位置信息
++ pageno int 对应文档页码
++ layout_index int layout在文档当前页中的索引
++ box list layout在文档当前页中的外接矩形的坐标[x, y, w, h]

返回示例

成功返回示例:

{
    "log_id": "23596597899286921761579365582373",
    "error_code": 0,
    "error_msg": "",
    "result":
    {
        "task_id": "task-UnvGsgbYZp9pS3BZRHn11ifzjNvKzTgf",
        "status": "success",
        "task_error": null,
        "duration": 902.0,
        "parse_result_url": "https:xxxxxxxxxxxxxxxxxxx"
    }
}

解析结果示例:

{
    "file_name": "示例文件.pdf",
    "para_nodes": [
        {
            "node_id": 0,
            "text": "",
            "node_type": "root",
            "parent": null,
            "children": [1],
            "para_type": "root",
            "position": []
        },
        {
            "node_id": 1,
            "text": "建构大模型智能审查方案",
            "node_type": "title",
            "parent": 0,
            "children": [2],
            "para_type": "title_1",
            "position": [
                {
                    "pageno": 0,
                    "layout_index": 0,
                    "box": [164, 115, 288, 28]
                }
            ]
        },
        {
            "node_id": 2,
            "text": "阿德勒的主张",
            "node_type": "title",
            "parent": 1,
            "children": [3],
            "para_type": "title_2",
            "position": [
                {
                    "pageno": 0,
                    "layout_index": 1,
                    "box": [79, 175, 271, 15]
                }
            ]
        },
        {
            "node_id": 3,
            "text": "阿德勒是个体心理学的创始人,他的理论强调个体在社会关系中的自我提升和归属感。",
            "node_type": "text",
            "parent": 2,
            "children": [],
            "para_type": "text",
            "position": [
                {
                    "pageno": 0,
                    "layout_index": 2,
                    "box": [79, 224, 441, 44]
                }
            ]
        }
    ],
    "file_content": [
        {
            "page_num": 0,
            "page_size": {
                "width": 612,
                "height": 792
            },
            "page_angle": 0,
            "is_scan": false,
            "page_content": {
                "layout": [
                    {
                        "box": [164, 115, 288, 28],
                        "type": "text",
                        "text": "建构大模型智能审查方案",
                        "node_id": 1
                    },
                    {
                        "box": [79, 175, 271, 15],
                        "type": "text",
                        "text": "阿德勒的主张",
                        "node_id": 2
                    },
                    {
                        "box": [79, 224, 441, 44],
                        "type": "text",
                        "text": "阿德勒是个体心理学的创始人,他的理论强调个体在社会关系中的自我提升和归属感。",
                        "node_id": 3
                    }
                ]
            }
        }
    ]
}

失败返回示例(详细的错误码说明见API文档-错误码):

  {"log_id": "13665091038742503867108513247608", 
  "error_code": "282007", 
  "error_msg": "task not exist, please check task id", 
  "result": "null"}
上一篇
HTTP-SDK文档