1. 上传比对合同
1.1. 调用地址
https://api.regenai.com/v1/comparison/docs/upload
1.2. 请求方式
POST
1.3. 请求数据类型
multipart/form-data
1.4. 返回类型
JSON
1.5. 请求参数
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
Key | app_key | true | String | c5ed72329fece2fe0010a437505b01cb | 分配的key |
令牌 | token | true | String | 7007bd1257dce8d47489166a7c77a926 | 授权令牌 |
时间戳 | timestamp | true | String | 1522374165 | timestamp 为January 1 1970 00:00:00 GMT 到现在的秒数 |
命名空间 | namespace | false | String | 命名空间 | |
基准文档 | left_file | false | file | 基准文档或图片列表 | |
比对文档 | right_file | false | file | 比对文档或图片列表 | |
基准文档URL | left_file_url | false | String | 仅支持单一文档或图片, 与left_filename配合使用 | |
比对文档URL | right_file_url | false | String | 仅支持单一文档或图片, 与right_filename配合使用 | |
基准文档名 | left_filename | false | String | 与left_file_url配合使用 | |
比对文档名 | right_filename | false | String | 与right_file_url配合使用 | |
比对模式 | result_mode | false | int | 0(false) or 1(true) default: 0 | 优化模式(将所有页转换为图片进行保存用于前端展示)。 |
解析忽略PDF图片 | ignore_images | false | int | 0(不忽略) or 1(忽略) default: 0(false) | 解析参数,解析时是否忽略PDF文档内的图片 |
识别表格 | parse_table | false | int | 0(不识别表格) or 1(识别表格) default: 0 | 解析参数,识别table模式,当识别表格开启后,ignore_images参数无效。 |
自动比对 | auto_compare | false | boolean | false or true default: false | 将以下比对参数作为默认比对参数,并进行自动比对计算相似度。该参数为true时以下比对参数才生效 |
识别语言 | language | false | string | 默认中英,其他语言需授权 auto-自动识别 cht-繁体中文 deu-德语 jpn-日语 kor-韩语 fra-法语 rus-俄语 nld-荷兰语 ita-意大利语 por-葡萄牙语 spa-西班牙语 msa-马来语 ind-印尼语 |
|
忽略空白 | ignore_blank | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略空白字符 |
忽略符号 | ignore_punctuation | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略符号 |
忽略页眉页脚 | ignore_header_footer | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略页眉页脚 |
忽略 equal | hide_equal_ignore | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否隐藏比较类型为相同的文字坐标 |
全半角转换 | to_dbc | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否将全半角转化后进行比较 |
繁简转换 | to_simplified | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否将简繁体转化后进行比较 |
大小写转换 | to_lower_case | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否将字母大小写转化后进行比较 |
符号转换 | convert_symbol | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否将特殊符号转化后进行比较 |
忽略坐标 | hide_coordinate | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否隐藏坐标信息 |
启用修改 | need_update | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否启用 update |
忽略低置信度 | ignore_low_confidence | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略低置信度差异 |
忽略手写 | ignore_handwriting | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略手写文本 |
忽略印章 | ignore_seals | false | int | 0(false) or 1(true) default: 1 | 比对参数,是否忽略印章 |
忽略附录 | ignore_addendum | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略附录 |
显示目录 | need_contents | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否显示基准文档目录结构 |
1.5.1. 请求说明
- 支持的图片类型: jpg, jpeg, png及pdf, doc, docx, xls,xlsx. pdf/word/excel格式文件只支持单个上传,文件最大支持50M. 文档文件建议页数在200页以内
- token 的值计算方式为:
md5($appkey+$timestamp+$appSecret)
token=md5("c5ed72329fece2fe0010a437505b01cb+1522374165+5c9597f3c8245907ea71a89d9d39d08e")=7007bd1257dce8d47489166a7c77a926
- 生成token时,字符串连接中的“+”是必需的,缺少这个符号会无法验证通过验证
1.6. 返回值
1.6.1. 正确返回参数
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
返回状态码 | result | true | int | 0或1 | 请求状态. 1:成功, 0:失败 |
返回状态 | message | true | String | success | |
回复 | response | true | json |
1.6.2. 正确返回样例
- result_mode = 0
{
"result": 1,
"message": "success",
"response": {
"data": {
"id": "99999", // 比对项目 ID 字符串形式
"project_id": 99999, // 比对项目 ID 数字形式
"parsed_count": 0, // 当前已经解析总页数
"left_filename": "word.docx", // 基准文件名
"right_filename": "PDF.pdf", // 比对文件名
"left_page_count": 1, // 基准文档页数
"right_page_count": 1, // 比对文档页数
"created_at": "2022-06-07T08:01:03.889010Z", // 比对创建时间
"status": "pending", // 当前比对状态, 比对状态列表:
// 1. "pending" 等待处理
// 2. "progress" 处理中
// 3. "success" 解析成功(完成)
// 4. "complete" 比对完成
// 5. "failure" 解析失败
// 6. "expired" 任务已过期
}
}
}
- result_mode = 1
{
"result": 1,
"message": "success",
"response": {
"data": {
"id": "99999", // 比对项目 ID 字符串形式
"project_id": 99999, // 比对项目 ID 数字形式
"parsed_count": 0, // 当前已经解析总页数
"left_filename": "word.docx", // 基准文件名
"right_filename": "PDF.pdf", // 比对文件名
"left_page_count": 1, // 基准文档页数
"right_page_count": 1, // 比对文档页数
"created_at": "2022-06-07T08:01:03.889010Z", // 比对创建时间
"status": "pending", // 当前比对状态, 比对状态列表:
// 1. "pending" 等待处理
// 2. "progress" 处理中
// 3. "success" 解析成功(完成)
// 4. "complete" 比对完成
// 5. "failure" 解析失败
// 6. "expired" 任务已过期
"left": { // 优化模式文档信息(下同)
"page_count": 1, // 基准文档页数
"pages": [ // * 数据随解析进度变化
{
"id": "51236", // 页 ID
"index": 0, // 页数 index
"url": "http://oss-host/0/001.png" // 页 URL
}
]
},
"right": {
"page_count": 1,
"pages": [
{
"id": "51237",
"index": 0,
"url": "http://oss-host/1/001.png"
}
]
},
"left_docs": [ // 基准(比对)文件列表 (下同)
{
"id": "666", // 文档ID
"location": "LEFT", // 基准文档 or 比对文档
"name": "word.docx", // 文档名
"type": "WORD", // 文档类型
"page_count": 1, // 文档页数
"pages": [
{
"id": "51236", // 页 ID
"index": 0, // 页数 index
"url": "http://oss-host/0/001.png" // 页 URL
}
]
}
],
"right_docs": [
{
"id": "667",
"location": "RIGHT",
"name": "PDF.pdf",
"type": "PDF",
"page_count": 1,
"pages": [
{
"id": "51237",
"index": 0,
"url": "http://oss-host/1/001.png"
}
]
},
{
"id": "668",
"location": "RIGHT",
"name": "image.png",
"type": "IMAGE",
"page_count": 1,
"pages": [
{
"id": "51238",
"index": 0,
"url": "http://oss-host/1/002.png"
}
]
}
],
"report": { // 优化模式比对报告
"similarity": "0.00" // 比对相似度百分比
}
}
}
}
2. 查询比对状态
2.1. 调用地址
https://api.regenai.com/v1/comparison/docs/query
2.2. 请求方式
GET
2.3. 返回类型
JSON
2.4. 请求参数
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
Key | app_key | true | String | c5ed72329fece2fe0010a437505b01cb | 分配的key |
令牌 | token | true | String | 7007bd1257dce8d47489166a7c77a926 | 授权令牌 |
时间戳 | timestamp | true | String | 1522374165 | timestamp 为January 1 1970 00:00:00 GMT 到现在的秒数 |
命名空间 | namespace | false | String | 命名空间 | |
比对ID | project_id | true | long | 99999 | project id |
比对模式 | result_mode | false | int | 0(false) or 1(true) default: 0 | 优化模式(将所有页转换为图片进行保存用于前端展示)。 |
2.5. 请求说明
用户需要通过使用 上传比对合同 获取的 project_id, 定时调用该API, 实时获取当前已经解析的页数(parsed_count), 该页数表示已经左右文档都已经解析的页数, 即当前最大可比较页数
2.6. 返回值
2.6.1. 正确返回参数 (与上传比对合同返回一致)
3. 查询比对结果
3.1. 调用地址
https://api.regenai.com/v1/comparison/docs/compare_result
3.2. 请求方式
GET
3.3. 返回类型
JSON
3.4. 请求参数
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
Key | app_key | true | String | c5ed72329fece2fe0010a437505b01cb | 分配的key |
令牌 | token | true | String | 7007bd1257dce8d47489166a7c77a926 | 授权令牌 |
时间戳 | timestamp | true | String | 1522374165 | timestamp 为January 1 1970 00:00:00 GMT 到现在的秒数 |
命名空间 | namespace | false | String | 命名空间 | |
比对ID | project_id | true | long | 99999 | project id |
基准文档ID | left_doc_id | false | long | 666 | 指定比对基准文档ID |
比对文档ID | right_doc_id | false | long | 667 | 指定比对比对文档ID |
起始页 | start_idx | false | long | 1 | 比较起始页数 从1开始 |
结束页 | end_idx | false | long | 100 | 比较结尾页数(比较时包含结尾页) 即比较范围是[start_idx, end_idx] |
自动比对 | auto_compare | false | boolean | false or true default: false | 优先使用默认比对参数作为比对参数(若存在默认比对参数以下比对参数失效) |
忽略空白 | ignore_blank | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略空白字符 |
忽略符号 | ignore_punctuation | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略符号 |
忽略页眉页脚 | ignore_header_footer | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略页眉页脚 |
忽略 equal | hide_equal_ignore | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否隐藏比较类型为相同的文字坐标 |
全半角转换 | to_dbc | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否将全半角转化后进行比较 |
繁简转换 | to_simplified | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否将简繁体转化后进行比较 |
大小写转换 | to_lower_case | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否将字母大小写转化后进行比较 |
符号转换 | convert_symbol | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否将特殊符号转化后进行比较 |
忽略坐标 | hide_coordinate | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否隐藏坐标信息 |
启用修改 | need_update | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否启用 update |
忽略低置信度 | ignore_low_confidence | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略低置信度差异 |
忽略手写 | ignore_handwriting | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略手写文本 |
忽略印章 | ignore_seals | false | int | 0(false) or 1(true) default: 1 | 比对参数,是否忽略印章 |
忽略附录 | ignore_addendum | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否忽略附录 |
显示目录 | need_contents | false | int | 0(false) or 1(true) default: 0 | 比对参数,是否显示基准文档目录结构 |
比对模式 | result_mode | false | int | 0(文本模式-文本结构),1(图片模式-文本结构), 2(图片模式-summary结构) | 优化模式(将coordinate整合到对比信息内, 当启用优化模式后 coordinate 将不再返回) |
差异模式 | merge_mode | false | int | 1 | 0(仅显示差异且不分组合并),1(显示相同部分并分组合并差异) default: 1 |
3.5. 请求说明
用户通过 查询比对状态 查询到的最新的解析页数,控制对比页数,并按需使用对比参数。当进行了一次完整比对后,将默认获取所有页进行比较,以获得最佳的比对效果,此时start_idx,end_idx无效。
- 分段对比:将 start_idx 设置为上一次比较的 end_idx + 1 (第一次比较时设置为 1),即可实现分段对比,适用于差异较小且不包含跨页差异的样本。
- 精准对比:将start_idx始终设置为1,每次对比所有已解析页,可以解决跨页问题。(推荐使用)
3.6. 返回值
3.6.1. 正确返回参数
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
返回状态码 | result | true | int | 0或1 | 请求状态. 1:成功, 0:失败 |
返回状态 | message | true | String | success | |
回复 | response | true | json |
3.6.2. 正确返回样例
- result_mode = 0(文本模式-文本结构)
{
"result": 1,
"message": "success",
"response": {
"data": {
"contents": [ // 仅当启用文档目录结构时显示(need_contents = 1)
{
"idx": 0, // 目录所属差异 idx 与 left 和 right 内一致
"level": 1, // 目录层级
"text": "第一条服务概况", // 目录文本
"rows": [
{
"page": 1, // 目录页码
"text": "第一条服务概况", // 目录文本
"region": [172, 339, 341, 369] // 目录坐标
}
]
}
],
"left": [
{
"page": [
{
"type": "paragraph", // paragraph 对比对象
"contents": [ // 对比内容对象列表
{ // 对比内容对象
"status": "equal", // 对比内容状态 可能的值: equal/delete/insert/update
"text": "测试合同", // 对比内容文本
"idx": 0 // 对比内容属于哪一个 diff block, 与 right相对应
}
]
},
{
"type": "table", // table 对比对象
"cells": [ // 单元格列表
{
"startcol": 0,// 单元格起始列
"startrow": 0,// 单元格起始行
"endcol": 1, // 单元格终止列
"endrow": 1, // 单元格终止行
"contents": [ // 对比内容对象列表
{
"status": "equal",
"text": "产品",
"idx": 6
}
]
}
],
"column_num": 4, // table 总列数
"row_num": 2 // table 总行数
}
],
"page_number": 1 // 页码
}
],
"right": [
// 与 left 结构相同
],
"left_coordinate": [
{
"tables": [ // table 坐标对象列表
{
"regions": [210, 466, 1199, 611], // 表格坐标
"cells": [
{
"startcol": 0,// 单元格起始列
"startrow": 0,// 单元格起始行
"endcol": 1, // 单元格终止列
"endrow": 1, // 单元格终止行
"lines": [ // 当前表格文本块列表
{
"words": [ // 文本块 word 列表
{
"region": [218, 468, 258, 504],
"result": "产"
},
{
"region": [258, 468, 289, 504],
"result": "品"
}
],
"regions": [227, 473, 282, 501], // 文本块坐标
"result": "产品" // 文本块文本
}
]
}
],
"column_num": 4, // table 总列数
"row_num": 2 // table 总行数
}
],
"width": 1414, // 页宽
"height": 2000, // 页高
"page_number": 1, // 页码
"type": "IMAGE_PAGE", // 解析类型
"text2": [ // text 坐标对象列表
{
"words": [ // 文本块 word 列表
{
"region": [582, 187, 644, 261],
"result": "测"
},
{
"region": [644, 187, 710, 261],
"result": "试"
},
{
"region": [710, 187, 770, 261],
"result": "合"
},
{
"region": [770, 187, 833, 261],
"result": "同"
}
],
"regions": [576, 187, 836, 261], // 文本块坐标
"result": "测试合同" // 文本块文本
}
],
"text9": [],
}
],
"right_coordinate": [
// 与 left_coordinate 结构相同
]
}
}
}
- result_mode = 1(图片模式-文本结构)
{
"result": 1,
"message": "success",
"response": {
"data": {
"contents": [ // 仅当启用文档目录结构时显示(need_contents = 1)
{
"idx": 0, // 目录所属差异 idx 与 left 和 right 内一致
"level": 1, // 目录层级
"text": "第一条服务概况", // 目录文本
"rows": [
{
"page": 1, // 目录页码
"text": "第一条服务概况", // 目录文本
"region": [172, 339, 341, 369] // 目录坐标
}
]
}
],
"left": [
{
"page": [
{
"type": "paragraph", // paragraph 对比对象
"contents": [ // 对比内容对象列表
{ // 对比内容对象
"status": "equal", // 对比内容状态 可能的值: equal/delete/insert/update
"text": "测试合同", // 对比内容文本
"idx": 0, // 对比内容属于哪一个 diff block, 与 right相对应
"region": [576, 187, 836, 261] // 文本块坐标
}
]
},
{
"type": "table", // table 对比对象
"cells": [ // 单元格列表
{
"startcol": 0,// 单元格起始列
"startrow": 0,// 单元格起始行
"endcol": 1, // 单元格终止列
"endrow": 1, // 单元格终止行
"contents": [ // 对比内容对象列表
{
"status": "equal",
"text": "产品",
"idx": 6,
"region": [227, 473, 282, 501] // 文本块坐标
}
]
}
],
"regions": [210, 466, 1199, 611], // 表格坐标
"column_num": 4, // table 总列数
"row_num": 2 // table 总行数
}
],
"width": 1414, // 页宽
"height": 2000, // 页高
"page_number": 1, // 页码
"orientation": 0, // 页面顺时针旋转角度 可能的值:0/90/180/270
"type": "IMAGE_PAGE" // 解析类型
}
],
"right": [
// 与 left 结构相同
],
}
}
}
- result_mode = 2(图片模式-summary结构) *summary结构 coordinate/left/right都不返回
{
"result": 1,
"message": "success",
"response": {
"data": {
"contents": [ // 仅当启用文档目录结构时显示(need_contents = 1)
{
"idx": 0, // 目录所属差异 idx 与 left 和 right 内一致
"level": 1, // 目录层级
"text": "第一条服务概况", // 目录文本
"rows": [
{
"page": 1, // 目录页码
"text": "第一条服务概况", // 目录文本
"region": [172, 339, 341, 369] // 目录坐标
}
]
}
...
],
"summary": { // 差异总结,
"diffs": [ // 差异列表
{ // 差异左右两部分组成, 包含差异的上下文(既有相同部分又有不同部分)
"left": [ // 差异基准文档上下文
{
"status": "equal", // 差异上下文类型
"region": [90, 210, 150, 222], // 差异上下文坐标
"text": "乙方", // 差异上下文文本
"page_number": 2 // 差异上下文所在页码
},
{
"status": "delete",
"region": [150, 210, 246, 222],
"text": "杭州睿真软件有限公司",
"page_number": 2
}
],
"right": [ // 差异比对文档上下文
// 与 left 结构相同
],
"idx": 1, // 对比内容属于哪一个 diff block, 与 right相对应
"status": "delete" // 差异类型
},
...
],
"left_infos": [
{
"page_number": 1, // 页码
"width": 1414, // 页宽
"height": 2000, // 页高
"orientation": 0, // 页面顺时针旋转角度 可能的值:0/90/180/270
"type": "PDF_PAGE", // 解析类型
"url": "http://oss-host/0/001.png" // 页 URL
},
...
],
"right_infos": [
// 与 left_infos 结构相同
],
"report": { // 优化模式比对报告
"similarity": "99.86", // 比对相似度百分比
"parse_parameters": { // 当前比对任务解析参数
"ignore_images": 1,
"parse_table": 0
},
"compare_parameters": { // 当前比对比对参数
"ignore_blank": 1,
"ignore_punctuation": 1,
"ignore_header_footer": 1,
"hide_equal_ignore": 0,
"to_dbc": 0,
"to_simplified": 0,
"to_lower_case": 0,
"convert_symbol": 1,
"hide_coordinate": 0,
"need_update": 1,
"optimize": 1,
"ignore_low_confidence": 1,
"ignore_handwriting": 0,
"ignore_seals": 1,
"ignore_images": 0,
"ignore_addendum": 0,
"need_contents": 1,
"ignore_characters": ""
}
}
}
}
}
}
4. 生成比对报告
4.1. 调用地址
https://api.regenai.com/v1/comparison/docs/report
4.2. 请求方式
GET
4.3. 返回类型
- Word报告:
application/vnd.openxmlformats-officedocument.wordprocessingml.document
- HTML报告:
application/zip
4.4. 请求参数
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
Key | app_key | true | String | c5ed72329fece2fe0010a437505b01cb | 分配的key |
令牌 | token | true | String | 7007bd1257dce8d47489166a7c77a926 | 授权令牌 |
时间戳 | timestamp | true | String | 1522374165 | timestamp 为January 1 1970 00:00:00 GMT 到现在的秒数 |
比对ID | project_id | true | String | 111 | project id |
命名空间 | namespace | false | String | 命名空间 | |
差异模式 | merge_mode | false | int | 1 | 0(仅显示差异且不分组合并),1(显示相同部分并分组合并差异) default: 1 |
差异忽略项 | ignore_diff_index_list | false | String | 0,1,2 | 使用差异在当前差异列表中的顺序作为index (从0开始),使用半角逗号 "," 拼接。 |
基准文档ID | left_doc_id | false | int | 666 | 与 right_doc_id 配合使用,返回一组比对报告;不同时存在时返回所有比对报告 |
比对文档ID | right_doc_id | false | int | 667 | 与 left_doc_id 配合使用 |
报告类型 | report_type | false | String | 0 | 0(Word报告),1(HTML报告,返回类型为zip) default: 0 |
4.5. 请求说明
用户可以通过当前接口获取比对报告
4.6. 返回值
文件流