policy-compare · 主干 2ebbc55 · #2、#5 已合入

保单比对规则手册

展示规则更新:文字未改的纯重复次数项不再占用主变化卡,统一列入独立数量摘要;真实文字变化、位置移动及未决内容继续保留。样本原始记录及其历史版本依据如下,当前计数与呈现按本页 2.5。

新旧两版保单放进来以后,工具对哪些改动出卡、把改动挂到哪条记录上、卡片上写什么,以及什么时候需要你自己再看一眼。只收影响业务判断的规则;例子都是工具在主干版本上的实际输出。

依据主干 2ebbc55(PR #9、#11、#12 已合入)。界面把旧版叫“基准”,新版叫“待审”。例子分三种:实测 是构造输入、直接交给比较核心跑出来的;续保样本 取自两对续保样本的实际比较结果;独立试用 PDF 取自仓库里的 17 对合成试用 PDF。

和上一版页面相比

  • 不再判断重要性。卡片上没有“重要变化、需要复核、期间顺延、形式变化”了,排序只按原文位置;每张卡写变化方式和对应依据,能证明时再加一个事实标签。 看规则
  • 表格行只认身份列。名称、行号、型号不再当身份。没有身份列的表,改了内容的行拆成两张“未找到对应”的卡。 看规则
  • 文字未改、只有重复次数变化时,单独列入数量摘要。航空样本有 8 项、商务航空有 9 项纯次数信息,不再各占一张主变化卡;次数与页数分别保留,不据此推断原因。 看规则
  • #2 要求的三处修复已经落地。只改一页的页眉会出卡(2.4);页码行里的金额变化不再算页码(4.2);列错开的两条记录不再被当成同一条(3.4)。 看规则
  • “删除/新增”改叫“待审侧/基准侧未找到对应”。只说明这段文字只在一边找到,不断定记录退出或加入。原始比较记录数(PDF.js,包含纯次数项):航空 99 → 111,商务航空 89 → 103;当前主清单与数量摘要分别计数。 看规则
文字变化1按重复行对应2
仅分页表达(Page n)中的数字变化3
页面附属4
Page 1 of 175
Page 1 of 18
这段文字出现次数:17 次 → 18 次;文档页数:18 页 → 19 页;逐处来源见出现位置6
18 处出现位置,可逐处跳转7

续保样本 · 商务航空:每页页眉里的 Page 1 of 17 → Page 1 of 18

  1. 变化方式文字变化;位置移动(文字未变 / 文字也有变化);基准侧未找到对应(只在新版找到);待审侧未找到对应(只在旧版找到)。
  2. 对应依据两边凭什么被当成同一处:按字段身份、按表格行身份、按相同原文、按重复行、按相似文字等;拿不准时写“对应未确定”;只有一边的卡不写。
  3. 事实标签只有四种,能从文字本身证明时才出现(第 4 节)。大多数卡没有标签。
  4. 标题记录身份或字段,如 HPX 0624、15256、policy_period;页眉页脚写“页面附属”;认不出时写“条款文字”。
  5. 旧(基准)、新(待审)原文红绿高亮是逐词比较出的改动。
  6. 说明重复行的出现次数和页数、组内哪些页仍是旧文字、为什么未确定。
  7. 出现位置重复行的每一处都能单独跳转核对。
1

一张卡是怎么来的

以航空样本里承保人 HPX 0624 的份额从 12.5% 降到 10.0% 为例。

  1. 1

    切出一行

    旧版第 8 页这一行有 4 段文字,在同一水平线上、彼此隔得较远,于是合成一个“表格行”。

    HPX 0624HX-AV-221012.5%03/10/2024
  2. 2

    找身份

    表头是 Insurer | Reference | Written Line | Stamp Date。只有表头点名身份的列才算:Insurer(承保人)算,参考号、份额、日期都不算。

    HPX 0624HX-AV-221012.5%03/10/2024
  3. 3

    配对

    新版同一张表里,Insurer 列写着 HPX 0624 的也只有一行,于是认定是同一条记录。参考号改成 HX-AV-2587,不影响配对。

  4. 4

    逐词比较,出卡

    卡片写明变化方式和对应依据,标题是这一行的身份。卡片不评价这处改动重不重要。

    文字变化按表格行身份对应
    HPX 0624
    HPX 0624 HX-AV-2210 12.5% 03/10/2024
    HPX 0624 HX-AV-2587 10.0% 02/10/2025
    基准 P8 → 待审 P8

任何一步拿不准,比如身份值在表里出现两次、两个身份列指向不同的行,就不配对:要么拆成两张“未找到对应”的卡,要么整组标为“对应未确定”(第 3 节)。

2

什么会出卡、出几张

2.1

原文差一个字符就会出卡:空格、全角半角、大小写、引号样式都算。只差空白的卡加一个“仅空白字符变化”标签;其余的卡和改金额的卡外观一样,不会被归为“形式变化”。

实测多打了一个空格
基准(旧)
Insurers pay claims promptly
待审(新)
Insurers pay claims promptly
文字变化按相似文字对应
仅空白字符变化
条款文字
Insurers ␣pay claims promptly
Insurers pay claims promptly
基准 P1 → 待审 P1
本次处理结束 · 1 张卡
实测全角数字改成半角:没有任何标签
基准(旧)
Deductible USD 1,000 each claim
待审(新)
Deductible USD 1,000 each claim
文字变化按相似文字对应
条款文字
Deductible USD 1,000 each claim
Deductible USD 1,000 each claim
基准 P1 → 待审 P1
本次处理结束 · 1 张卡
续保样本 · 商务航空样本只改大小写;弯引号、长破折号改成直引号和短横线
文字变化按相似文字对应
条款文字
Isle Of Man
Isle of Man
基准 P11 → 待审 P11
文字变化按相似文字对应
条款文字
…al Liability Endorsement reference to “Cargo” amended to “Cargo/mail” – Deductible Nil,
…al Liability Endorsement reference to "Cargo" amended to "Cargo/mail" - Deductible Nil,
基准 P5 → 待审 P5
2.2

条款原样挪了位置,出一张“位置移动,文字未变”的卡;挪的同时改了字,写“位置移动,文字也有变化”,并标出改动。只是因为分页跑到了别的页,不算移动。

续保样本 · 航空样本理赔条款从第 4 页挪到第 9 页,一字未改
位置移动,文字未变按相同原文对应
条款文字
In the event of a loss hereunder Underwriters agree to the automatic appointment of loss adjuster to be agreed by Slip Leader only.
In the event of a loss hereunder Underwriters agree to the automatic appointment of loss adjuster to be agreed by Slip Leader only.
基准 P4 → 待审 P9
续保样本 · 航空样本50/50 条款从第 5 页挪到第 6 页,settle 改成 pay
位置移动,文字也有变化按相似文字对应
条款文字
…of this Policy, Underwriters agree to settle 50% of the agreed claim under each Se…
…of this Policy, Underwriters agree to pay 50% of the agreed claim under each Se…
基准 P5 → 待审 P6
2.3

每页重复的页眉、页脚、页码、水印先按各自原文归组:真实文字改动保留变化卡,只有出现次数变化时见 2.5 的数量摘要,全部来源均保留。归组条件:在页面最上 16% 或最下 12%,并在至少 3 页、且四成以上页面的同一位置出现。

续保样本 · 航空样本每页页眉里的合同号(UMR)改了年份
文字变化按重复行对应
页面附属
UMR: B4417K240093/ALD3392AVN24117
UMR: B4417K250093/ALD3392AVN25129
这段文字出现次数:20 次 → 19 次;文档页数:20 页 → 19 页;逐处来源见出现位置
20 处出现位置,可逐处跳转
续保样本 · 商务航空样本只有新版每页印着 Draft:一张“基准侧未找到对应”,38 处出现位置
基准侧未找到对应
页面附属
(无)
Draft
这段文字出现次数:0 次 → 38 次;文档页数:18 页 → 19 页;逐处来源见出现位置
38 处出现位置,可逐处跳转
2.4

同一行页眉只在某一页改了,也会出卡:卡上写明新文字在哪一页、哪些页仍是旧文字。

实测4 页的页眉限额,只有第 2 页改成 2,000,000
基准(旧)
Hull limit any one aircraft USD 1,000,000
P1
Hull limit any one aircraft USD 1,000,000
P2
Hull limit any one aircraft USD 1,000,000
P3
Hull limit any one aircraft USD 1,000,000
P4
待审(新)
Hull limit any one aircraft USD 1,000,000
P1
Hull limit any one aircraft USD 2,000,000
P2
Hull limit any one aircraft USD 1,000,000
P3
Hull limit any one aircraft USD 1,000,000
P4
文字变化按重复行对应
页面附属
Hull limit any one aircraft USD 1,000,000
Hull limit any one aircraft USD 2,000,000
这段文字出现次数:4 次 → 1 次;文档页数:4 页 → 4 页;本版组内文字不一致:待审版第 2 页为新文字;待审版第 1、3、4 页仍为基准版文字“Hull limit any one aircraft USD 1,000,000”;逐处来源见出现位置
8 处出现位置,其中 3 处只作上下文、不计次数,可逐处跳转
本次处理结束 · 1 张卡

#2 修复前(PR #9 head 2ff585b)这里一张卡都没有。只改第 3 页合同号(UMR)的数字,现在同样会出卡(已实测)。

2.5

两版重复原文相同、只有出现次数变化时,不生成主变化卡,统一列入“重复文字次数变化”摘要。摘要显示项目数,详情默认收起;每项保留原文、两版次数、页数、其他写法及全部来源。归属未确定的内容仍保留在主审阅范围,不因文字相同就隐藏。

续保样本 · 商务航空数量摘要中的 3 项示例,均无文字改写
原文出现次数展示
Calloway17 次 → 18 次数量摘要
Calloway Specialty17 次 → 18 次数量摘要
73117 次 → 18 次数量摘要

商务航空保留 103 条原始比较记录,在界面分为 94 张主变化卡和 9 项纯次数信息。需要时可展开全部来源,不把排序后剩下的一处认作新增,也不凭页数差消除次数事实。Page 1 of 17 → Page 1 of 18 是实际文字变化,仍在主清单定位改动的数字。合同号修改、新出现的 Draft 也仍是主变化卡。

2.6

一段文字改得太多,就不再配成一张卡,而是旧段一张“待审侧未找到对应”、新段一张“基准侧未找到对应”。同一标题下,两段要有约六成的词按顺序相同;不在同一标题下,要 95% 相同且至少 8 个词。

表格行不走这条:表格行从不按相似度配对(第 3 节)。

实测只改天数:配成一张卡
基准(旧)
The Insured shall notify Underwriters of any occurrence within 30 days.
待审(新)
The Insured shall notify Underwriters of any occurrence within 14 days.
文字变化按相似文字对应
条款文字
…Underwriters of any occurrence within 30 days.
…Underwriters of any occurrence within 14 days.
基准 P1 → 待审 P1
本次处理结束 · 1 张卡
实测整句重写:两张单侧卡
基准(旧)
The Insured shall notify Underwriters of any occurrence within 30 days.
待审(新)
Written notice of each claim must reach the Contract Leader promptly.
基准侧未找到对应
条款文字
(无)
Written notice of each claim must reach the Contract Leader promptly.
待审 P1
待审侧未找到对应
条款文字
The Insured shall notify Underwriters of any occurrence within 30 days.
(无)
基准 P1
本次处理结束 · 2 张卡
3

改动挂到哪条记录上

这一节决定一张卡“说的是谁”。核心是:先认身份,再比内容;身份认不出就公开,不猜。

3.1

字段按“谁的哪个字段”认。只认 11 个大写标签:INSURED:、REINSURED:、ADDRESS:、PERIOD:、SUM INSURED:、SUMS INSURED:、DEDUCTIBLE:、RATE:、TOLERANCE:、ENDORSEMENT:、REPEATED HEADER LIMIT:。

实测被保险人和再保险人的地址对调:各出一张卡,挂在各自名下
基准(旧)
INSURED: Alpha Aviation Ltd
ADDRESS: 1 Old Road
REINSURED: Beta Re SE
ADDRESS: 9 New Road
待审(新)
INSURED: Alpha Aviation Ltd
ADDRESS: 9 New Road
REINSURED: Beta Re SE
ADDRESS: 1 Old Road
文字变化按字段身份对应
original_insured / address
1 Old Road
9 New Road
基准 P1 → 待审 P1
文字变化按字段身份对应
reinsured / address
9 New Road
1 Old Road
基准 P1 → 待审 P1
本次处理结束 · 2 张卡
续保样本 · 商务航空样本真实样本写的是 Address:(只有首字母大写),不在标签表里,只按普通文字比较
文字变化按相似文字对应
条款文字
Address: PO Box 412 3-5 Wren Street Douglas IM99 4QX Isle Of Man
Address: PO Box 412 18 Athol Street Douglas IM1 1JA Isle Of Man
基准 P2 → 待审 P2
3.2

表格行只按“身份列”认。身份列是表头以 MSN、ESN、S/N、Serial、Registration、Insurer、Reinsurer 结尾的列(后面可以带 No.、Number、#),或者单元格自己以这些词开头(如 MSN 1)。身份值要在这张表的两版里都只出现一次,两行才连得上。

名称、行号(No.)、型号、状态、金额、日期,再唯一也不算身份。表头写 Insurer 的列例外,它点名的就是承保人,所以第 1 节的 HPX 0624 能当身份。

实测有 MSN 列的表,两架飞机的约定价值对调(表头标色的是身份列)
基准(旧)
MSNOperatorAgreed Value
1001Alpha AirUSD 5,000
1002Beta AirUSD 6,000
待审(新)
MSNOperatorAgreed Value
1001Alpha AirUSD 6,000
1002Beta AirUSD 5,000
文字变化按表格行身份对应
1001
1001 Alpha Air USD 5,000
1001 Alpha Air USD 6,000
基准 P1 → 待审 P1
文字变化按表格行身份对应
1002
1002 Beta Air USD 6,000
1002 Beta Air USD 5,000
基准 P1 → 待审 P1
本次处理结束 · 2 张卡
续保样本 · 航空样本机队重估挂在 MSN 15256 名下;发动机存放地变化挂在 ESN 1949020 名下
文字变化按表格行身份对应
15256
Bombardier CRJ900 15256 CC-AXW 2013 90 16,900,000 Andes Pacific Airlines
Bombardier CRJ900 15256 CC-AXW 2013 90 15,640,000 Andes Pacific Airlines
基准 P11 → 待审 P11
文字变化按表格行身份对应
1949020
CF34-8C5 1949020 Tallinn, Estonia – Baltic Aero Technics 3,620,000 Serviceable
CF34-8C5 1949020 Singapore – Changi Engine Centre 3,620,000 Serviceable
基准 P14 → 待审 P14
3.3

表格行从不按文字相似度配对。没有身份列的表,只有一字不差的行能配上;改了任何一个字的行,旧行一张“待审侧未找到对应”、新行一张“基准侧未找到对应”。

续保样本 · 商务航空样本机库表的表头是 Base | Hangar Operator | Aircraft Normally Based | Hangar Type,没有身份列。迪拜机库换了运营方
待审侧未找到对应
条款文字
Dubai (OMDW) Al Maktoum Executive Hangars M-CHLS, 9H-PRT Shared
(无)
基准 P15
基准侧未找到对应
条款文字
(无)
Dubai (OMDW) Desert Falcon Hangar Company M-CHLS, 9H-PRT Shared
待审 P15

上一版页面依据的代码按地名把这两行配成一张修改卡。

实测没有身份列的表里,同样是两家的金额对调:4 张卡,对比 3.2 的 2 张
基准(旧)
OperatorRefAgreed Value
Alpha AirA-1USD 5,000
Beta AirB-2USD 6,000
待审(新)
OperatorRefAgreed Value
Alpha AirA-1USD 6,000
Beta AirB-2USD 5,000
待审侧未找到对应
条款文字
Alpha Air A-1 USD 5,000
(无)
基准 P1
基准侧未找到对应
条款文字
(无)
Alpha Air A-1 USD 6,000
待审 P1
待审侧未找到对应
条款文字
Beta Air B-2 USD 6,000
(无)
基准 P1
基准侧未找到对应
条款文字
(无)
Beta Air B-2 USD 5,000
待审 P1
本次处理结束 · 4 张卡
实测No. 列只是行号:在第 2 行插入 Delta Hangar,后面每行的行号都变了
基准(旧)
No.HangarLimit
1Alpha HangarUSD 100,000
2Beta HangarUSD 200,000
3Gamma HangarUSD 300,000
待审(新)
No.HangarLimit
1Alpha HangarUSD 100,000
2Delta HangarUSD 250,000
3Beta HangarUSD 200,000
4Gamma HangarUSD 300,000
待审侧未找到对应
条款文字
2 Beta Hangar USD 200,000
(无)
基准 P1
基准侧未找到对应
条款文字
(无)
2 Delta Hangar USD 250,000
待审 P1
待审侧未找到对应
条款文字
3 Gamma Hangar USD 300,000
(无)
基准 P1
基准侧未找到对应
条款文字
(无)
3 Beta Hangar USD 200,000
待审 P1
基准侧未找到对应
条款文字
(无)
4 Gamma Hangar USD 300,000
待审 P1
本次处理结束 · 5 张卡
3.4

身份值在表里出现两次,这个值就不拿来配对;两个身份列指向不同的行,或者同一身份列的值对不上,也不配对。前者拆成两张“未找到对应”,后者整组一张“对应未确定”,状态变黄。

续保样本 · 商务航空样本合同方表按 Registration 认身份。M-FNKB 有两行(出租人、担保受托人),改了背书号的那行拆成两张;只出现一次的 M-FNKD 正常配对
待审侧未找到对应
条款文字
M-FNKB Selwyn Aircraft Finance Designated Activity Company Lessor AVN67B
(无)
基准 P15
基准侧未找到对应
条款文字
(无)
M-FNKB Selwyn Aircraft Finance Designated Activity Company Lessor AVN67C
待审 P15
文字变化按表格行身份对应
M-FNKD
M-FNKD Northfield Bank plc Lender / Loss Payee AVN67B
M-FNKD Ostra Export Finance Agency Lender / Loss Payee AVN67B
基准 P15 → 待审 P15
实测MSN 101 原来登记 G-AAAA,新版登记 G-BBBB
基准(旧)
MSNRegistrationShare
101G-AAAA10%
102G-BBBB20%
待审(新)
MSNRegistrationShare
101G-BBBB10%
102G-AAAA20%
文字变化对应未确定
条款文字
101 G-AAAA 10% 102 G-BBBB 20%
101 G-BBBB 10% 102 G-AAAA 20%
无法确定唯一表格行身份
基准 P1 → 待审 P1
本次处理结束 · 有已记录的缺口或未决 · 1 张卡 · 对应未决 1 组
需要核验的范围
  • 表格行的身份证据互相冲突(例如两个身份列指向不同行,或同一身份列的值不同);未自动配对,组内原文变化仍展示
实测列错开:两行只是 Beta Air 相同,MSN 一个是 100、一个是 300
基准(旧)
MSN 10010%Beta Air
待审(新)
MSN 300Beta Air20%
待审侧未找到对应
条款文字
MSN 100 10% Beta Air
(无)
基准 P1
基准侧未找到对应
条款文字
(无)
MSN 300 Beta Air 20%
待审 P1
本次处理结束 · 2 张卡

#2 修复前,这两行被配成一张修改卡,等于断定 MSN 100 改成了 MSN 300。

3.5

一张表的范围是“章节 + 表名 + 表头行”。行只在同一张表里配对,不会被另一张表里同样的身份或原文抢走。表头行的文字一改(年份、列名、加一列),两版就成了两张表,见第 6 节第 1 例。

实测附表 A 的 MSN 1001 改了金额,附表 B 新增了一行旧金额的 MSN 1001
基准(旧)
SCHEDULE A
MSNOperatorAgreed Value
1001Alpha AirUSD 100,000
2002Beta AirUSD 200,000
SCHEDULE B
MSNOperatorAgreed Value
3003Gamma AirUSD 300,000
待审(新)
SCHEDULE A
MSNOperatorAgreed Value
1001Alpha AirUSD 150,000
2002Beta AirUSD 200,000
SCHEDULE B
MSNOperatorAgreed Value
3003Gamma AirUSD 300,000
1001Alpha AirUSD 100,000
文字变化按表格行身份对应
1001
1001 Alpha Air USD 100,000
1001 Alpha Air USD 150,000
基准 P1 → 待审 P1
基准侧未找到对应
条款文字
(无)
1001 Alpha Air USD 100,000
待审 P1
本次处理结束 · 2 张卡

独立试用 P12 同理:表一删掉 MSN 123、表二加了 Registration 123,出两张单侧卡,不跨表认作同一条。

3.6

单元格折成两行时,折下来的那一行跟着本行,不会变成一条新记录。

独立试用 PDF · P09Operator、Cover、Terms 三格都折了行,per annum 改成 per month
基准(旧)
MSNOperatorCoverTerms
1315Alpha Air
Holdings
Hull
and war
USD 1000
per annum
1760Beta AirLiabilityUSD 2000
待审(新)
MSNOperatorCoverTerms
1315Alpha Air
Holdings
Hull
and war
USD 1000
per month
1760Beta AirLiabilityUSD 2000
文字变化按表格行身份对应
1315
…ir Holdings Hull and war USD 1000 per annum
…ir Holdings Hull and war USD 1000 per month
基准 P1 → 待审 P1
本次处理结束 · 1 张卡

边界:每一格都折行,或者整行折到下一页时不在此列,见第 6 节。

3.7

同名字段出现多次(如两个 DEDUCTIBLE:)时,先按所在的大写标题区分;区分不了就整组标为“对应未确定”,不按金额相同去猜。

实测两个免赔额分别在大写标题 HULL、LIABILITY 下,金额互换
基准(旧)
HULL
DEDUCTIBLE: USD 1,000 each and every loss …
LIABILITY
DEDUCTIBLE: USD 2,000 each and every loss …
待审(新)
HULL
DEDUCTIBLE: USD 2,000 each and every loss …
LIABILITY
DEDUCTIBLE: USD 1,000 each and every loss …
文字变化按字段身份对应
HULL / deductible
USD 1,000 each and every loss arising from …
USD 2,000 each and every loss arising from …
基准 P1 → 待审 P1
文字变化按字段身份对应
LIABILITY / deductible
USD 2,000 each and every loss arising from …
USD 1,000 each and every loss arising from …
基准 P1 → 待审 P1
本次处理结束 · 2 张卡
实测同样的互换,但标题不是全大写,认不出归属
基准(旧)
Hull coverage
DEDUCTIBLE: USD 1,000 each and every loss …
Liability coverage
DEDUCTIBLE: USD 2,000 each and every loss …
待审(新)
Hull coverage
DEDUCTIBLE: USD 2,000 each and every loss …
Liability coverage
DEDUCTIBLE: USD 1,000 each and every loss …
文字变化对应未确定
deductible
USD 1,000 each and every loss arising from declared operations USD 2,000 each and every loss arising from …
USD 2,000 each and every loss arising from declared operations USD 1,000 each and every loss arising from …
无法确定同名字段的唯一归属
基准 P1 → 待审 P1
本次处理结束 · 有已记录的缺口或未决 · 1 张卡 · 对应未决 1 组
需要核验的范围
  • 同名字段缺少唯一归属;组内原文变化仍展示,不按金额相同跨位置配对
4

卡片上的四种事实标签

工具不判断一处改动重不重要,也不把卡片分成重要、次要;主清单默认展示内容变化、位置移动和待核对内容,按原文位置排列;纯次数项另列数量摘要,不按重要性丢弃。比较本身能证明的形式事实只有下面四种,满足条件时在卡片上加一个标签。标签只陈述事实,不表示可以少看。

标签什么时候出现不出现的情况例子
仅空白字符变化去掉多余空白后两边文字完全相同;只有一边的纯空白行也算空白的增删让两个词粘连或拆开2.1
仅分页表达(Page n)中的数字变化两边只差 Page n、Page n of N、Page n/N 里的数字,而且这一行是页眉页脚、标题或页面上下边缘的行正文里的同样写法;挨着 %、货币的数字4.2
期间两端日期各顺延一年PERIOD: 字段里恰好两个“01 April 2024”式日期,各加整一年、日月不变,其余文字一字不差序数日期、月份全大写、多出文字、跳年、2 月 29 日4.1
两版都有的标题加续页字样只在一边出现的标题,正好是两版都有的某个标题加上 (CONTINUED) 这类续页字样新出现的其他标题4.3
4.1

期间顺延的条件很窄:只看 PERIOD: 字段,日期要写成“01 April 2024”这种格式,前后两个日期各加整一年,日期以外的文字一字不差。

实测同一个保期字段的六种写法(每种都出一张“文字变化 · 按字段身份对应”的卡,区别只在有没有标签)
PERIOD: 01 April 2024 to 31 March 2025
→ PERIOD: 01 April 2025 to 31 March 2026
期间两端日期各顺延一年满足全部条件
PERIOD: 01 April 2024 to 31 March 2025
→ PERIOD: 01 April 2025 to 31 March 2026 both days inclusive
无标签日期以外多了 both days inclusive
PERIOD: 16th October 2024 to 15th October 2025
→ PERIOD: 16th October 2025 to 15th October 2026
无标签序数日期 16th 不认
PERIOD: 01 APRIL 2024 to 31 MARCH 2025
→ PERIOD: 01 APRIL 2025 to 31 MARCH 2026
无标签月份全大写不认
PERIOD: 01 April 2024 to 31 March 2025
→ PERIOD: 01 April 2026 to 31 March 2027
无标签跳过了一年
PERIOD: 01 March 2023 to 29 February 2024
→ PERIOD: 01 March 2024 to 28 February 2025
无标签2 月 29 日顺延成 2 月 28 日,不算整一年
续保样本 · 航空样本航空样本的保期:没有 PERIOD: 标签,日期是序数 16 th
文字变化按相似文字对应
条款文字
From 16 th October 2024 to 15 th October 2025
From 16 th October 2025 to 15 th October 2026
基准 P1 → 待审 P1
续保样本 · 商务航空样本商务航空样本的保期:同样没有 PERIOD: 标签
文字变化按相似文字对应
条款文字
From 1 June 2024 to 31 May 2025 both days inclusive Standard
From 1 June 2025 to 31 May 2026 both days inclusive Standard
基准 P2 → 待审 P2

两份真实样本的保期卡都没有这个标签,只是普通的文字变化。

4.2

页码标签只认明确写成 Page n、Page n of N、Page n/N 的地方,而且只在页眉页脚、标题和页面上下边缘的行上判断。同一行里别的数字变了,这一行就是普通的文字变化。

独立试用里,正文中的 Reference: Page 3 of 10 → 4 of 10、per page 100USD → 200USD、Adjustment per page 10% → 20%,都只是文字变化,没有标签。

续保样本 · 商务航空样本每页页眉里的 Page 1 of 17 变成 Page 1 of 18(文件多了一页)
文字变化按重复行对应
仅分页表达(Page n)中的数字变化
页面附属
Page 1 of 17
Page 1 of 18
这段文字出现次数:17 次 → 18 次;文档页数:18 页 → 19 页;逐处来源见出现位置
18 处出现位置,可逐处跳转
实测页码和金额在同一行,金额变了
基准(旧)
Page 1 - Hull limit USD 1,000,000
P1
Page 2 - Hull limit USD 1,000,000
P2
Page 3 - Hull limit USD 1,000,000
P3
Page 4 - Hull limit USD 1,000,000
P4
待审(新)
Page 1 - Hull limit USD 2,000,000
P1
Page 2 - Hull limit USD 2,000,000
P2
Page 3 - Hull limit USD 2,000,000
P3
Page 4 - Hull limit USD 2,000,000
P4
文字变化按重复行对应
页面附属
Page 1 - Hull limit USD 1,000,000
Page 1 - Hull limit USD 2,000,000
这段文字出现次数:4 次 → 4 次;文档页数:4 页 → 4 页;逐处来源见出现位置
4 处出现位置,可逐处跳转
本次处理结束 · 1 张卡

#2 修复前,这张卡被当成页码变化,归为“形式变化”。

4.3

只在一边多出来的标题,如果正好是两版都有的某个标题加上续页字样,卡上加“两版都有的标题加续页字样”;其他新出现的标题照常显示为“基准侧未找到对应”。

实测新版第 2 页顶部多了 SCHEDULE OF AIRCRAFT (CONTINUED)
基准(旧)
SCHEDULE OF AIRCRAFT
Aircraft are insured for their agreed values.
(第 2 页)Other wording on the next page.
待审(新)
SCHEDULE OF AIRCRAFT
Aircraft are insured for their agreed values.
(第 2 页)SCHEDULE OF AIRCRAFT (CONTINUED)
Other wording on the next page.
基准侧未找到对应
两版都有的标题加续页字样
条款文字
(无)
SCHEDULE OF AIRCRAFT (CONTINUED)
待审 P2
本次处理结束 · 1 张卡
5

什么时候要自己再核对

状态变黄,要去看“需要核验的范围”

本次处理结束 · 有已记录的缺口或未决

原因有三类:有内容没读到(图片页和扫描页不做文字识别,批注、表单这类对象不比较,个别页面或字符解析失败);有记录、字段的对应拿不准;计算量超过上限。这些地方可能没有卡片,只看变化清单会漏掉。

例:独立试用 E03 两版都是扫描图片,图上的金额 100 改成 2000。结果 0 张卡,状态变黄,列出两条“此页只有图片,正文文字尚未比较”。

“本次处理结束”不等于全对

本次处理结束

它只表示没有记录到覆盖缺口或未决,界面原话是“这不表示不存在未知遗漏”。第 6 节第 6 例把没改的一行标成删除,状态显示的也是“本次处理结束”。

“未找到对应”不等于新增或退出

“基准侧未找到对应”只说明这段文字在旧版里没配上:可能是真的新增,也可能是改得太多、表里没有身份列、身份值重复,或者表头变了。“待审侧未找到对应”同理。要看两边的卡合起来是什么。

“需要核验”的条目只跳到第一处

点一下会高亮整组,但两边各只滚到第一个位置。同一组在别的页上的部分,需要自己翻页找。

内容变化与数量信息分别展示

主清单默认展示全部内容变化、位置移动和待核对内容,不按“重要性”排序。纯次数项单独汇总,摘要始终可见、详情默认收起。下拉框只筛选主清单,隐藏计数不包含数量摘要;全部原文、次数、例外与来源仍保留。

文件大小有上限

每份最多 100 页、30 MiB。超过直接拒绝,不会只比较一部分。

6

直觉以为 vs 实际显示

以下都是主干版本的实际输出。先看左边,想想你会以为工具怎么显示,再看右边。

1续保时表头的年份 Agreed Value 2024 → 2025,同时 Beta Air 的金额 6,000 → 6,500

实测
基准(旧)
MSNOperatorAgreed Value 2024
1001Alpha AirUSD 5,000
1002Beta AirUSD 6,000
1003Gamma AirUSD 7,000
待审(新)
MSNOperatorAgreed Value 2025
1001Alpha AirUSD 5,000
1002Beta AirUSD 6,500
1003Gamma AirUSD 7,000
直觉以为一张“文字变化”卡
实际显示
待审侧未找到对应
条款文字
MSN Operator Agreed Value 2024
(无)
基准 P1
基准侧未找到对应
条款文字
(无)
MSN Operator Agreed Value 2025
待审 P1
待审侧未找到对应
条款文字
1002 Beta Air USD 6,000
(无)
基准 P1
基准侧未找到对应
条款文字
(无)
1002 Beta Air USD 6,500
待审 P1
本次处理结束 · 有已记录的缺口或未决 · 4 张卡 · 对应未决 2 组
需要核验的范围
  • 这组重复原文的身份不唯一;其他明确变化继续展示(2 组)

表头行是表的范围的一部分(3.5)。年份一改,两版成了两张表:表头一删一增;改了的行拆成两张;没改的两行在两边各有一份相同原文,判断不了归属,列入需要核验。加一列、改列名、调换列序同理(已实测)。两份续保样本里带身份列的表,表头两版相同,没有遇到这种情况。

2一行原样从附表 A 挪到附表 B

实测
基准(旧)
SCHEDULE A
MSNOperatorAgreed Value
1001Alpha AirUSD 100,000
2002Beta AirUSD 200,000
SCHEDULE B
MSNOperatorAgreed Value
3003Gamma AirUSD 300,000
待审(新)
SCHEDULE A
MSNOperatorAgreed Value
1001Alpha AirUSD 100,000
SCHEDULE B
MSNOperatorAgreed Value
3003Gamma AirUSD 300,000
2002Beta AirUSD 200,000
直觉以为一张“位置移动”卡
实际显示
没有卡片
本次处理结束 · 有已记录的缺口或未决 · 0 张卡 · 对应未决 1 组
需要核验的范围
  • 这组重复原文的身份不唯一;其他明确变化继续展示

表格行不跨表配对。两边各剩一份相同的原文,工具判断不了谁是谁,于是不出卡,只在“需要核验的范围”里列一条。

3机库清单里给 Isle of Man 加了一架飞机 M-FNKE

续保样本 · 商务航空样本
直觉以为一张“文字变化”卡
实际显示
待审侧未找到对应
条款文字
Isle of Man (EGNS) Ronaldsway Aviation Services M-FNKA, M-FNKD, M-PCNG, M-HELI Shared
(无)
基准 P15
基准侧未找到对应
条款文字
(无)
Isle of Man (EGNS) Ronaldsway Aviation Services M-FNKA, M-FNKD, M-FNKE, M-PCNG, M-HELI Shared
待审 P15

机库表没有身份列(3.3),改了一个字的行就拆成旧行、新行两张卡。

4一行表格跨页:后半行折到下一页,文字一个没改

独立试用 PDF · E01
基准(旧)
第 1 页
MSNOperatorCoverTerms
1315Alpha Air HoldingsHull and warUSD 1000 per annum
第 2 页
General conditions remain unchanged.
待审(新)
第 1 页:同一行只排到一半
MSNOperatorCoverTerms
1315Alpha AirHullUSD 1000
第 2 页:剩下的半行折到这里
Holdingsand warper annum
General conditions remain unchanged.
直觉以为没有卡
实际显示
文字变化按表格行身份对应
1315
1315 Alpha Air Holdings Hull and war USD 1000 per annum
1315 Alpha Air Hull USD 1000
基准 P1 → 待审 P1
基准侧未找到对应
条款文字
(无)
Holdings and war per annum
待审 P2
本次处理结束 · 2 张卡

跨页的半行不会接回上一页的行。第 1 页的卡看起来像删掉了 Holdings、and war、per annum,第 2 页又单独多出这三段,要自己把两张卡拼起来看。

5每一格都折成两行的表,只改了 456 的金额和 123 的 per annum

独立试用 PDF · P10
基准(旧)
MSNOperatorTerms
123
(a)
Alpha Air
Holdings
USD 1000
per annum
456Beta AirUSD 2000
789Delta AirUSD 3000
待审(新)
MSNOperatorTerms
123
(a)
Alpha Air
Holdings
USD 1000
per month
456Beta AirUSD 2500
789Delta AirUSD 3000
直觉以为两张“文字变化”卡
实际显示
基准侧未找到对应
条款文字
(无)
123 (a)
待审 P1
待审侧未找到对应对应未确定
条款文字
123 Alpha Air USD 1000
(无)
无法确定唯一表格行身份
基准 P1
待审侧未找到对应对应未确定
条款文字
(a) Holdings per annum
(无)
无法确定唯一表格行身份
基准 P1
基准侧未找到对应
条款文字
(无)
USD 2500
待审 P1
待审侧未找到对应
条款文字
456 Beta Air USD 2000
(无)
基准 P1
基准侧未找到对应
条款文字
(无)
456
待审 P1
基准侧未找到对应
条款文字
(无)
Beta Air
待审 P1
基准侧未找到对应
条款文字
(无)
USD 3000
待审 P1
基准侧未找到对应
条款文字
(无)
789 Alpha Air Holdings
待审 P1
基准侧未找到对应
条款文字
(无)
Delta Air USD 1000 per month
待审 P1
待审侧未找到对应
条款文字
789 Delta Air USD 3000
(无)
基准 P1
本次处理结束 · 有已记录的缺口或未决 · 11 张卡 · 对应未决 2 组
需要核验的范围
  • 这些完整基线可能是多条记录,也可能是每格折行的一条记录;局部结构与身份未确定,原文分别保留(2 组)

每一格都折行时,分不清是两条记录还是一条折行的记录,工具不猜:旧版两行标“对应未确定”,原文分别保留。新版是按列抽取的,行没恢复出来,拼出了 789 Alpha Air Holdings 这样跨行的片段。改动的文字都在,但 456 的新旧金额分在不同的卡上,要自己对。

6按列抽取的表格:改了 123 的 annual 和 456 的金额

独立试用 PDF · P11
基准(旧)
MSNOperatorTermsRate
123
(a)
(b)
Alpha Air
Holdings
Limited
USD 1000
per annum
net
0.10%
net
annual
456Beta AirUSD 20000.20%
789Delta AirUSD 30000.30%
待审(新)
MSNOperatorTermsRate
123
(a)
(b)
Alpha Air
Holdings
Limited
USD 1000
per annum
net
0.10%
net
monthly
456Beta AirUSD 25000.20%
789Delta AirUSD 30000.30%
直觉以为两张卡,各管一行
实际显示
基准侧未找到对应
条款文字
(无)
USD 2500
待审 P1
文字变化按相似文字对应
条款文字
USD 2000 USD 3000 0.10% net annual
USD 3000 0.10% net monthly
基准 P1 → 待审 P1
本次处理结束 · 2 张卡

已证实的缺陷,尚未修复:行没有恢复出来,不同行的文字连成一段,逐词比较时把重复的 USD 对错了位置。第二张卡把没改的 789 行的 USD 标成了删除。

7三行表格换了顺序,内容不变

独立试用 PDF · E02
基准(旧)
MSNOperatorLimitBasis
1315Alpha AirUSD 100annual
1760Beta AirUSD 1000annual
2156Delta AirUSD 400annual
待审(新)
MSNOperatorLimitBasis
2156Delta AirUSD 400annual
1315Alpha AirUSD 100annual
1760Beta AirUSD 1000annual
直觉以为三张“位置移动”卡
实际显示
位置移动,文字未变按相同原文对应
条款文字
2156 Delta Air USD 400 annual
2156 Delta Air USD 400 annual
基准 P1 → 待审 P1
本次处理结束 · 1 张卡

移动是相对其他配上的行判断的:Delta Air 挪到最前,另外两行彼此的先后没变,所以只有它算移动。

8标题 HOWEVER: 改成 However:,紧跟着的 (b) 限额 500,000,000 → 600,000,000

续保样本 · 航空样本
直觉以为两张“文字变化”卡
实际显示
待审侧未找到对应
条款文字
HOWEVER:
(无)
基准 P2
文字变化按相似文字对应
条款文字
… of a Combined Single Limit: Up to USD350,000,000 any one Occurrence
… of a Combined Single Limit: Up to USD400,000,000 any one Occurrence However:
基准 P2 → 待审 P2
待审侧未找到对应
条款文字
(b) USD500,000,000 any one Occurrence
(无)
基准 P2
基准侧未找到对应
条款文字
(无)
(b) USD600,000,000 any one Occurrence
待审 P2

全大写的 HOWEVER: 被当成标题;改成小写后成了普通正文,接进了上一段(上一段那张卡末尾多出 However:)。(b) 条款前后所在的标题不同,要 95% 相同才配,只能整段删、整段增。

9中文条款:“承保”改成“不承保”

实测
基准(旧)
本保险承保战争风险
待审(新)
本保险不承保战争风险
直觉以为一张“文字变化”卡
实际显示
基准侧未找到对应
条款文字
(无)
本保险不承保战争风险
待审 P1
待审侧未找到对应
条款文字
本保险承保战争风险
(无)
基准 P1
本次处理结束 · 2 张卡

连在一起的汉字整句算一个“词”,改一个字,两边就没有相同的词,配不上。

10两列的条款清单里删掉 AVN2000A 这一条

续保样本 · 商务航空样本
直觉以为一张“待审侧未找到对应”
实际显示
文字变化按相似文字对应
条款文字
AVN2000A Date Recognition Exclusion Clause LMA5219 Insurance Act 2015 – Disapplication of Section 11
LMA5219 Insurance Act 2015 - Disapplication of Section 11
基准 P5 → 待审 P5

表格行至少要 3 列。两列的清单被当成段落,相邻条目连在一起比较。

7

验收报告怎么读

#5 交付了两件工具:分诊脚本按作者的变化清单逐事件下结论(用于两对续保样本),评分器按标准答案给 32 对验证样本打分。读报告时,这些说法要分清。

说法意思
正确归属(correct)改动完整落在一张卡上,卡两边对应的就是这条记录或这一段
可归属分散(split_attributable)删、增分在两张卡上,但两张卡各自落在这条记录的原文上
只找到一侧(one_side_only)只找到旧的或新的一边
无法评价(not_evaluable)卡片找到了,但自动检查确认不了归属,例如表格没有评审者声明的身份锚点、改动拆进了邻近的卡;页面附属事件一律记在这里
部分定位 / 未定位分诊脚本只找到一部分或没找到,不等于工具漏了
归属错误(misattributed)改动挂到了别的记录上;一张对的卡外加一张挂错的卡也算
排除(excluded)作者事件本身不参与计分
未解释卡不属于任何作者事件的卡。只是噪声的粗略估计,不是误报率

两对续保样本的分诊结果

样本 · 引擎正确归属可归属分散只找到一侧无法评价部分定位未定位归属错误排除未解释卡
航空 · PDF.js77605230119
航空 · MuPDF75605340120
商务航空 · PDF.js667110020219
商务航空 · MuPDF657110120219

作者事件:航空 94 个、商务航空 88 个;分诊 renewal-triage/40。PDF.js 两行由我在主干上重跑比较和分诊得到,与仓库报告逐字段相同;MuPDF 两行取自仓库报告。用同一版分诊对比上一版页面依据的产品:主干让航空 4 个、商务航空 5 个事件从一张卡变成两张可归属的卡(费率表、机库表、重复注册号等没有可用身份的行),另有航空 1 个、商务航空 3 个事件从无法评价变成可评价;归属错误始终为 0。上一版页面表里的数字用的是更早、更宽松的分诊,不能和这张表直接相减。

评分器与独立试用

四种结论

PASS:证据足够才通过;FAIL:已证实违反要求;NOT_EVALUATED(未评价):要求适用但评分器判断不了;N/A:要求本身不适用。未评价不算通过。

32 对验证样本

两个引擎都是严格评分 28 对通过、4 对未评价(R16、R18、R23、R24,评分器缺少对应的检查能力,已登记为缺口)、0 对失败;逐事件回归 32/32;R16、R24 指定的重复文字位置 11/11 都找到。

独立试用 PDF(17 对)

14 对能力检查里 12 对两个引擎都符合预期;P10 自动归属证据不足;P11 已证实把没改的 789 行标成删除(第 6 节第 6 例)。另 3 对边界观察:E01、E02 证据不足,E03 如实报告覆盖缺口。

还没做的

真实业务文档试用没有执行;业务签收和指定办公设备上的性能测试被阻塞;没有部署。工程验收通过不等于这些已完成。

例子是怎么得到的

标“实测”的例子:用测试辅助函数构造两份文档,直接交给比较核心,输出原样画成卡片(脚本 exp/examples2.ts)。标“续保样本”的例子:两对续保样本(jiehuan/falcon-mini@0eef67d)用 PDF.js 完整比较后,按原文挑出的卡片。标“独立试用 PDF”的例子:仓库里 validation/synthetic-review-20261030 的 PDF 用 PDF.js 比较的结果;左边的表是我照 PDF 抄的示意。卡片上的变化方式、对应依据和标签照搬界面代码的文字。界面的卡片显示整段原文、改动在原文定位时高亮;本页直接把改动标在卡片里。代码版本:主干 2ebbc55,结果格式 policy-compare-result/2;本机 Node 22(项目要求 Node 24),核心测试 373/373 通过。

代码位置(给开发者)
配对顺序:字段、重复行、相同原文、表格行身份、相似文字packages/compare-core/index.ts:754–1550compare
身份列的名单、数值格的定义packages/compare-core/index.ts:152–184VALUE / IDENTITY
表的范围(章节 + 表名 + 表头行)packages/compare-core/index.ts:234–326rowHeadings
表格行身份配对与冲突packages/compare-core/index.ts:386–476rowIdentity
四种事实标签packages/compare-core/index.ts:512–571facts
重复行按变体比较、出现次数packages/compare-core/index.ts:945–1020compareRepeated
相似文字的门槛(六成、95%、8 个词)packages/compare-core/index.ts:1219–1360score / jointAlign
出卡、移动、说明文字、出现位置packages/compare-core/index.ts:1392–1493emit
页码表达 Page npackages/compare-core/structure.ts:33–72PAGE_EXPRESSIONS
页面附属识别(16% / 12%、3 页、四成)packages/compare-core/structure.ts:139–209signatures
标题、页面上下边缘、表格行恢复packages/compare-core/structure.ts:315–723structure
分词(连续汉字算一个词)packages/compare-core/text.ts:54–59tokenize
字段标签表与相似度门槛profiles/aviation.ts:1–36aviationProfile
卡片上的文字(变化方式、对应依据、事实标签)apps/web/main.tsx:19–67kinds / change / bases / facts
状态行与需要核验的范围apps/web/main.tsx:524–586App
评分器tests/evaluation/scorer.ts:1499–2091grade
分诊脚本scripts/renewal-triage.py:1414–1517main