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

文档比对

接口描述

文档比对支持文档1对1、1对多比对,可指定页面精细化核验,精准识别、高亮定位增删改差异,并一键导出比对报告,大幅提升比对准确性和效率。 如希望快速可视化体验效果,可登录智能文档分析平台,一键上传文档,在线测试;在线工具和API服务的额度共享互通。

文档比对API服务为异步接口,完整流程分为以下两个阶段:
比对结果获取:调用提交请求接口后将返回taskID,建议等待5~10秒后再调用获取结果接口进行轮询。
报告生成与下载:获取到比对结果后,可对比对差异项进行忽略操作;保存忽略项后系统将异步生成最终报告,建议保存成功后开始轮询,获取到报告链接后即可下载。
各接口QPS限制如下:提交请求接口为2,获取结果接口与保存忽略项接口均为10。

提交请求接口

请求说明

请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/file/2.0/brain/online/v1/textdiff/create_task

URL参数:

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

Header如下:

参数 值
Content-Type multipart/form-data

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

请求参数

参数 是否必选 类型 可选值范围 说明
baseFile 与 baseFileURL 二选一 file - 文件数据,标准文档(主版)。
支持的文件类型:图片(bmp/jpg/jpeg/png/tif/tiff)、文档(doc/docx/wps/pdf/ofd)。
支持的文件数量:仅支持传入一个标准文档。
支持的文件大小:单个文件不超过 50M。
支持的图像尺寸:最短边至少 15px,最长边最大 4096px。
优先级: baseFile > baseFileURL,当 baseFile 字段存在时,baseFileURL 字段失效
compareFile 与 compareFileURL 二选一 file - 文件数据,比对文档(副版)。
支持的文件类型:图片(bmp/jpg/jpeg/png/tif/tiff)、文档(doc/docx/wps/pdf/ofd)、压缩包:zip(包内文件须为上述图片或文档格式)。
支持的文件数量:可一次传入一个或多个比对文档,或一个 zip 压缩包。
支持的文件大小:单个文件不超过 50M;zip 压缩包不超过 200M,包内单文件不超过 50M。
支持的图像尺寸:最短边至少 15px,最长边最大 4096px。
优先级: compareFile > compareFileURL,当 compareFile 字段存在时,compareFileURL 字段失效。
baseFileURL 与 baseFile 二选一 string - 文件完整 URL,仅支持 BOS 公网访问,URL 长度不超过 1024 字节。
支持的文件类型:图片(bmp/jpg/jpeg/png/tif/tiff)、文档(doc/docx/wps/pdf/ofd)。支持的文件数量:仅支持传入一篇标准文档。
支持的文件大小:单个文件不超过 50M。
支持的图像尺寸:最短边至少 15px,最长边最大 4096px。
优先级: baseFile > baseFileURL,当 baseFile 字段存在时,baseFileURL 字段失效。
请注意关闭 URL 防盗链
compareFileURL 与 compareFile 二选一 string - 文件完整 URL,仅支持 BOS 公网访问,URL 长度不超过 1024 字节。
支持的文件类型:图片(bmp/jpg/jpeg/png/tif/tiff)、文档(doc/docx/wps/pdf/ofd)、压缩包:zip(仅1VN多文档比对使用,包内文件须为上述图片或文档格式)。
支持的文件数量:可传入单个URL,或单个字段传JSON数组字符串一次传入多个URL,或一个zip压缩包URL。
支持的文件大小:单个文件不超过 50M;zip 压缩包不超过 200M,包内单文件不超过 50M。
支持的图像尺寸:最短边至少 15px,最长边最大 4096px。
优先级: compareFile > compareFileURL,当 compareFile 字段存在时,compareFileURL 字段失效。
请注意关闭 URL 防盗链。
param 否 string - 文档比对参数,将指定参数以 json 格式传递。其中特殊差异识别参数(sealRecognition 等)默认为 false,布局差异识别参数(coverRecognition 等)默认为 true。 例如,传递参数{"sealRecognition":true,"handWritingRecognition":true} 将分别启用印章识别与手写体识别功能。
+ specificType 否 string specificPageContent
/ specificPageNumber
特定页比对模式。 不传或传空表示全文比对;specificPageContent 表示按内容识别特殊页,specificPageNumber 表示按页码范围比对。两者互斥,且必须与所传子对象匹配
+ specificPageContent 否 dict - specificType=specificPageContent 时生效,含四个 bool 子字段,默认均为 false,不可全为 false
++ needSealPage 否 bool true/false 是否比对印章页,默认为 false
++ needCoverPage 否 bool true/false 是否比对封面页,默认为 false。封面页取文档第一页
++ needCatalogPage 否 bool true/false 是否比对目录页,默认为 false
++ needBackCoverPage 否 bool true/false 是否比对封底页,默认为 false。封底页取文档最后一页
+ specificPageNumber 否 dict - specificType=specificPageNumber 时生效,含 baseStart / baseEnd(标准文档起止页)、compareStart / compareEnd(比对文档起止页)四项,均必填;且 baseStart/baseEnd、compareStart/compareEnd 页码范围必须相等
++ baseStart 是 int ≥1 标准文档起始页页码,specificType=specificPageNumber 时必填。需 ≥1 且不大于 baseEnd
++ baseEnd 是 int ≥baseStart 标准文档终止页页码,specificType=specificPageNumber 时必填。不得超过标准文档实际总页数
++ compareStart 是 int ≥1 比对文档起始页页码,specificType=specificPageNumber 时必填。需 ≥1 且不大于 compareEnd
++ compareEnd 是 int ≥compareStart 比对文档终止页页码,specificType=specificPageNumber 时必填。不得超过比对文档实际总页数
+ sealRecognition 否 bool true/false 是否识别印章信息(识别印章信息有额外的时间开销),支持电子签章差异比对。默认为 false
+ fullWidthHalfWidthRecognition 否 bool true/false 是否识别中英文符号差异。默认为 false
+ fontFamilyRecognition 否 bool true/false 是否识别字体差异。默认为 false
+ fontSizeRecognition 否 bool true/false 是否识别字号差异。默认为 false
+ handWritingRecognition 否 bool true/false 是否识别手写体差异。默认为 false
+ coverRecognition 否 bool true/false 是否识别封面差异,默认为 true。特定页比对模式(specificType 非空)不支持传参,恒按默认值 true 生效
+ catalogRecognition 否 bool true/false 是否识别目录页差异,默认为 true。特定页比对模式(specificType 非空)不支持传参,恒按默认值 true 生效
+ headerFooterRecognition 否 bool true/false 是否识别页眉页脚差异,默认为 true。
+ appendixRecognition 否 bool true/false 是否识别附录页差异,默认为 true。特定页比对模式(specificType 非空)不支持传参,恒按默认值 true 生效
+ paragraphErrorRecognition 否 bool true/false 是否识别信息错段,默认为 true。特定页比对模式(specificType 非空)不支持传参,恒按默认值 true 生效
+ pageErrorRecognition 否 bool true/false 是否识别信息错页,默认为 true。 特定页比对模式(specificType 非空)不支持传参,恒按默认值 true 生效

