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

文档抽取

接口描述

文档抽取支持自定义配置字段,无需训练即可抽取文档字段信息,精准定位字段值,适用于合同、票据、订单等各类文档场景。如需直接使用在线工具,可到智能文档分析平台-文档抽取使用。在线工具和API版的额度为共享互通

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

文档抽取API服务为异步接口,需要先调用提交请求接口获取taskId,然后调用获取结果接口进行结果轮询,建议提交请求后30秒开始轮询。提交请求接口QPS为2,获取结果接口QPS为10。

提交请求接口

请求说明

请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/rest/2.0/brain/online/v1/extract/task

URL参数:

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

Header如下:

参数
Content-Type application/x-www-form-urlencoded

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

请求参数

参数 是否必选 类型 说明
file 和 fileURLs 二选一 string 文档 base64编码,需去掉编码头(data:image/jpeg;base64, ),支持上传 JPG、JPEG、PNG、BMP、TIF 和 TIFF 格式图片及 DOC、DOCX、PDF、XLSX、XLS 和 OFD 格式文档, 单个文件大小不超过50MB
优先级:file>fileURLs,当file字段存在时,fileURLs字段失效
fileName file不为空时必传 string 文档名称,当传入file参数时,该字段必传,例如test.docx
fileURLs 和file二选一 []string 文档 url,可公网访问(仅支持 bos),目前仅支持上传单个 url, 支持上传 JPG、JPEG、PNG、BMP、TIF 和 TIFF 格式图片及 DOC、DOCX、PDF、XLSX、XLS 和 OFD 格式文档, 单个文件大小不超过50MB
优先级:file>fileURLs,当file字段存在时,fileURLs字段失效
manifestVersionId 和 manifest 二选一 string 用户在文档抽取在线工具配置的清单版本 id
优先级:manifestVersionId>manifest,当manifestVersionId字段存在时,manifest字段失效
manifest 和 manifestVersionId 二选一 string 抽取字段配置,每个抽取字段包含key、parentKey、description三个参数:
• key为抽取字段名称,是必传参数;
• parentKey为抽取字段的父字段,是非必传参数,不存在时传root或为空;
• description为抽取字段的补充说明,用于辅助大模型提升抽取效果,是非必传参数,不存在时为空。
以上三个参数支持中英文、数字、下划线、中划线、斜杠、冒号和括号,字符数不超过30。
key的数量不能超过50。
优先级:manifestVersionId>manifest,当manifestVersionId字段存在时,manifest字段失效

manifest参数示例 成功返回示例:

[{
	"parentKey": "",
    "key": "生效范围",
	"description": "指国家范围而非省份、城市或更细分的范围"
}, {
	"parentKey": "商品信息",
    "key": "商品编号",
	"description": ""
}, {
	"parentKey": "商品信息",
    "key": "商品价格",
	"description": ""
}]

请求代码示例

提示一:使用示例代码前,请记得替换其中的示例Token、文档地址和清单。

提示二:目前仅提供Python语言,如需其他语言示例可参考 示例代码中心

import base64
import requests
import os
'''
文档抽取-提交请求
'''
file_path = '[本地文件]'
manifest_version_id = '[清单id]'
request_host = "https://aip.baidubce.com/rest/2.0/brain/online/v1/extract/task"
encoded_string = ''
with open(file_path, 'rb') as file:
    file_base64 = base64.b64encode(file.read()).decode('utf-8')
data = {
    'file': file_base64,
    'fileName': os.path.basename(file_path),
    'manifestVersionId': manifest_version_id,
}
access_token = '[调用鉴权接口获取的token]'
request_url = request_host + "?access_token=" + access_token
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, headers=headers, data=data)
if response:
    print(response.json())

返回说明

返回参数

字段 类型 说明
log_id string 唯一的 log_id,用于问题定位
error_code int 状态码
error_msg string 详情
result dict 返回的结果列表
+ taskId string 发送提交请求时返回的taskId

返回示例 成功返回示例:

{
    "error_code": 0,
    "error_msg": "",
    "log_id": "088d6639-bafd-4007-be27-dcddbb651322",
    "result": {
        "taskId": "task-6tb7mgduz9rqaxzi"
    }
}

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

{
    "error_code": 283016,
    "error_msg": "parameters value error:清单字段名称格式错误",
    "log_id": "debb76a0-8015-4647-be19-f76c5a0f2892",
    "result": None
}

获取结果接口

请求说明

请求示例

HTTP 方法:POST 请求URL:https://aip.baidubce.com/rest/2.0/brain/online/v1/extract/query_task

URL参数:

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

Header如下:

参数
Content-Type application/x-www-form-urlencoded

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

请求参数

参数 是否必选 类型 说明
taskId string 发送提交请求时返回的taskId

请求代码示例

提示一:使用示例代码前,请记得替换其中的示例Token、taskId。 提示二:目前仅提供Python语言,如需其他语言示例可参考 示例代码中心

import requests
'''
文档抽取-获取结果
'''

