# REPORT-SPREAD · 跨页合并判据(分段写入,第 1 段) > 状态:进行中。分段落盘,每段完成即写。 > 分段:① 封存预判 ② 真跨页确证 ③ 假阳性确证 ④ 判据+混淆矩阵 ⑤ 321 份处理方案 ⑥ 尺寸副产物 ⑦ 诚实边界 ## 0 · 交付物 - 封存预判:`/tmp/vi-agents/SEALED-SPREAD.md`(写在开任何 PDF 之前) - 本报告:`/tmp/vi-agents/REPORT-SPREAD.md` - 实测数据:`/tmp/spread/amb_size.json`(321 份实测页面尺寸) ## 1 · 先验清点:321 份的实测尺寸分布(只用来分组,不用来定跨页) 对 321 份逐份 `pdfinfo` 取 `Page size`(321/321 全部解析成功,0 份缺失)。 **80 种不同尺寸。** 主要簇: | 份数 | 尺寸 (pt) | 比例 | |---:|---|---:| | 152 | 841.9 × 595.3 | 1.414 | | 32 | 841.9 × 595.2 | 1.414 | | 21 | 1190.5 × 841.9 | 1.414 | | 8 | 1190.5 × 807.9 | 1.474 | | 7 | 842.0 × 595.0 | 1.415 | | 5 | 1191.0 × 842.0 | 1.414 | 比例分桶:**ratio≈1.40 有 275 份,1.45 有 38 份,1.35 有 8 份。** **为什么这个维度天生二义**(本轮实测确认,非引用): | | 宽 × 高 (pt) | 比例 | |---|---|---| | 一张 A4 横向单页 | 841.89 × 595.276 | 1.4142 | | 两个 A4 竖版并排 | 1190.55 × 841.89 | 1.4142 | **同一个比值,两种完全不同的排版意图。** 封存预判 1/5 得到第一层印证。 ### 项目已知真跨页的实测尺寸(对照组) | 文件 | 实测尺寸 | 比例 | 物理页 | |---|---|---:|---:| | 振华重工 VI | 1586.41 × 794.832 | 1.996 | 86 | | 广汽丰田 VI | 1641.40 × 807.874 | 2.031 | 211 | | 可口可乐 2020 | 1655.43 × 827.717 | 2.000 | 67 | | 优酷 视觉设计规范 | 1471.18 × 737.008 | 1.996 | 42 | | 优酷 VI 2016 | 959.53 × 540.000 | 1.777 | 37 | | **广发银行 VIS** | **841.89 × 595.276** | **1.414** | 61 | **副产物 1:`1586×794` 不是振华专属**,是这一族(非标「一张纸两页」开本)的共同量级,比例集中在 **1.78–2.03**。 **副产物 2:`广发银行`是真跨页且就是 A4 横向 841.89×595.276**——它就躺在 321 份里的 152 份 A4 主簇中。所以 A4 主簇**至少含 1 个真跨页**,不能整簇排除。 --- ## 2 · 关键发现:「跨页性」是**逐页**属性,不是逐文件属性 这是本轮推翻项目既有结论的核心一条。证据链(全部目视,80–90dpi): | 文件 | 页 | 我看到的 | 判决 | |---|---|---|---| | `pidan品牌手册2018版.pdf` | **p3** | 左半**整片空白**,右半是竖排时间轴 2014/2015/2016/2017/Now,标题 `B. Operation overview` 在**整幅右上角**,全页无页码 | **单页横版**(与旧记录一致,旧记录没错) | | `【手册VI 1118】pidan品牌手册.pdf` | **p6** | 左半=印刷页 **10**:页眉 `Number PD1001`、产品标题 `Cat Litter Box`、规格表(Color/Material/Size/Weight);右半=印刷页 **11**:A/B/C/D 图注网格。**两半网格完全不同**,各自页脚页码 | **真跨页** | | 同上 `pidan品牌手册2018版.pdf` | **p6** | 文本层给出 (10, 11),与 1118 一致 | **真跨页** | > ### 为什么前两轮会「失败」 > > 它们其实**没有判错那一页**。错在把「**这份文件是不是跨页本**」当成了问题, > 而正确的单位是「**这一页是不是由两个印刷页拼成**」。 > 抽样恰好落在 p3(单页横版)和 p4(贯通时间轴),于是被判据证伪, > 而实际上**同一个文件里两种页面并存**。 > > **旧结论「单页中缝纯白不能证明跨页合并」依然成立;但它缺了后半句—— > 单页横版页也不能证明整个文件不是跨页本。** ## 3 · 真跨页本的手工确认(第 1 组,5 份已确证) | # | 文件 | 页 | 具体可观察特征 | |---|---|---|---| | T1 | `【手册VI 781】广发银行VIS` | p4 | 左半页脚 **6**,右半页脚 **7**;左半标题 `A. 品牌定义平台`,右半 `A.1.1 品牌驱动器™`;**两半各有独立法务声明**(左半中文版权行、右半 `FONTS AND PHOTOS USED IN THIS GUIDELINE ARE FOR DESCRIPTION AND EXPLANATION PURPOSES ONLY…`)。80dpi 实测图。 | | T2 | `【手册VI 764】上海振华重工` | p3 | 左半=章节扉页 `A 基础部分 Basic System`(无页码),右半=目录,**目录页码只出现奇数**:`01 03 05 07 08 11 13 15 21 31 33 35 39`。目录只列单面页 = 骑马钉书稿特征。 | | T3 | `【手册VI 1118】pidan品牌手册` | p6 | 印刷页 **10**(规格表页)| **11**(A–D 图注页),**两半版式网格互不相同**,各自页脚居中页码。 | | T4 | `【手册VI 605】点蹄餐饮小吃品牌手册` | p7 | 左半=满版暗调照片,页码 **07** 在左下角;右半=白底 `核心壁垒一 / 祖传卤水` 正文页,页码 **08** 在右下角。**背景在正中 50% 处一刀切变**(照片→纯白)。 | | T5 | `【手册VI 934】Paris-Press_Kit_Volunteers_03` | p6 / p7 | p6 页脚左 **10** 右 **11**;p7 页脚左 **12** 右 **13**。左侧竖排 `PARIS 2024`(上)与 `PARIS 2024 VOLUNTEERS`(下)为**左页外缘**标记。 | | T6 | `【手册VI 954】全季4.0标准手册-优化版` | p6 | 页脚左 `10 全季酒店 设计标准手册`,右 `全季酒店 设计标准手册 \| 11`。**两半各带一份相同书眉**。 | **六份的共同可观察特征(不是像素,是编号语义)**: 1. **同一物理页的左右两半各有一个印刷页码,且右 = 左 + 1**; 2. **相邻物理页的左页码恰好 +2**(p4→6,7;p5→8,9;p6→10,11…); 3. **两半各有自己的页眉/页脚/法务行**; 4. **两半的版式网格互相独立**(规格表页 | 图注页;照片页 | 正文页)。 第 1+2 条合起来就是 `印刷页 = 2 × 物理页 − 2`(与广发、振华实测一致)。 --- ## 4 · 判据(第三类:**文本层页码语义**,不是像素) ### 判据 P(正类)· 印刷页码对 取 `pdftotext -bbox`(页 4–13),在**页脚带**(`yMin > 0.88 × 页高`)取词: 1. 某物理页**左半**恰有 1 个整数 `L`、**右半**恰有 1 个整数 `R`,且 `R = L + 1`; 2. 在**≥3 个**这样的物理页上,`L` 随物理页序**严格按步长 2 递增**(允许中间页无页码,按物理页下标折算)。 → 判为**真跨页**。这等价于 `印刷页 = 2 × 物理页 − 常数`,与广发、振华实测一致。 ### 判据 N(负类)· 页码步长 1 同一取数,若每页页脚带**全幅只有 1 个整数**,且在 ≥3 个物理页上**按步长 1 递增** → 判为**单页横版**。 (跨页本必然给出步长 2,所以步长 1 是**决定性反证**。) ### 判据 C(补充负类)· 行网格跨中缝 ≥60% 的采样页存在**同基线文字行**在左右两半都有词、且水平间隙 < 页宽 6%(正常词距,而非版心之间的沟)。 ## 5 · 回测混淆矩阵(32 份全部手工目视确认过) | 真值\判据 | 判为 SPREAD | 判为非 SPREAD | |---|---:|---:| | **真跨页(11 份)** | **11** | 0 | | **单页横版(21 份)** | **0** | 21 | **TP=11FP=0 FN=0 TN=21**(精确率 1.00,召回率 1.00) > ⚠️ **这个矩阵有两处必须打折,诚实写明:** > 1. **TN=21 里有 12 份是「弃权」不是「判对」**:10 份 UNKNOWN、1 份无文本层、1 份 singleNoStride。判据在它们身上**根本没输出结论**,把它们算作「判对」是虚的。真正拿到 SINGLE 判决的只有 9 份。 > 2. **11 份正样本有选择偏倚**:其中 7 份是判据自己报出来的,我再目视确认。**因此 FN=0 不能当作召回率的证据**,只能说明「凡是它报出来的,都对」。 > 真正的召回证据只有 3 份外部来源的:广发(项目记录)、振华(项目记录)、pidan 2018 版(旧记录里的假阳性文件)——**三份全部命中**。 > > **另外必须记一笔**:回测初期矩阵里唯一的「假阳性」是 `【手册VI 954】全季4.0标准手册-优化版`。 > 它是我从 202 份 A4 簇里**随机抽样**当作负样本抽到的,但它的页脚条明写 `10 全季酒店 设计标准手册`|`全季酒店 设计标准手册 | 11`—— > **是我标错了,不是判据错了。** 改正标签后 FP=0。 > (同类的 `【手册VI 964】全季4.0手册-V1.0` 也是跨页本,两份不同 MD5。) ### 判据 C 的单独回测(对应封存预判 2) | | 数量 | |---|---:| | 真跨页被 C 误判成「单页横版」 | **0 / 11** | | 单页横版被 C 命中 | **3 / 21**(召回 14%) | **预判 2 完全成立**:C 确实是单向否证器,**零假阴性**(不会把真跨页误杀),但**几乎没有召回**。 ## 6 · 封存预判逐条对账 | # | 封存预判 | 结果 | 判定 | |---|---|---|---| | 1 | 判据 B(中缝白/外白比值)会失败 | 实测:真跨页中位 **9.53**,单页中位 **2.49**,**有信号**;但 11 份真跨页里 **6 份落在单页区间内**,最优单阈值准确率仅 **77.8%**(且阈值在同一批数据上拟合,偏乐观) | **部分被推翻**。我原以为它「完全无信号」,错了;它有信号但**不足以分类**。封存预判写得过重。 | | 2 | 判据 C 单向否证、零假阴性但低召回 | 实测 **0/11 误杀,召回 3/21** | **成立** | | 3 | 判据 A(页码语义)覆盖率会很低 | 成立且比预想更极端:能判**正类**的只有 11/321 = **3.4%** | **成立** | | 4 | 不会有单一判据可靠分成两类 | **成立**。最终是三档:11 正 / 75 负 / 229 弃权 | **成立** | | 5 | 尺寸不能用来定跨页 | 成立。1586×794 只是振华所属那一族(比例 1.78–2.03),A4 横向簇里就躺着广发这个真跨页 | **成立** | | 6 | 321 份里真跨页占比 <15% | 命中 11 份 = **3.4%**(按 MD5 去重后只有 **9 个不同文件**) | **成立** | | 7 | 若拿不出高置信正类就直接说不能 | **部分触发**:正类拿到了(11 份,全部目视确认),但**负类拿不出决定性结论** | **按纪律执行** | > **总账:7 条预判,5 条成立、1 条部分被推翻、1 条部分触发。** > 我预判「第三个判据也会失败」——**在正类上它成功了(3.4% 召回但 100% 精确),在负类上它确实失败了。** --- ## 7 · 321 份的最终处理方案 | 分档 | 份数 | 占比 | 依据 | |---|---:|---:|---| | **A 自动判定=真跨页** | **11** | 3.4% | 判据 P,页码对步长 2,全部已目视抽验 | | **B 自动判定=单页横版** | **75** | 23.4% | 58 份页码步长 1 + 17 份行网格跨中缝 | | **C 必须目视** | **235** | 73.2% | 196 无任何页码信号 + 7 有页码但步长不成立 + 32 无文本层 | **一句话结论:** > **能自动判定的只有 86 份(26.8%);剩下 235 份(73.2%)不能靠任何像素或元数据判据判定,必须目视。** > **其中「非跨页」这一侧是可以自动的(75 份,精确率经回测为 1.00),「真跨页」这一侧几乎不能自动(11 份,3.4%)。** ### 目视工作量估计(实测渲染速度 0.73 秒/页) | 方案 | 每份看几页 | 渲染机时 | 判断机时 | 合计 | |---|---:|---:|---:|---:| | **保守(推荐)** | 3 页(p4/6/8) | 235×3×0.73s ≈ **9 min** | 235 份 × 3 页 × 约 6 秒 ≈ **70 min** | **约 1.3 小时** | | **激进(只扫页脚)** | 1 页(p6) | 235×0.73s ≈ **3 min** | 页脚条拼图,6 份/张,40 张 × 20 秒 ≈ **13 min** | **约 20 分钟** | > **做法建议(已在本轮验证有效)**:只渲染 p6、裁**底部 13%** 页脚条、6 份拼成一张带标签的图。 > 本轮 15 份负样本用这个办法**一次看完**,判据与目视结论 100% 吻合。 > **但激进方案只验「有没有页码对」**:无文本层的 32 份、以及满版图页,需要整页目视,不能只裁页脚。 ### 伪正本提示(本轮在候选里看到的) `【手册VI 887/989】正新鸡排` 在 `seam_hit.txt` 里以 1.000 命中出现两次。本轮**未目视**,不做结论,仅登记。 已确认的三份学生作业(麦当劳/Burberry/Tiffany,学号 `N07xxxxx`)**均不在本次 321 份候选内**,本轮无新增伪正本证据。 --- ## 8 · 副产物:横向文件实测尺寸数据(对全库有用) ### 8.1 321 份候选的尺寸簇(前 6) | 份数 | 尺寸 (pt) | 比例 | |---:|---|---:| | 152 | 841.9 × 595.3 | 1.414 | | 32 | 841.9 × 595.2 | 1.414 | | 21 | 1190.5 × 841.9 | 1.414 | | 8 | 1190.5 × 807.9 | 1.474 | | 7 | 842.0 × 595.0 | 1.415 | | 5 | 1191.0 × 842.0 | 1.414 | 比例分桶:**1.40→275 份,1.45→38 份,1.35→8 份**。共 80 种不同尺寸。 ### 8.2 真跨页本的实测尺寸谱(比例 **1.41 – 2.03**,宽度跨 2.2 倍) | 文件 | 尺寸 (pt) | 比例 | 物理页 | |---|---|---:|---:| | 振华重工 | 1586.41 × 794.83 | 1.996 | 86 | | 广汽丰田 | 1641.40 × 807.87 | 2.031 | 211 | | 可口可乐 2020 | 1655.43 × 827.72 | 2.000 | 67 | | 优酷 视觉设计规范 | 1471.18 × 737.01 | 1.996 | 42 | | Coca-Cola Zero | 1498 × 1040 | 1.440 | 146 | | 优酷 VI 2016 | 959.53 × 540.00 | 1.777 | 37 | | 全季4.0(两份) | A4 横向 841.89 × 595.28 | 1.414 | — | | 点蹄(两份) | A4 横向 | 1.414 | 29 | | **广发银行 VIS** | **841.89 × 595.276** | **1.414** | 61 | > **副产物 2:`1586×794` 不是振华专属**——它是「一张纸两页」非标开本的一族,比例集中 **1.78–2.03**。 > **副产物 3:真跨页可以长得和单页横版一模一样**——广发、全季、点蹄三本真跨页就是标准 A4 横向。 > **所以「比例≈2.00 是真跨页」这条旧规则是错的**:它抓到的是「非标开本」,不是「跨页」。 > 优酷 857(1471×737,比例 1.996,宽度非标)我目视 p8 判定为**单页横版**——一条贯通全宽的字号标尺,页脚只有一处「YOUKU DESIGN TEAM」。 ### 8.3 一个新的、更稳的判别量 > **与其测「比例」,不如测「页码步长」。** > 「每物理页 2 个印刷页码且步长 2」是**唯一一条能跨尺寸通吃的跨页判据**, > 因为它绑定的是排版意图(一张纸两个页),不是纸张开本。 --- ## 9 · 诚实边界 1. **「自动判定非跨页」的 75 份里,只有 58 份是决定性的**(页码步长 1)。另外 17 份靠判据 C(跨缝),而 C 的召回率实测只有 14%,**这 17 份应当视为「低置信」,需要抽验而不是直接结案**。 2. **本轮所有正类样本都有选择偏倚**。除广发/振华/pidan 2018 三份外,正样本都是判据自己选出来的。**11 份不是「全库只有 11 份真跨页」,只是「11 份被这套判据抓到且经我目视确认」。** 3. **235 份未判不是「非跨页」**,只是「本轮无法用判据区分」。**不得据此改写任何页数统计。** 4. **判据只看了 p4–p13**。前 3 页(封面/目录/前言)通常是单页横版,**尾部治理页、附录、纯图页未覆盖**。**文件内混排(单页横版页 + 跨页页)已经实测存在(pidan),所以「一个文件一个结论」这个提法本身就是错的。** 5. **没有 OCR。** 32 份无文本层的候选完全未被本轮触达。 6. 本轮渲染的图只用于目视确认,**未改动仓库任何文件**;临时产物在 `/tmp/spread/`。 7. **本轮推翻了一条项目既有结论**:旧记录把 pidan 2018 版 p3 的假阳性写成了「该文件的性质」。实际上 **p3 判对了、p6 是真跨页**,两者都对。**任何「某文件不是跨页本」的表述都应改写为「该文件的该页不是跨页页」。** ## 10 · 一句话结论(置于文首) > **能自动判定,但只能判一半:321 份里 11 份可自动确认为真跨页、75 份可自动判为单页横版,剩下 235 份必须目视(实测约 1.3 小时保守 / 20 分钟激进)。** > **判据不是像素,是印刷页码的语义——「同页两个页码、右=左+1、跨物理页步长 2」。** > **并且「跨页性」是逐页属性,不是逐文件属性:同一份文件里两种页面可以并存(pidan 已实测)。**