请求代码示例

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

import requests
import os
import json

'''
文档比对-提交请求
'''


request_host = "https://aip.baidubce.com/file/2.0/brain/online/v1/textdiff/create_task"
# 二进制方式打开文件
f1 = '[本地文件-标准文档]'
f2 = '[本地文件-比对文档]'
body = {
    "baseFile": (os.path.basename(f1), open(f1, 'rb'), "multipart/form-data"),
    "compareFile": (os.path.basename(f2), open(f2, 'rb'), "multipart/form-data"),
}

param = {
    "sealRecognition": False,
    "handWritingRecognition": False
}
data = {"param": json.dumps(param)}
access_token = '[调用鉴权接口获取的token]'
request_url = f"{request_host}?access_token={access_token}"
response = requests.post(request_url, data=data, files=body)
if response:
    print(response.json())

示例2: 1VN多文档对比&特定页模式比对

import json
import os
import requests

'''
文档比对-提交请求(1VN 多文档:compareFileURL 单字段传 JSON 数组字符串)
'''

request_host = "https://aip.baidubce.com/file/2.0/brain/cloud/online/v1/textdiff/create_task"
access_token = '[调用鉴权接口获取的token]'

base_file_url = '[标准文档(主版)的 BOS 公网 URL]'
compare_file_urls = [
    '[比对文档(副版)1 的 BOS 公网 URL]',
    '[比对文档(副版)2 的 BOS 公网 URL]',
]

