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

文档解析

接口描述

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

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

提交请求接口

请求说明

请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/rest/2.0/brain/online/v2/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、ofd、ppt、pptx
-流式文档:doc、docx、txt、xls、xlsx、wps
PDF文档大小不超过300M,非PDF文档大小不超过50M,文档页数不超过2000页(流式文档按2000字算一页)
优先级: file_data > file_url,当file_data字段存在时,file_url字段失效
file_url 和file_data二选一 string - 文件数据URL,URL长度不超过1024字节,支持单个URL传入,若文件大小超过50M,须通过该方式上传。其余文件准入标准与file_data一致。
优先级: file_data > file_url,当file_data字段存在时,file_url字段失效
请注意关闭URL防盗链
file_name string - 文件名,请保证文件名后缀正确,例如 "1.pdf "
return_doc_chunks string - JSON 字符串,文档切分的传参结构,Python中,json字符串示例 json.dumps({"switch": True, "chunk_size": -1 }),详细结构详见下方说明,具体调用方式详见下方请求示例
+ switch bool True/False 是否进行文档内容切分,「default=False」
+ chunk_size int (0,∞) 切分块的大小,按照字符数统计。若段落字符数小于或等于chunk_size,则按chunk_size切分;若大于chunk_size,则整段作为一个切分块,不因chunk_size限制而额外切分。
「default=-1」,表示不限制切分块的大小,按照文档的段落进行切分
+ split_type string chunk/mark 切分方式。
chunk:按照字符数「chunk_size」切分;
mark:按照「separators」中的标点符号切分;
「default=chunk」
+ separators list 。/ ;/ !/ ?/ ; / ! / ? 切分标点,仅包含表示一句话结束的标点。
「default=["。", ";", "!", "?", ";", "!", "?"]」
recognize_formula bool True/False 是否对版式类型文档进行公式识别

请求代码示例

提示:使用示例代码前,请记得替换其中的示例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/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/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/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元素类型, 当前可取值:
• para:段落
• table:表格
• head_tail:页面顶部
• image:文档中的插图
• contents:目录
• seal:印章
• title:标题
• formula:公式
+++ sub_type string layout元素子类型, 当type为title、image时,subtype有值。
title类的 subtype 包含:
• title_{n},代表n级标题, 比如title_2代表二级标题
• image_title:图标题
• table_title:表标题
image类的 subtype 包含:
• chart:统计图表
• figure:普通插图
• QR_code:二维码
• Bar_code:条形码
+++ parent string 标题层级树中父节点的layout ID,若当前layout为一级标题,其parent为 "root"。在table和image的内嵌版面信息中暂时都为空
+++ children list 标题层级树中子节点的layout ID。在table和image的内嵌版面信息中暂时都为空
++ tables list 页面表格解析结果
+++ layout_id string layout ID,与layouts中的元素type为table的元素的layout ID对应
+++ markdown string 表格内容的markdown形式
+++ table_title_id list 表格标题对应的layout_id,默认为null
+++ position list 边框数据 「x, y, w, h」(x, y)为坐标点坐标,w为box宽度,h为box高度(以页面坐标为原点),版式格式时有效
+++ cells list 单元格的内嵌版面信息,layout类型为表格时有值
+++ matrix list 二位数组 表示表格内布局位置信息,每个元素对应cells列表中元素的索引
+++ merge_table string 「begin」- 跨页表格开始、「inner」- 跨页表格中间表格(表格跨页超过两页)、「end」- 跨页表格结束;非跨页表格该字段为空
++ images list 页面中图片解析结果
+++ layout_id string layout ID,与layouts中的元素type为image的元素的layout ID对应
+++ image_title_id list 图片标题对应的layout_id,默认为null
+++ position list 边框数据 「x, y, w, h」(x, y)为坐标点坐标,w为box宽度,h为box高度(以页面坐标为原点),版式格式时有效
+++ content_layouts list 图片的内嵌版面信息
+++ data_url string 图片存储链接
++ meta dict 页面元信息
+++ page_width int 页面宽度
+++ page_height int 页面高度
+++ is_scan bool 是否扫描件
+++ page_angle int 页面倾斜角度
+++ page_type string 页面属性「text」- 正文、「contents」- 目录、「appendix」- 附录、「others」- 其他
+++ sheet_name string excel的sheet名
+ chunks list 文件内容切分结果,return_doc_chunks中switch为True时有值
++ chunk_id string 切片的ID
++ content string 切片的内容
++ type string 切片类型, 为text或者table
++ meta dict chunk元信息
+++ title list chunk所属的多级标题内容
+++ position list chunk的位置,根据分块算法有可能chunk跨多个页
+++ box list chunk的位置坐标
+++ page_num int chunk内容所在页数