request_host = "https://aip.baidubce.com/rest/2.0/brain/online/v1/extract/query_task"
data = {
    "taskId": "[调用提交请求接口获取的task_id]"
}
access_token = "[调用鉴权接口获取的token]"
request_url = request_host + "?access_token=" + access_token

headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=data, headers=headers)
if response:
	print(response.json())

返回说明

返回参数

字段 类型 说明
log_id uint64 唯一的log id,用于问题定位
error_code int 错误码
error_msg string 错误描述信息
result dict 返回的结果列表
+ taskId string 任务ID
+ status string 任务状态,pending:排队中;processing:运行中;success:成功;failed:失败
+ reason string 任务失败描述信息
+ createdAt string 任务创建时间
+ startedAt string 任务开始时间
+ finishedAt string 任务结束时间
+ duration string 任务执行时长
+ extractResult []dict 文档抽取结果列表
++ docId string 文档ID
++ docName string 文档名称
++ data dict 抽取字段和结果信息
+++singleKey dict 单个字段抽取结果列表
++++{字段名称} []dict 单个字段的字段名称
+++++word string 单个字段的抽取结果
+++++valuePositions []dict 抽取内容位置信息
++++++box [4][2]int 抽取结果的四角点坐标框,[[x1,y1],[x2,y2],[,x3,y3],[x4,y4]],分别对应坐标框四个点的坐标
++++++cbox [4]int 抽取结果的坐标框,「x, y, w, h」(x, y)为坐标点坐标,w为box宽度,h为box高度(以页面坐标为原点)
++++++pageNo int 页号
+++comboKey dict 组合字段抽取结果列表
++++{父字段名称} []dict 组合字段的父字段名称
+++++{子字段名称} dict 组合字段的子字段名称
++++++valuePositions []dict 抽取内容位置信息
+++++++box [4][2]int 四角点坐标框,[[x1,y1],[x2,y2],[,x3,y3],[x4,y4]],分别对应坐标框四个点的坐标
+++++++cbox [4]int 坐标框,「x, y, w, h」(x, y)为坐标点坐标,w为box宽度,h为box高度(以页面坐标为原点)
+++++++pageNo int 页号

返回示例

成功返回示例:

{
    "error_code": 0,
    "error_msg": "",
    "log_id": "ead7beaf-aeec-4ca5-ac0e-d0e4c5517baa",
    "result": {
        "taskId": "task-4x0e0ssnhds2esb8",
        "status": "Success",
        "createdAt": "2024-08-06 11:23:56 +0000 UTC",
        "startedAt": "2024-08-06 11:23:59 +0000 UTC",
        "finishedAt": "2024-08-06 11:24:24 +0000 UTC",
        "duration": 25,
        "reason": "",
        "extractResult": [{
            "docId": "doc-8gh9uqz9v5g32ccx",
            "docName": "跨页楼地址.pdf",
            "data": {
                "singleKey": {
                    "保全金额": [{
                        "valuePositions": [{
                            "box": [
                                [388, 240],
                                [445, 240],
                                [445, 254],
                                [388, 254]
                            ],
                            "cbox": [388, 240, 57, 14],
                            "pageNo": 4
                        }, {
                            "box": [
                                [127, 426],
                                [184, 426],
                                [184, 440],
                                [127, 440]
                            ],
                            "cbox": [127, 426, 57, 14],
                            "pageNo": 4
                        }],
                        "word": "45000元"
                    }]
                },
                "comboKey": {
                    "申请人": [{
                        "申请人地址": {
                            "valuePositions": [{
                                "box": [
                                    [372, 108],
                                    [500, 108],
                                    [500, 124],
                                    [372, 124]
                                ],
                                "cbox": [372, 108, 128, 16],
                                "pageNo": 1
                            }, {
                                "box": [
                                    [74, 142],
                                    [189, 142],
                                    [189, 156],
                                    [74, 156]
                                ],
                                "cbox": [74, 142, 115, 14],
                                "pageNo": 1
                            }],
                            "word": "烟台市莱山区润华大厦1号楼14层"
                        },
                        "申请人联系方式": {
                            "valuePositions": [{
                                "box": [
                                    [144, 174],
                                    [238, 174],
                                    [238, 189],
                                    [144, 189]
                                ],
                                "cbox": [144, 174, 94, 15],
                                "pageNo": 1
                            }],
                            "word": "13589767069"
                        }
                    }]
                }
            }
        }]
    }
}

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

{
    "error_code": 0,
    "error_msg": "",
    "log_id": "7ea4d878-ed81-49de-88cc-5f910c6b8d1b",
    "result": {
        "taskId": "task-utbgdcp6hqx96d3b",
        "status": "Failed",
        "createdAt": "2024-07-29 07:09:41 +0000 UTC",
        "startedAt": "",
        "finishedAt": "",
        "duration": 0,
        "reason": "no valid doc",
        "extractResult": [
            {
                "docId": "doc-g34h4tsyv7zpsz05",
                "docName": "4b252fcf49f9a7a7042e63e6b6fefbcc1000007.png",
                "data": {}
            }
        ]
    }
}
上一篇
文档比对
下一篇
文档解析