param = {
    "sealRecognition": False,
    "handWritingRecognition": False,
}

# 关键:compareFileURL 只传一个字段,值是 JSON 数组字符串
body = [
    ("param", (None, json.dumps(param))),
    ("baseFileURL", (None, base_file_url)),
    ("compareFileURL", (None, json.dumps(compare_file_urls))),
]

request_url = f"{request_host}?access_token={access_token}"
response = requests.post(request_url, files=body, timeout=300)
print(response.json())

# ===== 非 URL(本地文件上传)模式说明 =====
# 如果不用 URL 而是上传本地文件,把 baseFileURL / compareFileURL 换成 baseFile / compareFile,
# 值改为 (文件名, 文件二进制, "multipart/form-data") 三元组;1VN 时 compareFile 用同名多值即可,不需要 JSON 数组字符串:
#
#   f1 = '[本地文件-标准文档(主版)]'
#   f2 = '[本地文件-比对文档(副版)1]'
#   f3 = '[本地文件-比对文档(副版)2]'
#   body = [
#       ("param", (None, json.dumps(param))),
#       ("baseFile", (os.path.basename(f1), open(f1, 'rb'), "multipart/form-data")),
#       ("compareFile", (os.path.basename(f2), open(f2, 'rb'), "multipart/form-data")),
#       ("compareFile", (os.path.basename(f3), open(f3, 'rb'), "multipart/form-data")),
#   ]
#
# baseFile/baseFileURL、compareFile/compareFileURL 分别二选一,二者同时存在时以文件字段为准。

返回说明

返回参数

字段 类型 说明
log_id uint64 唯一的log id,用于问题定位
error_code int 错误码
error_msg string 错误描述信息
result dict 返回的结果列表
+ taskId string 该请求生成的taskId,后续使用该taskId获取比对结果

返回示例

成功返回示例:

{
    "error_code": 0,
    "error_msg": "",
    "log_id": "259575694341050368",
    "result": {
        "taskId": "task-affq81x73t23pqmk"
    }
}

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

{
    "error_code": 282003,
    "error_msg": "missing parameters",
    "log_id": "259909120864665600"
}

获取结果接口

请求说明

请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/file/2.0/brain/online/v1/textdiff/query_task

URL参数:

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

Header如下:

参数 值
Content-Type multipart/form-data

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

请求参数

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

请求代码示例

提示:使用示例代码前,请记得替换其中的示例Token、taskId。

import requests

'''
文档比对-获取结果
'''


request_host = "https://aip.baidubce.com/file/2.0/brain/online/v1/textdiff/query_task"
params = {"taskId": "[调用提交请求接口获取的taskId]"}

