先看结果:18,000个“同步成功”文件,最终只有14,280个能作为检索候选
泊岚酒店集团在E11确定资料准入责任、E12确定检索路线后,抽取一个完整摄入批次重建流程。46个来源送来18,000个顶层对象,共312,000页;邮件、办公文档容器和压缩包又产生5,400个嵌入对象。旧流程只检查连接器请求是否成功,以及能否抽取非空文本,因此16,940个对象都显示绿色。但抽样后发现,表格发生错列、扫描页为空、旧附件未失效、脚注丢失,父文件权限还错误覆盖了附件自身权限。
| 48小时后的状态 | 对象 | 含义与操作 |
|---|---|---|
| 已准入 | 14,280 | 内容、结构、身份、访问权限和质量门通过,原子发布 |
| 需要复核 | 1,460 | 低置信文字、表格、阅读顺序或文档系列需领域复核 |
| 隔离 | 1,120 | 加密、活跃内容、类型异常、扫描/解析风险隔离 |
| 已拒绝 | 680 | 恶意/禁用、损坏、超资源门或来源策略拒绝 |
| 已推迟 | 460 | 已识别但当前解析器/容量/许可不支持,保留责任和期限 |
| 总计 | 18,000 | 每个顶层对象恰有一个当前状态 |
准入的14,280个对象产生约672,000个段落。它们不是一次性文本副本,而是可以追溯到来源对象、版本、页面、章节、表格单元和访问权限决策的派生实体。其余3,720个对象也没有被丢进一个笼统的“失败文件夹”:每个对象都有失败阶段、错误码、是否可重试、负责人、原始对象保留决议和下一步动作。
在2,400页分层金标准上,关键数字、否定词和角色词的正确率从91.4%升至98.7%,阅读顺序通过率从74%升至96%,表格关键单元格与表头关系通过率从78%升至94%,嵌入附件发现完整率从69%升至98%,引用坐标可重新打开的比例从88%升至99.5%。这些是虚构教学案例的人工核验结果,不是任何文字识别或解析器产品的普适准确率。
“准入14,280”也不是“另外3,720永远失败”。状态账本在批次截止时取快照:复核完成、获得解密副本或补上安全解析器后,可由新尝试进入准入;来源撤回或负责人拒绝后,也可能从复核转为拒绝。每次迁移都保留原状态、证据与批准人,日报同时报流入、流出和存量,避免只展示累计成功数而看不到不断增长的积压。
团队还从来源侧反向核对:18,000个顶层对象是否都有账簿,312,000页是否全部进入原生解析、文字识别或明确未处理状态,5,400个子项是否都有父对象和最终状态;再从索引侧抽样反查每个段落能否回到这三层。只有双向都没有孤儿记录,才能说本批次完整,不能用14,280÷18,000=79.3%的“成功率”替代完整性。
本文只负责“原始对象变成可信检索材料”:不替负责人决定政策,也不提前设计上下文
| 上游/下游 | 摄入合同 | 边界 |
|---|---|---|
| 来源/E11治理 | 对象编号、负责人、权威等级、访问权限、版本事件 | 摄入不宣布哪份政策有效 |
| 此处解析与文字识别 | 字节→元素→段落,并附质量与来源 | 不靠语言模型补写看不清的内容 |
| 检索/E12 | 稳定段落/字段/过滤器/表示 | 摄入不调最终排名 |
| 上下文/E14 | 部分/表格/邻居/依赖可组合 | 不把整份文件强塞答案 |
| 生命周期/E15 | 发布/取代/撤回/删除事件 | 本文保证事件可执行和可对账 |
“成功”有四层:取得原始字节、解析完成、质量门通过、正式准入发布。前一层成功不能推导后一层。一份PDF可以正常下载,解析器也返回2,000字,但第7页可能是一张没有识别的门槛表;办公文档正文解析正确,内嵌的旧电子表格却仍被索引;网页内容完整,来源权限事件却已经落后。它们都不能因为传输状态是绿色,就进入生产。
项目参与者包括源系统/内容/访问/记录负责人、安全/隐私、摄入平台、文档质量、搜索、领域复核和运行团队。工程师决定解析器/队列,业务负责人确认内容/版本,访问负责人确认权限语义,记录/法律决定原件、快照、保留和法律保留;职责不能压给一个“知识库管理员”。
边界要写进阶段合同:解析器只能陈述“在第7页识别到50万元”,不能据此判定现行门槛;版本解析器只能从已批准元数据中选择现行版本,不能修正文识别结果;检索只能使用已批准区域;答案层只能引用已经发布的资料生成。若某个团队需要访问原图做人工核查,应使用带案例编号和到期时间的受控权限,而不能给整条流水线永久管理员权限。
事故责任也按阶段定位。来源漏发删除事件,由来源负责人补发并对账;原始字节取得完整但解析少了一页,由解析与质量团队负责;访问权限映射变宽,由访问和摄入团队共同停止;原文自身错误,由内容负责人发布修订。责任清楚后,修复才会回到源头,而不是所有问题都变成“重新抓取一次”。
对象账本先于解析:每个来源事件都有稳定身份、幂等键、父子关系和处理状态
| 账本字段 | 示例 | 为何需要 |
|---|---|---|
| 来源/对象编号 | POLICY/P884 | 重命名不产生新知识 |
| 源事件/版本 | 更新 e771 / 实体标签 / 序列 | 顺序、差距、重放 |
| 内容哈希/大小 | sha256 h25 / 8.4兆字节 | 幂等性、完整性、重复线索 |
| 父级/容器 | 邮件M22→附件A3 | 访问权限、删除与附件完整性 |
| 接收/观测时间 | 源时间 + 摄入时间 | 滞后与截至重放 |
| 管道/配置 | 路径-v7/解析器版本 | 可复现性/回滚 |
| 状态/原因/尝试 | NEEDS_REVIEW/TABLE-LOW/2 | 无静默重试循环 |
| 派生编号 | 页面/元素/段落/索引生成 | 影响分析与撤回 |
幂等键至少绑定来源、稳定对象/版本与内容哈希。重复事件重放只复用已经验证的产物,不重复发布;同一对象字节变化必须产生新实体,不覆盖旧哈希。来源没有稳定ID时先以路径+存储库对象键临时标识并标风险,不能只用文件名,因为移动、同名和大小写会制造幽灵版本。
状态机只允许明确转换:已接收→隔离扫描→已检测→已解压→已解析→已验证→就绪→已准入。任何阶段都可以进入“需要复核”“已拒绝”或“已推迟”;修复后通过新的尝试恢复。历史状态必须保留,不能把错误记录直接改成成功,让人看不到曾经发生过什么。
执行器领取的是带租约的阶段任务。租约到期可由另一执行器重试,但提交产物时用对象/版本/阶段/配置做比较并设置;迟到的第一次结果不能覆盖第二次已完成结果。可重试错误包括暂时性解析器服务不可用和限流,不可自动重试错误包括密码加密、禁用格式与资源门触发。指数退避有最大尝试和截止日期,超过后转明确状态,不形成几个月无人注意的循环。
检查点保存已经验证的页面/子项范围,但恢复时先核对原始哈希与解析器/配置;字节或配置变化就开启新尝试,不能拼接两个版本。状态账本另记录输入/输出计数,任何阶段无理由减少页、工作表、幻灯片或子项都触发完整性失败。这样“任务进程退出”与“内容少了一页”不会共用一个含糊错误码。
ingest I-88421 source=POLICY object=P884 event=e771 hash=h25
state DETECTED -> PARSED_NATIVE -> VALIDATED -> READY -> ADMITTED generation=g203
derived pages=18 elements=441 passages=37 family=PROC-AUTH-2025-v1
acl source_epoch=991 index_epoch=991 quality_pack=Q-88421
previous entity h23 remains audit-only; dependency/retraction owned by lifecycle
安全处理从隔离开始,文件扩展名和“能打开”都不是安全结论
OWASP文件上传速查表建议:只允许业务需要的扩展名,不信任可以伪造的媒体类型声明,检查文件签名,由应用生成存储文件名,限制大小和上传者,把文件存放在网站根目录之外,并视风险进行防病毒、沙箱和内容净化与重构。本文据此设计多层控制,但不声称任何单项检查都能证明文件安全。
| 摄入控制 | 决策/证据 | 失败行为 |
|---|---|---|
| 源/认证 | 连接器身份 + 已批准集合 | 未知源拒绝 |
| 字节限制 | 声明和流式实际大小 | 耗尽前停止 |
| 扩展/MIME/签名 | 比较三个信号 + 容器检查 | 不匹配隔离 |
| 生成的存储键 | 无用户路径执行 | 仅原始名称元数据 |
| 恶意软件扫描、沙箱、内容净化与重构 | 按文件类型和风险策略 | 隔离并记录事件,绝不直接内联解析 |
| 解析器隔离 | 无网络, 最小权限, CPU/内存/时间 | 终止尝试; 保留原因 |
| 解压预算 | 字节/计数/深度/比率 | 安全停止容器 |
安全扫描在隔离区运行,解析器工作进程不能访问生产凭据或任意网络,输出只能通过受控产物通道。原始字节按记录和安全决议保留,不在普通搜索或用户界面中直接开放。内容净化与重构若生成新文件,原件与重构件是两个不同实体,必须保存派生关系和内容哈希;重构成功也不能自动证明内容完整。
拒绝680个对象的案例分类为:34个恶意/沙箱命中、88个扩展名/MIME/签名严重冲突、46个归档资源门、224个损坏不可恢复、178个禁用/无安全解析器格式、110个来源策略不准入,总计680。数字按主要原因互斥;多标签另存,避免总数重复。
安全命中后不把样本复制进普通缺陷库。系统冻结受影响对象和必要日志,阻断同哈希/来源的后续处理,查询是否已有旧生成派生物;安全负责人决定通知、取证、删除与恢复。若仅扩展名误报,经批准重新分类也要以新决策恢复,不编辑原扫描结果。恶意与普通损坏的SLA、可见人员和保留规则分开。
对正常大文件也不能靠放宽全局门。某工程手册合法超过250兆字节,可以在源合同中设专用路径、隔离执行器和更严格页数/时间预算;例外绑定集合/类型/负责人/到期日,不能让任意上传者借此提交大容器。所有门在流式读取过程中执行,避免先把超大对象完整装入内存后才判断。
类型检测和解析器路由要依据字节与容器事实
Apache Tika官方资料说明其可检测并从上千种文件类型提取元数据和文本,检测器可结合魔数字节、资源名称和声明类型,解析器接口支持流式结构化输出与输入/输出元数据。本文借鉴接口思想;具体生产解析器、版本和沙箱仍由组织选定。
| 检测到的配置文件 | 路径 | 预检 |
|---|---|---|
| 原生数字 PDF | PDF 对象/文本/布局解析器 | 字体、文本层、标签、页数 |
| 扫描PDF/图像 | 图像质量检查→文字识别→版面分析 | 分辨率、倾斜、噪声、语言、页面 |
| 混合PDF | 页面级原生解析/文字识别路由 | 重复文本、图像叠加 |
| DOCX/PPTX | OOXML 容器 + 原生结构 | 嵌入对象/宏/备注 |
| XLSX/CSV | 工作簿/表格解析器 | 公式、隐藏工作表、合并单元格 |
| 超文本标记语言 | DOM/主要内容解析器 | 模板/脚本/外部引用 |
| 邮件/归档 | 递归容器遍历器 | 子项计数/深度/加密/路径 |
| 加密/未知 | 隔离/负责人请求 | 无密码猜测/备用字符串 |
路径是页面/嵌入对象级而不总是文件级。混合PDF前六页有文本层,第七页是扫描签字门槛表;整文件走原生会漏页,整文件OCR又会重复并损坏数字。预检按页测可用字符、字形异常、图像覆盖和文本/图像重叠,再选择原生、OCR或双路比对。
声明为PDF却是压缩归档容器、文档扩展名内含对象链接与嵌入、网页引用外部附件都需容器感知检测。类型不明时不调用一串解析器直到“有一个不报错”,这种回退会扩大攻击面并生成随机文本;状态转DEFERRED/QUARANTINED,由安全允许的路径清单决定下一步。
18,000个顶层对象的主要路径为:原生数字 PDF/HTML 7,200,扫描或混合 PDF/图像 3,600,Office文档/演示2,800,电子表格 1,600,邮件/归档 1,200,预检即发现不支持/加密/损坏 1,600,总计18,000。主要路径只用于容量分桶;Office内图片仍可走OCR,PDF内附件仍走递归解包,不能用顶层分类漏掉子处理。
路由器以小型确定性测试语料库验收:每种格式有正确、伪扩展名、截断、加密、嵌套和多语言边界样本;升级检测库后比较旧/新类型与路径差异。新路径先在隔离环境解析并审查输出数量、网络/文件访问和资源曲线,再进入白名单。未知类型的原始字节可以按记录保留,但不得为了“尽量抽出文字”调用字符串之类宽松回退作为证据。
递归解包必须限制深度、数量、膨胀率和总处理时间
| 归档/容器预算 | 案例限制 | 在违约时记录 |
|---|---|---|
| 最大嵌套深度 | 5 | 父级链/当前深度 |
| 最大嵌入计数/顶层对象 | 200 | 发现/处理/剩余 |
| 最大展开字节 | 1.5GB,或按来源设置更低值 | 压缩大小、展开大小、膨胀率 |
| 最大单个子项 | 250兆字节 | 子项名称/类型/哈希(如可用) |
| 最大实际运行时间 | 180秒 | 阶段、处理器、内存、最后一个子项 |
| 路径策略 | 标准化, 无遍历/设备名称 | 拒绝的子项路径 |
Apache Tika 设置限制文档展示maxDepth/maxCount等嵌入文档限制,并明确其用于防护ZIP 炸弹式深层/大量嵌入对象。案例值不是Tika默认值,而是本系统按来源风险、容量与业务文件制定;达到门时停止当前容器并标不完整,不能把已抽出的前20个附件当完整成功。
1,200个邮件/归档顶层对象产生5,400个子项。父子各有实体/哈希/类型/状态;子对象通常继承父ACL起点,但若来源提供附件级 ACL则取更严格决议。父邮件删除时触发所有派生子项影响查询;同一附件也可能在正式政策门户出现,家族/派生需区分“删除这个复制”与“删除知识实体”。
加密ZIP/PDF不尝试常用密码。若业务确需内容,由负责人通过批准渠道提供可解密副本或在来源侧转换;密码不进入任务日志。部分解包、循环冗余校验错误和嵌套超限均进入容器完整性字段,检索不得看到“前半部分看起来正常”的不完整文档。
以一个邮件归档为例:顶层M-204声称含37封邮件,遍历器发现37个消息实体、92个附件,其中3个附件又含各12个文件,期望子项总数165。第148个子项触发加密压缩归档,系统仍记录已经发现165、成功处理147、加密1、尚未处理17,并把容器标不完整;不会只把147个发布。负责人可选择提供受控解密版、拆分合法附件或整包退场,决议同时作用于父子依赖。
资源门还防“数量正常但解压异常”。一个80知识库压缩包若声称展开900兆字节,即使子项只有4个,也可命中比率/展开字节门;一个每层只有1个文件的深嵌套会命中深度门。运行指标分别记录计数、深度、比率、时间,方便安全与业务判断,不用一个“解压失败”隐藏攻击形态和普通损坏。
解析流程优先保留原生结构,再按页处理扫描内容、版面和表格
| 元素字段 | 已填充输出 | 下游使用 |
|---|---|---|
| 元素/类型 | 标题/段落/列表/表格/脚注 | 分块边界/语义 |
| 源坐标 | 页/幻灯片/工作表/单元格/DOM 路径 | 引用/重新打开 |
| 阅读顺序/父级 | 序列 + 章节树 | 避免列混排 |
| 文本/原始跨度 | 精确提取文本 + 偏移量 | 引用/哈希/差异 |
| 样式/角色 | 标题级别/列表标记/页眉/页脚 | 模板文本/结构 |
| 链接/对象关系 | 目标/附件/图片/注释 | 依赖/来源 |
| 解析器/置信度 | 解析器版本/警告/覆盖范围 | 验证/重新路由 |
只输出纯文本会丢掉“这行是表头”“这一段属于例外”“下一页脚注修饰上表”。原生解析器先利用DOCX/PPTX/XLSX/PDF 标签或文档对象模型结构;若结构缺失,再用布局分析推断,并把声明与推断分开。PDF 关联对带标签的 PDF的说明指出标签可表达预期阅读顺序及标题/列表/表格等语义;但未标记或错误标签仍需验证。
页眉/页脚、页码和导航不是一律删除。重复页眉可能是噪声,页脚却可能含适用范围或保密标签;判定规则按源/模板版本,保留原始元素并在检索表示中标排除。这样规则改错时可重建,不必重新抓来源。
解析完整性先对账页/幻灯片/工作表/附件数量。文件声称18页而解析器只返回17页、工作簿有隐藏工作表却未处理、PPT 演讲者备注被配置忽略,都必须形成明确策略与警告,不能被“正文非空”覆盖。
不同格式的“内容”由源合同定义。文档扩展名需要正文、标题、表格、页眉脚注、批注/修订是否纳入的决议;演示文稿扩展名区分幻灯片正文、演讲者备注和隐藏幻灯片;电子表格扩展名保留显示值、公式、工作表可见性、合并单元格与命名区域;超文本标记语言固定允许抓取的文档对象模型、附件链接和主内容范围。没有统一“全部都索引”,因为批注、隐藏工作表和备注可能既敏感又不是正式规则。
原生解析器升级时用结构差异而非只比全文哈希。比较元素数量/类型、阅读顺序、表格网格、链接/附件、坐标和警告;若纯文本相同但表格标题关系变化,也需重跑下游黄金。每个产物保存解析器库与配置版本,遇到特定文件崩溃时可定位影响集合,而不必重处理所有184万文件。
文字识别按页检查图像质量、语言、分区和关键字词
Tesseract文档列出重缩放、二值化、去噪、纠偏、边框、页面分割、词典/模式等会影响OCR,并提醒表格通常需要额外分块/版面分析。本文用其说明OCR是带输入条件的工程流程,不把某个每英寸点数或置信度阈值当行业标准。
| 文字识别预检 | 测量 | 路由与动作 |
|---|---|---|
| 有效分辨率 | 预估 DPI/文本高度 | 调整尺寸/请求重新扫描 |
| 倾斜/方向 | 角度/脚本方向 | 纠偏/旋转并保留变换 |
| 对比度/噪声 | 背景/模糊/墨迹渗透 | 预处理变体 + 校验器 |
| 语言/脚本 | 页面/区域语言 | 已批准的语言模型 |
| 版面密度 | 列/表格/表单/稀疏 | 页面分块/版面路由 |
| 现有文本层 | 覆盖、字形、重叠 | 原生解析、文字识别或混合去重 |
76,400页进入文字识别或混合比对,235,600页使用原生解析,两者合计312,000页。每个识别出的词都保存边界框、置信度、引擎与模型、预处理变换和原图页面哈希。低置信度不是唯一复核条件:金额、日期、否定词、政策编号和角色即使置信度较高,也要通过规则、领域词典、双引擎抽样或原图对照来验证。
例如,原图中的“超过50万元不得由区域自行批准”若被识别成“超过50万元得由区域自行批准”,整体字符准确率仍可能接近100%,业务意义却完全相反。关键字词校验器比较“不得/得”、金额位数与分隔符、表头单位和负责人词典;一旦冲突,整条主张所在区域进入人工复核,不能让语言模型根据上下文自动改字。
文字识别质量包不把引擎置信度直接当成正确概率。团队在金标准上按语言、扫描质量和字词类别做校准:置信度相同的普通汉字与六位金额,错误率可能完全不同。因此,阈值按风险类别设置,而不是全局统一设成85。关键区域可以再运行一种预处理或另一套识别引擎;两个结果一致也只是附加信号,仍要用原图和规则验证,两个结果冲突则提高复核优先级。
预处理保持可逆记录:原图哈希、旋转角、裁切、二值化参数、缩放比例和输出图哈希逐步保存。裁切不能删除页边适用说明,去噪不能抹去小数点,纠偏后边界框能映射回原图。若某个变体提升普通字符却降低数字准确率,路由器可按区域选择,不以整页平均分决定。
阅读顺序和版面树决定抽取后的句子是否仍是原句
| 版面失败 | 扁平化输出症状 | 验证器 |
|---|---|---|
| 两列 | 左右行交替成为新句子 | 几何/顺序连续性 |
| 页眉/页脚 | 每页重复词压过正文 | 模板重复 + 保留源 |
| 脚注 | 例外与主规则断开 | 锚点/脚注关系 |
| 批注/文本框 | 警告插入无关段落 | 边界/阅读顺序图 |
| 旋转页面 | 字符乱序/空页 | 方向 + 覆盖 |
| 图表标题 | 图注当正文或丢失 | 图表/标题关系 |
微软文档智能布局文档说明布局分析可返回文本、表格、选择标记与文档结构,章节/子章节保留层级;谷歌文档智能布局资料同样强调标题、表格、图、列表及上下文感知片段。本文把这些作为结构化输出能力示例,不要求采用特定云服务,也不接受“服务返回成功”替代本地质量验证。
阅读顺序金标准对2,400页中的双栏、表格跨页、脚注、扫描倾斜和中英混排分层。通过要求主规则与限定条件顺序可恢复,页眉不插入句中,脚注保留锚点。模型推断的章节树保存置信度;若低于门,块保持较小的页面区域边界并转人工,不猜一个漂亮大纲。
阅读顺序验证器不只比较字符串。它把页面元素建成有向图,检查每个正文节点入/出关系、栏内连续、跨栏跳转、图注/图和脚注锚点;再与人工黄金计算边关系。若双栏第一页错把左栏第1段接右栏第1段,全文字符一个没少但图失败。对模板稳定来源还比较相邻文档结构分布,突然出现200个孤立元素就告警。
跨页规则尤其谨慎:页末“但下列情形除外”与下一页列表必须相连,表格跨页重复表头不能当数据行,页码和保密页脚不能插入。段落可跨页,但引用保存所有页面/区域;若关系不确定,宁可拆成两个待组合元素并标状态未知,也不把两句错误合成确定规则。
表格不是带竖线的文本,必须保存结构关系和原图区域
| 表格记录 | 必需字段 | 若省略则失败 |
|---|---|---|
| 表格标识 | 文档/页面/区域/图注 | 引用找不到表 |
| 网格 | 行列索引及跨度 | 合并表头错配 |
| 单元格 | 原始文本/值/类型/边界框/置信度 | 数字无法回原图 |
| 标题 | 行列标题关系 | “50”不知道属于哪项 |
| 单位/脚注 | 表格/全局/局部单位及注脚锚点 | 万元变元、例外丢失 |
| 续表 | 上一页/下一页表格 | 跨页表被当两张 |
| 表示 | HTML/Markdown/行句子 | 检索与显示分开 |
Microsoft的表格对象资料包含行列计数、单元格索引、行列跨度、边界区域、图注与脚注等字段,说明表格结构远多于字符序列。案例先保留规范网格,再生成面向检索的行表示,例如“普通资本更新|超过50万元|集团投资委员会”;生成文本是派生实体,引用仍回原表单元格/标题。
表格验证器检查行列数量、重叠、空表头、单位、合并单元格覆盖、跨页重复表头、数值类型与总计。若表内五项金额之和应为860,000而抽取和为68,000,不能用“模型可理解”放行。总计不总是可重算,只有规则明确才作为验证器;否则抽样人工与原图对照。
340个需要复核的对象来自表格关系或数字疑点。复核界面同时显示原图区域、网格、表头路径、文字识别置信度和邻近脚注。评审修改会生成新产物和决策记录,不能覆盖原始抽取结果。修正可以应用于同模板的后续文档,但要先通过留置样本验证,不能把一次人工改动直接当成全局规则。
表格金标准按单元格文本、行列索引、跨度、标题路径、单元和脚注分别计分。若100个单元格文字都对但多级表头整体向右错一列,字符准确率100%,业务关系准确率却失败。94%的案例结果指关键单元格及表头关系联合通过,不等同所有表格、所有单元格的平均正确率;严重门槛表任何关键关系不确定都不准入。
跨页表先用图注、列几何结构、重复标题和源标签判断续表,再由验证器核对列数/单位。不能仅因两页表格宽度相同就合并;相邻两个独立表也可能同模板。合并决策记录前后表格 ID和依据,原始页面网格仍保留,方便引用分别打开和错误回滚。
元数据、文档系列、版本和访问权限要在分块前绑定
| 归一化尺寸 | 来源证据 | 准入行为 |
|---|---|---|
| 稳定对象/系列/版本 | 来源编号 及负责人/版本关系 | 未知系列可能受限 |
| 已发布/生效/状态 | 已批准元数据/事件 | 未来/已撤销非当前语料 |
| 负责人/授权方 | 源合同/商业决策 | 解析器作者字段非负责人 |
| 实体/区域/任务 | 已批准适用范围 | 缺失非默认全局 |
| 访问主体与拒绝规则 | 来源访问权限及用户组版本 | 传播至所有派生产物 |
| 记录/保留/锁定 | 记录决策 | 删除/索引清理可能不同 |
| 来源 | 来源→表示→元素 | 追踪转换 |
Office 作者、文件创建日期和路径可以是线索,不能自动变成内容负责人、生效日或权限。元数据优先级由源合同定义:签署系统字段优于文件名中的“最终”;系列/版本冲突进入E11 负责人路由。解析阶段提取候选元数据,治理阶段批准,再绑定到就绪生成。
访问权限继承以来源对象为起点。容器与附件、工作表与章节如果有更严格规则,就采用更严格的决议;不能因为拆成段落而丢掉拒绝规则,也不能用文件夹的“内部可见”覆盖资源自身权限。每个段落保留安全描述符编号和权限版本,而不是复制一份永不更新的用户组名单。无法表达或对账访问权限的来源,不得进入高风险答案。
同一政策的网页、PDF、邮件附件和本地副本可能产生相同或近似的内容哈希,但处置方式不同。去重只能合并资料表示,不能删除来源和访问权限;一个公开副本也不能把受限的签名原件变成公开资料。文档系列解析器决定哪个版本现行,摄入流程只负责提供可靠实体和关系。
权限继承要处理三种容易扩权的边界。第一,邮件正文允许团队查看,但附件另行标记为受限,子项必须采用附件权限。第二,文件夹移动改变继承用户组时,稳定对象的安全描述符也要更新,不能因为内容哈希没有变化就跳过。第三,解析出的表格或图片若另存到其他存储桶,访问仍由来源描述符控制,不能因为生成了新链接就默认内部可见。240组允许与拒绝测试覆盖父子关系、移动、离职、临时组过期和引用打开。
元数据冲突也不静默择优。源 API称生效为2025-01-01,签署PDF封面识别为2025-01-10时,解析器只报告两个候选与坐标,内容负责人决定;文件名“最终-v7”与源版本 ID不一致时不按字符串排序。决议写入已批准覆盖层并链接原证据,来源修正后可撤销覆盖层,避免永久维护第二套事实。
分块从结构与引用要求出发:固定字符数只能是最后的安全阀
| 边界规则 | 操作 | 保留证据 |
|---|---|---|
| 标题/章节 | 章节路径随每个段落 | 祖先标题 |
| 段落/列表 | 不拆开否定与条件 | 列表层级/顺序 |
| 表格 | 行 + 标题 + 单位;大表分组 | 网格坐标 |
| 脚注 | 与锚点段落关联 | 注脚编号与位置 |
| 页面/幻灯片/工作表 | 引用可定位,不硬断语义 | 源范围 |
| 最大模型输入 | 再按句或元素切分,有限重叠 | 父段落与相邻段落编号 |
案例不是先定“每块1,000字符、重叠200”再套所有格式。短政策条款可把标题+段落+紧邻例外放一起;长标准作业程序按步骤/列表切;表格按行组并附多级表头;演示文稿把幻灯片标题、正文、演讲者备注分角色。最大令牌/字符只是防极端大元素,切分点与丢弃内容都记录。
重叠不会自动提高质量。若相同门槛出现在5个段落,E12 顶部结果会被一个系列挤满,引用与评估也重复。每个段落有标准主张跨度与仅上下文跨度;检索可使用上下文,展示/引用指真正支持的原文。邻居 ID让E14按需扩展,不必在每块复制整页。
重新块是架构迁移:生成新段落生成,重建词汇/向量索引,迁移或重标标准引用,影子比较后原子切换。旧回答仍引用旧段落哈希并能回原文;不能覆盖ID导致历史证据指向新文字。
案例以300题开发集比较三种策略:固定800字符、按段落/标题、布局感知表格/列表。固定块候选召回率@30为84%,结构块89%,布局感知为93%;但第三种段落数从590,000增至672,000,索引与重排成本上升。数字只是本地权衡,选择后还要看前10项重复率、引用覆盖率和表格切片,不能把93%当通用块尺寸结论。
切块审计随机抽一个段落,检查正文是否原样来自元素、祖先标题是否只作为上下文、表格行是否带正确标题/单元、脚注是否有锚点、标准跨度是否可引用、邻居是否同版本。任何生成性表格描述若加入推断词,只可作为搜索标注并明确非原文,不能被主张引用直接引用。
质量门用多种验证器和分层样本:平均字符准确率不能保护关键数字与权限
| 质量放行门槛 | 范围 | 停止/复核条件 |
|---|---|---|
| 完整性 | 页面/工作表/幻灯片/子项 | 计数间隙/未处理区域 |
| 文本关键令牌 | 数字/日期/否定/代码/角色 | 不匹配或证据不足 |
| 结构/顺序 | 标题/列表/列/脚注 | 序列/锚点失败 |
| 表格 | 网格/标题/单元/单元格关系 | 关键关系不确定 |
| 身份/治理 | 家族/版本/状态/负责人 | 高风险未知/冲突 |
| 权限 | 来源与派生物的访问规则和权限版本 | 任何未授权扩展 |
| 引用 | 段落→页面/区域/源开启 | 坐标/哈希不匹配 |
| 重复 | 表示/家族主导 | 未解析身份/副本 |
2,400页黄金按来源、格式、扫描质量、语言、年代、表格/脚注、权限和业务风险分层;另有300个恶意/损坏/加密/超限容器负向对象与240组ACL 允许/拒绝对。自动验证器先全量,人工对严重与抽样页复核;没有黄金的长尾看警告/分布和来源对账,不能假装自动置信度等于真值。
准入门要按任务风险设置。普通内部导航可以接受轻微格式缺陷;高风险门槛资料必须同时通过关键字词、版本、访问权限、表格关系和引用检查。一份文档可以部分准入:安全且身份清楚的正文段落进入低风险搜索,疑似错误的表格区域保持“需要复核”状态;用户界面和检索器绝不能把未通过区域重新拼回答案。
质量报告固定分母与解析器/配置。供应商/模型升级后在同一黄金上跑,同时看新失败;抽样发现错误转成留置前去敏并确认标签。任何“人工修正文本”都保存原值、修正、复核人、理由和时间,不把审计链改没。
门槛校准要显示权衡。把OCR 关键阈值从0.90提到0.96,可能让错误准入从18页降到5页,却把人工复核从240页推到690页;团队要按风险与复核容量选择,并把5个残余错误逐类设硬验证器,不能只选择最高平均F1。任何无法容忍的权限扩张、恶意对象或当前关键数字错误都保持零容忍,不参与普通阈值权衡。
验证器自身也会出错。规则版本、适用格式/语言、误报/漏报样本和负责人写入注册表;模板变更使页脚检测误删正文时,可查询哪些产物用过该规则并重建。人工复核推翻验证器的案例进入月度校准,决定修规则、缩适用范围或保留人工门,不因自动化率目标强行放宽。
人工复核按风险和可修性排队
| 复核队列 | 优先级 | 复核人/操作 |
|---|---|---|
| 关键令牌/表格 | 策略/财务/权限 | 领域负责人确认源 |
| 权限/文档家族冲突 | 任何敏感或现行任务 | 访问与内容负责人裁决 |
| 低文字识别或版面质量 | 高使用、关键任务优先 | 文档质量人员修正或重新路由 |
| 加密/密码 | 业务负责人 | 供应已批准可访问源 |
| 不支持的格式 | 需求/风险 | 构建解析器, 转换, 推迟或退役 |
| 重复/副本 | 答案影响 | 链接表示/限制/停用 |
1,460个需要复核的对象包括:620个关键字词或文字识别低质量问题,340个表格关系问题,210个阅读顺序问题,160个字体或字形异常,以及130个文档家族或版本歧义,总计1,460个。队列显示近30日被问次数、涉及任务、潜在旧答案和截止时间,避免先修那些没人使用的美观问题。
复核人不能直接在索引里改一句话。修正产出策展覆盖层或源更正请求,带适用版本/区域;最好由源负责人修原件并重新摄入。紧急覆盖层有过期日、双人批准和源通知,后续来源更新触发冲突检查,防止永久分叉。
积压超过SLA不自动放行。高风险保持不可用并升级负责人;低风险可按策略降级成“仅显示原文/不生成”或已推迟。运行团队报告到达、完成、年龄、重新开启和根本原因,不能只用“关闭工单数”制造效率。
发布必须原子化:同一代段落、访问权限和索引一起可见
| 生成步骤 | 证据 | 回滚行为 |
|---|---|---|
| 归档产物 | 不可变解析/布局/表格/块 | 非用户可见 |
| 构建索引 | 词汇/向量/元数据/安全同代生成 | 隔离别名 |
| 发布前测试 | 数量、金标准、访问权限、引用、冒烟测试 | 失败时保留旧一代 |
| 负责人/自动化放行门槛 | 决策 + 配置哈希 | 无部分批准 |
| 别名切换 | 生成编号与时间 | 原子路由至新一代 |
| 发布后检查 | 源/索引计数/查询样本 | 回滚别名 + 使缓存失效 |
不能先写元数据索引、两小时后才写向量,也不能新块可见而ACL仍旧。就绪生成包含段落集、词汇/向量索引、安全描述符、家族解析器快照和引用映射;全部门通过才切别名。大来源分区发布也要保证一个对象/版本内部原子,不让半份政策上线。
发布记录列出新增、变更、移除的实体,以及依赖这些实体的答案和评估案例;缓存键包含资料生成编号和权限版本。回滚可以恢复上一代可用性,但若新一代修复的是权限泄露,就不能回到存在漏洞的旧一代;此时应停止任务并修正发布。可回滚不等于任何情况下都能回滚。
一次发布故障演练中,新生成有37个段落缺向量、12个安全描述符指向旧纪元。发布前计数/ACL测试阻止别名切换,用户继续使用上一代;修复后只重建缺失阶段并再次验证。若故障在切换后才由发布后检查发现,系统先按风险判断回滚或停止,保存两代答案 ID与暴露窗口,不能在原索引上边修边让用户看到不断变化的结果。
发布审批不是让人工逐页点击。自动证据包汇总来源哈希、数量差异、关键验证器、权限拒绝测试、引用样本、金标准回归和容量结果;负责人只处理冲突与风险接受。批准记录绑定资料生成哈希和有效期,后续产物一旦变化就自动失效,避免把“上周批准过”复用于不同输出。
更新、撤回和删除是发布主路径的一部分
| 事件 | 必需处理 | 完成证明 |
|---|---|---|
| 创建/更新 | 获取字节 + 新实体/尝试 | 当前源/索引生成 |
| 重命名/移动 | 稳定编号关系;重新检查权限和文档家族 | 无重复或孤儿 |
| 取代/生效 | 解析器事件 + 影响回归 | 当前/截至查询正确 |
| 撤回 | 排除未来使用 + 标记依赖 | 缓存/索引/答案已处理 |
| 访问权限变更 | 更新安全描述符与权限版本 | 拒绝测试与查询重新授权 |
| 删除 | 墓碑 + 派生依赖清理 | 源 - 索引协调 |
| 法律保留/留存 | 保留必需记录, 限制使用 | 记录决策已存档 |
删除不等于立即抹掉所有历史。源对象墓碑使未来检索不可用,派生段落/索引/缓存清除;历史回答与审计产物如何保留由记录/法律决定并受限访问。若同一内容还有另一个合法源实体,只删除被删复制,不误删整个系列。
事件乱序需要序列/观测时间与对账。先收到删除 e773、后收到延迟更新 e772,不能复活旧对象;来源不提供可靠事件时定期全量/分区对账,比较对象计数、哈希、ACL和缺失墓碑。超过新鲜度门的高风险来源停止,而不是继续用“上次成功”内容。
对账差异有明确处置:来源存在/索引缺失触发补抓或解释为不准入;来源已删/索引仍有先隔离派生物再查事件间隙;哈希不同但事件未变要求源负责人确认静默更新;ACL不同立即使用更严格决策并回归。每天增量对账热点来源,每周/按风险做更宽扫描,完成证据保存对象集合与时间水位,而不是只写“任务成功”。
撤回影响不仅是索引删除。依赖查询列出引用该实体的历史答案、标准案例、缓存与策展覆盖层;产品按E11策略标记重查、通知或保留审计。直到未来查询不再命中、旧引用状态正确、受影响评估已更新,事件才算关闭。
运行指标看完整性、正确性、时效和积压:解析器吞吐量只是容量指标
| 服务指标 | 分子与分母 | 作用 |
|---|---|---|
| 事件完整性 | 已接收 + 协调/源事件 | 检测缺失变更/删除 |
| 合格发布新鲜度 | 在任务截止日期内被接纳 | 用户查看当前内容 |
| 解析/质量通过 | 按格式/源/风险 | 诊断, 非盲目最大化 |
| 关键令牌/表格准确性 | 标准审核项 | 保护高影响事实 |
| 附件完整性 | 发现的预期子项 | 防止静默遗漏 |
| 权限等价 | 派生物的允许与拒绝规则同来源对比 | 关键扩权为0 |
| 引用重新开启 | 段落坐标开启相同哈希 | 证据可用性 |
| 复核积压/滞后 | 按优先级/根本原因 | 运营容量 |
告警分为安全与权限、现行政策错误、来源事件缺口、解析与质量退化、容量积压。恶意软件或权限扩张立即通知值班人员并隔离;关键门槛识别错误、撤回未执行时停止整个文档系列;解析器错误上升时按格式和来源限流;普通低质量进入复核队列。一个总成功率会让海量简单网页掩盖少量扫描政策的严重失败。
容量按页、对象、嵌入子项、文字识别、版面、表格复杂度和峰值事件估算,不能只看文件数。312,000页中有76,400页需要文字识别,处理成本明显更高;1,200个归档对象又带来5,400个子项。队列分别为安全扫描、原生解析、文字识别与版面、表格验证、嵌入与索引设置优先级和反压,防止一个大归档占满执行器。
成本报源/类型/任务分摊:原生解析、OCR、人工复核、存储、词汇/向量构建与重处理分别记录。降低成本的第一步常是阻止重复抓取/重处理、让来源提供结构化原文或更好扫描,而不是降低质量放行门槛。未准入对象也消耗成本,负责人应看到长期不支持/影子源负担。
批次容量也可以复算:312,000页中,原生解析235,600页,文字识别或混合处理76,400页,合计不重不漏。若文字识别池能持续处理每秒40页,纯计算下限约为1,910秒,但真实总耗时还包括版面、表格、重试和排队。容量计划应使用实测服务时间与峰值到达率,不能用这个理论下限承诺服务时限。队列水位过高时,先延迟低风险历史回填,不能跳过安全、访问权限或质量门。
分阶段上线从一个文档家族演练到来源波次,先证明撤回和权限变化能闭环
| 波 | 范围 | 出口证据 |
|---|---|---|
| 0 测试框架 | 精选的良/坏/加密/归档集 | 确定性状态/限制 |
| 1 文档系列 | 政策PDF、网页、旧副本、表格、脚注 | 原生解析、文字识别、家族关系和引用测试 |
| 2 来源 | 单一策略门户的所有事件 | 创建、更新、删除和权限对账 |
| 3 格式 | DOCX/PPTX/XLSX/邮件/归档 | 嵌入/完整性/质量金标 |
| 4 受控生产 | 选定角色/任务 | 新鲜度/关键 0/复核容量 |
| 5 扩展 | 仅合规来源 | 两轮周期 + 回滚/事件演练 |
首个系列故意包含原生数字版现行PDF、扫描签字页、跨页门槛表、旧邮件附件、未来版本和受限附录;演练文字识别置信度下降、解析超时、访问权限收窄、版本取代、撤回、删除和回滚。只有每个状态、索引、缓存、引用和历史依赖都能解释,才接入第二个来源。
上线比较旧/新管线时固定来源事件和黄金,不以“新系统处理更多文件”取胜。影子新产物不进入用户检索;金丝雀按来源/家族切生成,防止同一对象两种块混在列表。停止门包括权限扩张、恶意对象逃逸、关键令牌错、撤回未生效和引用无法复现。
季度事件演练选择三类问题:压缩包炸弹或恶意附件、权限事件漏传、文字识别把否定词改反。团队从告警开始,依次执行隔离、影响查询、用户与负责人通知、修复、重新摄入、回归和恢复决定。若只能手工删除索引,却说不清有哪些派生对象,流水线仍不合格。
交付摄入证据包:任何段落都能回到原始对象、处理决议和当前可见性
| 产物/模板 | 最低内容 |
|---|---|
| 来源/格式路由矩阵 | 类型/版本/风险/解析器/限制/回退 |
| 对象/状态账本 | 编号、事件、哈希、尝试、状态、原因、派生关系 |
| 隔离/安全策略 | 白名单、签名、扫描、内容净化与重构、沙箱、预算 |
| 解析与文字识别清单 | 引擎、模型、配置、预处理、语言、警告 |
| 布局/表格模式 | 树/顺序/边界框/网格/表头/单元/脚注 |
| 元数据/权限契约 | 优先级、家族、版本、状态、范围、安全描述符版本 |
| 分块清单 | 边界/上下文/规范跨度/邻居/生成 |
| 质量包 | 金标/验证器/阈值/样本/失败/决策 |
| 复核记录 | 原始/更正/审查人/负责人/到期/来源操作 |
| 发布/对账运行手册 | 生成/别名/缓存/回滚/事件/墓碑 |
| 运营仪表盘 | 完整性、新鲜度、准确性、访问权限、积压、成本 |
OWASP文件上传速查表支持多层文件上传控制:不信任媒体类型声明,并结合白名单、文件签名、重命名、大小限制、隔离、扫描和内容净化与重构等措施。Apache Tika官方资料支持内容检测、结构化流式解析、元数据和递归资源限制;Tesseract文档说明图像预处理、纠偏、页面分割、词典和表格识别的局限。PDF Association说明带标签的PDF可以表达阅读顺序和标题、列表、表格等语义;Microsoft与Google文档处理资料展示了文本、章节、表格、单元格、边界区域和布局感知分块等结构化能力。本文只把它们用于设计检查点,不以任何单一工具的返回值代替业务质量门。所有来源核验于2026-07-21。
- OWASP:File Upload Cheat Sheet
- Apache Tika:Content Detection
- Apache Tika:Parser Interface
- Apache Tika:Setting Limits
- Tesseract:Improving OCR Output Quality
- PDF Association:Tagged PDF Q&A
- Microsoft Learn:Document Intelligence Layout
- Google Cloud:Document AI Layout Parser
实际开始时,选一个同时包含表格、脚注、扫描页和旧附件的高频政策系列。保存来源对象、事件、哈希和访问权限,在隔离区对原始字节执行类型、安全和资源门检查,按页选择原生解析或文字识别,输出带坐标的结构和规范表格,并把文档家族、版本、状态和访问权限绑定到每个段落。用原图标注20个关键数字、否定词、表头和阅读顺序金标准,再演练撤回与权限收窄。只有新一代资料能原子发布,失败对象能停在可解释状态,旧内容能完整回收,才能把“同步成功”称作“可准入”。