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

文档解析(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 页面高度

表格解析结构说明

以下图为例: 文档解析-表格示例.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,
        "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"}
上一篇
文档解析
下一篇
卡证文字识别