access_token = '[调用鉴权接口获取的token]'
request_url = f"{request_host}?access_token={access_token}"
response = requests.post(request_url, params=params, files=params)
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:失败。
+ duration string 任务持续时长,任务未完成或失败时为空
+ errorType string 任务错误类型,quotaError:配额超限;taskError:任务失败,失败详情可见compareMessage。仅 status 为 failed 时返回,任务正常时不返回该字段
+ param dict 任务实际生效的文档比对参数回显,含特定页比对参数、特殊差异识别参数与布局差异识别参数
++ specificType string 任务实际生效的特定页比对模式回显,全文比对时为空
++ specificPageContent dict 按内容识别特殊页的参数回显,specificType=specificPageContent 时有值,否则为空
+++ needSealPage bool 是否比对印章页
+++ needCoverPage bool 是否比对封面页(文档第一页)
+++ needCatalogPage bool 是否比对目录页
+++ needBackCoverPage bool 是否比对封底页(文档最后一页)
++ specificPageNumber dict 按页码范围比对的参数回显,specificType=specificPageNumber 时有值,否则为空
+++ baseStart int 标准文档实际参与比对的起始页页码
+++ baseEnd int 标准文档实际参与比对的终止页页码
+++ compareStart int 比对文档实际参与比对的起始页页码
+++ compareEnd int 比对文档实际参与比对的终止页页码
++ sealRecognition bool 是否识别印章差异
++ fullWidthHalfWidthRecognition bool 是否识别中英文符号差异
++ fontFamilyRecognition bool 是否识别字体差异
++ fontSizeRecognition bool 是否识别字号差异
++ handWritingRecognition bool 是否识别手写体差异
++ coverRecognition bool 是否识别封面差异,特定页比对模式(specificType 非空)不支持传参,恒回显为 true
++ catalogRecognition bool 是否识别目录页差异,特定页比对模式(specificType 非空)不支持传参,恒回显为 true
++ headerFooterRecognition bool 是否识别页眉页脚差异,回显实际生效值
++ appendixRecognition bool 是否识别附录页差异,特定页比对模式(specificType 非空)不支持传参,恒回显为 true
+ subTaskList array 文档比对结果列表。1VN 多文档比对时该列表包含多个元素,每个比对文档对应一个子任务,差异结果、报告与状态均按子任务独立返回;1V1 时为一个元素。
++ subtaskId string 子任务ID,1VN 场景下用于区分各比对文档对应的差异结果与报告
++ similarity string 该子任务两份文档的相似度,compareStatus 非 success 时为空
++ totalDiff int 该子任务两份文档的差异点数量,不因差异项被忽略而减少
++ baseDocId string 标准文档ID
++ baseDocName string 标准文档名称
++ baseDocOssURL string 标准文档的对象存储下载链接,有效期30天,为解析后的标准文档PDF地址,用于SDK渲染;compareStatus 非 success 时为空
++ compareDocId string 比对文档ID
++ compareDocName string 比对文档名称
++ compareDocOssURL string 比对文档的对象存储下载链接,有效期30天,为解析后的比对文档PDF地址,用于SDK渲染;compareStatus 非 success 时为空
++ compareStatus string 比对子任务状态,pending:排队中;processing:运行中;success:成功;failed:失败
++ compareMessage string 比对子任务失败的描述信息,compareStatus 为 failed 时有值;否则不返回该字段
++ reportStatus string 比对报告状态,success:成功;failed:失败;pending:排队中;processing:生成中(含保存忽略项后重新生成,此期间 reportOssURL 与 reportExcelOssURL 为空)
++ reportMessage string 比对报告失败的描述信息,reportStatus 为 failed 时有值;否则不返回该字段
++ reportOssURL string 比对报告的对象存储下载链接,有效期30天,为两份文档的差异项总结报告;reportStatus 非 success 时为空
++ reportExcelOssURL string 比对报告 Excel(差异详情清单)的对象存储下载链接,有效期30天,与 PDF 报告由同一次报告生成一并产出;reportStatus 非 success 时为空且不返回该字段
++ createdAt string 子任务创建时间
++ finishedAt string 子任务结束时间,1VN 场景下各子任务的结束时间相互独立
++ diffItemList array 该子任务的比对结果列表,元素为单个差异项;无差异时不返回该字段
+++ id string 比对差异点ID
+++ basePageNum int 标准文档页码
+++ baseDiffType string 标准文档差异类型,insert:新增;delete:删除;replace:修改
+++ baseBoxArea [4]int 标准文档差异点的原文四角点坐标,每个框选范围包含左上角x坐标、左上角y坐标、矩形框宽度、矩形框高度,共四个数值,如[89,74,61,12];该侧无对应差异内容时为空数组
+++ baseDiffBoxes string 标准文档差异点框的位置,二维数组的字符串,当差异项出现换行时,为多个字符串;该侧无对应差异内容时为"[]"
+++ baseDiffContent string 标准文档差异点内容
+++ baseDiffContext string 标准文档差异点上下文
+++ baseDiffContentType array 标准文档比对差异类型,seal:印章;figure:图片;size:字号;font:字体;full_half_width:中英文符号
+++ comparePageNum int 比对文档页码
+++ compareDiffType string 比对文档差异类型,insert:新增;delete:删除;replace:修改
+++ compareBoxArea [4]int 比对文档差异点的原文四角点坐标,每个框选范围包含左上角x坐标、左上角y坐标、矩形框宽度、矩形框高度,共四个数值,如[89,74,61,12];该侧无对应差异内容时(如差异类型为 delete)为空数组
+++ compareDiffBoxes string 比对文档差异点框的位置,二维数组的字符串,当差异项出现换行时,为多个字符串;该侧无对应差异内容时为"[]"
+++ compareDiffContent string 比对文档差异点内容
+++ compareDiffContext string 比对文档差异点上下文
+++ compareDiffContentType array 比对文档比对差异类型,seal:印章;figure:图片;size:字号;font:字体;full_half_width:中英文符号
+++ ignored bool 该差异项是否已被人工忽略,默认 false。忽略状态由保存忽略项接口写入,本接口仅回显;差异项总数 totalDiff 不因忽略而减少
+++ ignoreReason string 该差异项被忽略的原因,未忽略时为空字符串