表格解析结构说明

以下图为例: 文档解析-表格示例.png

{
# 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,
        "duration": 902.0,
        "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",
                    "sub_type": "title_1",
                    "parent": "root",
                    "children": [
                        "2aJLm2-layout-2",
                        "2aJLm2-layout-3"
                    ]
                },
                {
                    "layout_id": "2aJLm2-layout-2",
                    "text": "甲、乙双方根据《中华人民共和国合同法》及其它相关法律、法规的规定,本着平等、自愿、互利的原则,经友好协商,订立本合同,以资共同信守:",
                    "position": [
                        84,
                        160,
                        444,
                        31
                    ],
                    "type": "text",
                    "sub_type": "",
                    "parent": "2aJLm2-layout-1",
                    "children": [

                    ]
                },
                {
                    "layout_id": "2aJLm2-layout-3",
                    "text": "1.合同标的物信息",
                    "position": [
                        79,
                        206,
                        110,
                        14
                    ],
                    "type": "title",
                    "sub_type": "title_2",
                    "parent": "2aJLm2-layout-1",
                    "children": [
                        "2aJLm2-layout-4",
                        "2aJLm2-layout-5",
                        "2aJLm2-layout-6"
                    ]
                },
                {
                    "layout_id": "2aJLm2-layout-4",
                    "text": "",
                    "position": [
                        82,
                        224,
                        452,
                        97
                    ],
                    "type": "table",
                    "sub_type": "",
                    "parent": "2aJLm2-layout-3",
                    "children": [

                    ]
                },
                {
                    "layout_id": "2aJLm2-layout-5",
                    "text": "本合同一式【2】份,经双方代表签字盖章生效。甲乙双方各执【3】份,具有同等法律效力。",
                    "position": [
                        79,
                        348,
                        456,
                        31
                    ],
                    "type": "text",
                    "sub_type": "",
                    "parent": "2aJLm2-layout-3",
                    "children": [

                    ]
                },
                {
                    "layout_id": "2aJLm2-layout-6",
                    "text": "1",
                    "position": [
                        305,
                        745,
                        11,
                        12
                    ],
                    "type": "head_tail",
                    "sub_type": "",
                    "parent": "2aJLm2-layout-3",
                    "children": [

                    ]
                }
            ],
            "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": "序号",
                            "position": [
                                82,
                                224,
                                36,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-1",
                            "text": "商品名称",
                            "position": [
                                118,
                                224,
                                78,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-2",
                            "text": "产品简称",
                            "position": [
                                196,
                                224,
                                92,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-3",
                            "text": "单价",
                            "position": [
                                288,
                                224,
                                57,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-4",
                            "text": "数量",
                            "position": [
                                345,
                                224,
                                43,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-5",
                            "text": "总价",
                            "position": [
                                387,
                                224,
                                61,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-6",
                            "text": "税率",
                            "position": [
                                448,
                                224,
                                46,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-7",
                            "text": "备注",
                            "position": [
                                494,
                                224,
                                41,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-8",
                            "text": "1",
                            "position": [
                                82,
                                252,
                                36,
                                44
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-9",
                            "text": "软件-AI ",
                            "position": [
                                118,
                                252,
                                78,
                                44
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-10",
                            "text": "中台内网-推理平台+训练平台",
                            "position": [
                                196,
                                252,
                                92,
                                44
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-11",
                            "text": "95,000",
                            "position": [
                                288,
                                252,
                                57,
                                44
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-12",
                            "text": "1",
                            "position": [
                                345,
                                252,
                                43,
                                44
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-13",
                            "text": "905,000",
                            "position": [
                                387,
                                252,
                                61,
                                44
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-14",
                            "text": "13% ",
                            "position": [
                                448,
                                252,
                                46,
                                44
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-15",
                            "text": "第一单元",
                            "position": [
                                494,
                                252,
                                41,
                                71
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-16",
                            "text": "2",
                            "position": [
                                82,
                                295,
                                36,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-17",
                            "text": "硬件【A】",
                            "position": [
                                118,
                                295,
                                78,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-18",
                            "text": "服务器",
                            "position": [
                                196,
                                295,
                                92,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-19",
                            "text": "30,250",
                            "position": [
                                288,
                                295,
                                57,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-20",
                            "text": "37",
                            "position": [
                                345,
                                295,
                                43,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-21",
                            "text": "1,11950",
                            "position": [
                                387,
                                295,
                                61,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        },
                        {
                            "layout_id": "2aJLm2-layout-4-22",
                            "text": "13% ",
                            "position": [
                                448,
                                295,
                                46,
                                28
                            ],
                            "type": "text",
                            "sub_type": "",
                            "parent": "",
                            "children": null
                        }
                    ],
                    "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
                        ]
                    ],
                    "merge_table": ""
                }
            ],
            "images": [

            ],
            "meta": {
                "page_width": 612,
                "page_height": 792,
                "is_scan": false,
                "page_angle": 0,
                "page_type": "text",
                "sheet_name": ""
            }
        }
    ],
    "chunks": [
        {
            "chunk_id": "2aJLm2-chunk-0",
            "content": "甲、乙双方根据《中华人民共和国合同法》及其它相关法律、法规的规定,本着平等、自愿、互利的原则,经友好协商,订立本合同,以资共同信守:",
            "type": "text",
            "meta": {
                "title": [
                    "买卖合同"
                ],
                "position": [
                    {
                        "box": [
                            84,
                            160,
                            444,
                            31
                        ],
                        "page_num": 0
                    }
                ]
            }
        },
        {
            "chunk_id": "2aJLm2-chunk-1",
            "content": "| 序号 | 商品名称 | 产品简称 | 单价 | 数量 | 总价 | 税率 | 备注 |\n| --- | --- | --- | --- | --- | --- | --- | --- |\n| 1 | 软件-AI  | 中台内网-推理平台+训练平台 | 95,000  | 1  | 905,000  | 13%  | 第一单元 |\n| 2 | 硬件【A】 | 服务器 | 30,250  | 37  | 1,11950  | 13%  | 第一单元 |\n",
            "type": "table",
            "meta": {
                "title": [
                    "买卖合同",
                    "1.合同标的物信息"
                ],
                "position": [
                    {
                        "box": [
                            82,
                            224,
                            452,
                            97
                        ],
                        "page_num": 0
                    }
                ]
            }
        },
        {
            "chunk_id": "2aJLm2-chunk-2",
            "content": "本合同一式【2】份,经双方代表签字盖章生效。甲乙双方各执【3】份,具有同等法律效力。",
            "type": "text",
            "meta": {
                "title": [
                    "买卖合同",
                    "1.合同标的物信息"
                ],
                "position": [
                    {
                        "box": [
                            79,
                            348,
                            456,
                            31
                        ],
                        "page_num": 0
                    }
                ]
            }
        }
    ]
}

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

  {"log_id": "13665091038742503867108513247608", 
  "error_code": "282007", 
  "error_msg": "task not exist, please check task id", 
  "result": "null"}
上一篇
智能结构化
下一篇
卡证文字识别