返回示例

成功返回示例(以1VN多文档比对为例,包含字段:subtaskId、reportExcelOssURL、ignored、ignoreReason、param.specificType 及布局差异识别参数回显;为控制篇幅,示例中各子任务的 diffItemList 仅节选部分差异项,实际返回条数与 totalDiff 一致):

{
    "error_code": 0,
    "error_msg": "",
    "log_id": "262826631337504768",
    "result": {
        "taskId": "task-affq81x73t23pqmk",
        "subTaskList": [
            {
                "subtaskId": "subtask-6625h1civfetzdau",
                "baseDocId": "doc-egdc1iziztwmech2",
                "baseDocName": "软硬件采购合同标准版.docx",
                "baseDocOssURL": "http://ai-textmind.bj.bcebos.com/data/mnt/text_flow/parser/doc-egdc1iziztwmech2/pdf/doc-egdc1iziztwmech2.pdf?authorization=bce-auth-v1%2FALTAKsXn1egl7w69bHDIfE3SOD%2F2023-12-27T05%3A16%3A40Z%2F2592000%2Fhost%2Fe922fe2ac5060e0819f5bcda64139be322a733cdcc357ddea189fa1484e3244c",
                "compareDocId": "doc-r8xbre9f5r3i8v85",
                "compareDocName": "软硬件采购合同A.docx",
                "compareDocOssURL": "http://ai-textmind.bj.bcebos.com/data/mnt/text_flow/parser/doc-r8xbre9f5r3i8v85/pdf/doc-r8xbre9f5r3i8v85.pdf?authorization=bce-auth-v1%2FALTAKsXn1egl7w69bHDIfE3SOD%2F2023-12-27T05%3A16%3A40Z%2F2592000%2Fhost%2Fb48b118b7c6360143a7b8096bfa2353956ba918513dfcf432a5b040b1dbf0b63",
                "similarity": "84.69%",
                "totalDiff": 30,
                "compareStatus": "success",
                "compareMessage": "",
                "reportStatus": "success",
                "reportMessage": "",
                "reportOssURL": "http://ai-textmind.bj.bcebos.com/data/mnt/text_flow/paas_textdiff/task-affq81x73t23pqmk/textdiff_report_op/subtask-6625h1civfetzdau/subtask-6625h1civfetzdau.pdf?authorization=bce-auth-v1%2FALTAKsXn1egl7w69bHDIfE3SOD%2F2023-12-27T05%3A17%3A00Z%2F2592000%2Fhost%2Fe847aa97b8bc2387f8b635a68f2b727d3705e176fc13abfc02deed9e558168a7",
                "reportExcelOssURL": "http://ai-textmind.bj.bcebos.com/data/mnt/text_flow/paas_textdiff/task-affq81x73t23pqmk/textdiff_report_op/subtask-6625h1civfetzdau/subtask-6625h1civfetzdau.xlsx?authorization=bce-auth-v1%2FALTAKsXn1egl7w69bHDIfE3SOD%2F2023-12-27T05%3A17%3A00Z%2F2592000%2Fhost%2F3f1d0c7a5b2e48d9a6c07be91d4a5c8e2b7f6013cd94a2f5e8b17c60d3a94f21",
                "createdAt": "2023-12-27T05:16:14Z",
                "finishedAt": "2023-12-27T05:17:00Z",
                "diffItemList": [
                    {
                        "id": "item-uy6tbygc11uqrc3x",
                        "basePageNum": 1,
                        "baseDiffType": "replace",
                        "baseBoxArea": [
                            138,
                            210,
                            13,
                            14
                        ],
                        "baseDiffBoxes": "[[138,210,13,14]]",
                        "baseDiffContent": "西",
                        "baseDiffContext": "地址:天津市河西区幸福街**号",
                        "baseDiffContentType": [],
                        "comparePageNum": 1,
                        "compareDiffType": "replace",
                        "compareBoxArea": [
                            138,
                            210,
                            13,
                            14
                        ],
                        "compareDiffBoxes": "[[138,210,13,14]]",
                        "compareDiffContent": "东",
                        "compareDiffContext": "地址:天津市河东区幸福街**号",
                        "compareDiffContentType": [],
                        "ignored": true,
                        "ignoreReason": "地址表述差异,人工确认可忽略"
                    },
                    {
                        "id": "item-nhhkrhhj55qduap0",
                        "basePageNum": 10,
                        "baseDiffType": "replace",
                        "baseBoxArea": [
                            327,
                            490,
                            11,
                            12
                        ],
                        "baseDiffBoxes": "[[327,490,11,12]]",
                        "baseDiffContent": "百",
                        "baseDiffContext": "乙方:北京百度网讯科技有限公司",
                        "baseDiffContentType": [],
                        "comparePageNum": 10,
                        "compareDiffType": "replace",
                        "compareBoxArea": [
                            327,
                            333,
                            11,
                            12
                        ],
                        "compareDiffBoxes": "[[327,333,11,12]]",
                        "compareDiffContent": "千",
                        "compareDiffContext": "乙方:北京千度网讯科技有限公司",
                        "compareDiffContentType": [],
                        "ignored": false,
                        "ignoreReason": ""
                    }
                ]
            },
            {
                "subtaskId": "subtask-p3wq8mzn5tvc1jde",
                "baseDocId": "doc-egdc1iziztwmech2",
                "baseDocName": "软硬件采购合同标准版.docx",
                "baseDocOssURL": "http://ai-textmind.bj.bcebos.com/data/mnt/text_flow/parser/doc-egdc1iziztwmech2/pdf/doc-egdc1iziztwmech2.pdf?authorization=...",
                "compareDocId": "doc-mk29sfd7q1zxbv63",
                "compareDocName": "软硬件采购合同B.docx",
                "compareDocOssURL": "http://ai-textmind.bj.bcebos.com/data/mnt/text_flow/parser/doc-mk29sfd7q1zxbv63/pdf/doc-mk29sfd7q1zxbv63.pdf?authorization=...",
                "similarity": "91.23%",
                "totalDiff": 12,
                "compareStatus": "success",
                "compareMessage": "",
                "reportStatus": "success",
                "reportMessage": "",
                "reportOssURL": "http://ai-textmind.bj.bcebos.com/data/mnt/text_flow/paas_textdiff/task-affq81x73t23pqmk/textdiff_report_op/subtask-p3wq8mzn5tvc1jde/subtask-p3wq8mzn5tvc1jde.pdf?authorization=...",
                "reportExcelOssURL": "http://ai-textmind.bj.bcebos.com/data/mnt/text_flow/paas_textdiff/task-affq81x73t23pqmk/textdiff_report_op/subtask-p3wq8mzn5tvc1jde/subtask-p3wq8mzn5tvc1jde.xlsx?authorization=...",
                "createdAt": "2023-12-27T05:16:14Z",
                "finishedAt": "2023-12-27T05:17:26Z",
                "diffItemList": [
                    {
                        "id": "item-c8vq1ktz09hbxr4m",
                        "basePageNum": 3,
                        "baseDiffType": "delete",
                        "baseBoxArea": [
                            96,
                            318,
                            42,
                            13
                        ],
                        "baseDiffBoxes": "[[96,318,42,13]]",
                        "baseDiffContent": "质保期",
                        "baseDiffContext": "质保期为验收合格后12个月",
                        "baseDiffContentType": [],
                        "comparePageNum": 3,
                        "compareDiffType": "delete",
                        "compareBoxArea": [],
                        "compareDiffBoxes": "[]",
                        "compareDiffContent": "",
                        "compareDiffContext": "",
                        "compareDiffContentType": [],
                        "ignored": false,
                        "ignoreReason": ""
                    }
                ]
            }
        ],
        "status": "success",
        "param": {
            "specificType": "specificPageNumber",
            "specificPageNumber": {
                "baseStart": 1,
                "baseEnd": 10,
                "compareStart": 1,
                "compareEnd": 10
            },
            "sealRecognition": false,
            "fullWidthHalfWidthRecognition": false,
            "fontFamilyRecognition": false,
            "fontSizeRecognition": false,
            "handWritingRecognition": false,
            "coverRecognition": true,
            "catalogRecognition": true,
            "headerFooterRecognition": true,
            "appendixRecognition": true
        },
        "duration": "72秒"
    }
}

说明:1V1 比对时 subTaskList 仅一个元素,结构与上例中单个子任务完全一致;轮询期间未完成的子任务,其 similarity、reportOssURL、reportExcelOssURL、diffItemList 不返回,此时任务 status 为 pending 或 processing。全文比对(未传 specificType)时,param 中 specificType 为空且不返回 specificPageNumber / specificPageContent。

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

{
    "error_code": 0,
    "error_msg": "",
    "log_id": "262791511146655744",
    "result": {
        "taskId": "task-x41hqi5se8bkec4u",
        "subTaskList": [
            {
                "baseDocId": "doc-9ek1pqekgqsz2gpk",
                "baseDocName": "软硬件采购合同标准版.docx",
                "baseDocOssURL": "",
                "compareDocId": "doc-qqwuga6st7hzshq0",
                "compareDocName": "软硬件采购合同A.docx",
                "compareDocOssURL": "",
                "similarity": "",
                "totalDiff": 0,
                "compareStatus": "failed",
                "reportStatus": "failed",
                "createdAt": "2023-12-27T03:38:16Z",
                "finishedAt": "2023-12-27T03:38:16Z",
                "reportOssURL": ""
            }
        ],
        "status": "failed",
        "errorType": "quotaError",
        "param": {
            "sealRecognition": false,
            "fullWidthHalfWidthRecognition": false,
            "fontFamilyRecognition": false,
            "fontSizeRecognition": false,
            "handWritingRecognition": false
        },
        "duration": ""
    }
}

保存忽略项接口

说明: 该接口用于保存某个子任务的差异项忽略结果。服务端以本次提交的列表为全量忽略结果整体覆盖落库——列表内的差异项置为已忽略,未出现在列表中的差异项一律置为未忽略(即撤销忽略)。 忽略状态落库后,服务端异步重新生成 PDF 与 Excel 报告,本接口不等待报告生成完成即返回。重生成期间子任务 reportStatus 为 processing,此时 reportOssURL / reportExcelOssURL 为空;需通过获取结果接口轮询至 reportStatus 为 success 后,重新读取这两个字段获取新的报告下载链接(旧链接不再更新,请勿复用)。 同一子任务的报告重生成串行执行,reportStatus 为 processing 时本接口会拒绝新的保存请求;重生成失败仅将 reportStatus 置为 failed,不改变 compareStatus 与任务终态,已保存的忽略状态不变化。差异项总数 totalDiff 不因忽略而减少。

请求说明

请求示例

HTTP 方法:POST

请求URL: https://aip.baidubce.com/rest/2.0/brain/online/v1/textdiff/save_ignores

URL参数:

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

Header如下:

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

Body中放置请求参数(JSON 格式),参数详情如下:

请求参数

参数 是否必选 类型 说明
taskId 是 string 发送提交请求时返回的taskId
subtaskId 是 string 子任务ID,取自获取结果接口返回的 subTaskList 中的 subtaskId。忽略项按子任务粒度保存,1VN 多文档比对时需逐个子任务分别保存
diffItemIdList 是 string 已忽略差异项的ID列表(JSON 数组字符串,如 ["item-1","item-2"]),元素取值为获取结果接口返回的 diffItemList 中的 id。需提交该子任务的全量已忽略ID,不可只提交本次新增忽略的部分;全部撤销忽略时传 "[]"。列表中包含不属于该子任务的差异项ID时返回错误

请求代码示例

提示:使用示例代码前,请记得替换其中的示例Token、taskId、subtaskId、差异项ID。

import json
import requests

'''
文档比对-保存忽略项
'''

request_host = "https://aip.baidubce.com/rest/2.0/brain/online/v1/textdiff/save_ignores"
# 需提交该子任务的全量已忽略差异项ID,全部撤销忽略时传 "[]"
body = {
    "taskId": "[调用提交请求接口获取的taskId]",
    "subtaskId": "[调用获取结果接口获取的subtaskId]",
    "diffItemIdList": json.dumps([
        "item-uy6tbygc11uqrc3x",
        "item-nhhkrhhj55qduap0"
    ]),
}

access_token = '[调用鉴权接口获取的token]'
request_url = f"{request_host}?access_token={access_token}"
response = requests.post(request_url, data=body)
if response:
    print(response.json())

返回说明

返回参数

字段 类型 说明
log_id uint64 唯一的log id,用于问题定位
error_code int 错误码,0 表示保存成功
error_msg string 错误描述信息,成功时为空字符串
result null 本接口无返回数据,调用方以 error_code 为 0 判断保存是否成功

返回示例

成功返回示例:

{
    "error_code": 0,
    "error_msg": "",
    "log_id": "262826631337504773",
    "result": null
}

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

{
    "error_code": 282003,
    "error_msg": "missing parameters",
    "log_id": "262826631337504770"
}

前端SDK渲染

辅助用户在网页中便捷地调用文档比对服务,实现与当前智能文档分析平台-文档比对在线工具一致的前端渲染和交互界面。

使用说明

示例URL: https://textmind-sdk.bce.baidu.com/textmind/sdk/textdiff/{taskId}?access_token={access_token}&subtaskId={subtaskId}

URL参数:

参数 值
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取”
taskId 发送提交请求时返回的taskId
subtaskId 子任务ID,1VN 多文档比对时用于指定渲染哪一组比对结果;1V1 时可省略

iframe引入方式

提示一:使用示例代码前,请记得替换其中的示例Token、taskId。

<iframe
    src="https://textmind-sdk.bce.baidu.com/textmind/sdk/textdiff/{taskId}?access_token={access_token}&subtaskId={subtaskId}"
/>
上一篇
文档格式转换
下一篇
文档抽取