Doclib 历史 Middle JSON 兼容
兼容仅用于 Doclib 已持久化的 Middle JSON。新写出的文档仍采用
docvortex.middle 及当前共享协议,不恢复旧字段或旧格式导出。
通用 ParseResult、DocVortex codec 与 HTTP/ZIP 客户端严格读取新协议,不再提供 3.x remote server 的临时兼容。
唯一读取边界
mineru.doclib.core.middle_json.read_cached_middle_json(path) 返回当前
MiddleJson。缓存读取、缓存命中、覆盖范围、默认读取档位、FTS 重建与压缩
统一使用此入口。转换只发生在内存,不改写原文件、数据库记录或历史文件名。
读取优先级如下:
- 只要存在
schema键,就使用当前严格读取器;校验失败不尝试旧分支。 - 无
schema、无有效版本标识的pdf_info进入 3.4.5 分支。 - 无
schema的schema_version="1.0"pages 包装,仅在页面包含旧字段时进入同一分支。 - 无
schema/metadata的旧schema_version="2.0",只转换文档外层。 - 混合页面结构、未知身份或版本、字段冲突和损坏数据明确失败。
3.4.5 的发行标签内部实际报告 3.4.4,不能用版本字符串是否等于 3.4.5 识别格式。
对应页面适配器恢复自 dc0944984,保持原有文本、公式、链接、图表、列表、目录和坐标转换算法。
转换后的 raw ModelJson 只经过共享确定性后处理,不重新读取源文件或调用 OCR/VLM/LLM。
旧 Schema 2.0 已有当前页面树,直接保留 pages 与必需的 is_full_document, 不重新执行段落、表格或标题后处理。未知根字段不能静默丢弃。
来源和产品记录
- 保留历史版本;缺失或不可辨认时记录
mineru / unknown,不填当前运行版本。 - 缺失 file_suffix 使用历史 PDF 默认值;显式不支持的格式报错。
- 仅当档位和模式都可可靠识别时写入 extensions.mineru;旧 _ocr_enable 布尔值可恢复 txt/ocr。
- 缺失或未知的解析记录不以 basic/txt 代填,也不借数据库存储档位推断实际运行档位。
- 应用扩展原样保留;已存在的产品扩展必须合法并与可识别的历史记录一致。
缓存与压缩
成功转换且覆盖记录页范围的旧批次可命中缓存,避免重复解析。读取旧半角波浪号范围的 记录时仍按原文件名定位,公开返回的页范围继续使用当前语法。
压缩先转换各批次,再比较 metadata、extensions 和 is_full_document。 一致的不同协议批次可以合并,重复页保留最新结果;新文件只输出当前协议。 冲突、损坏或无法识别时跳过压缩并保留源数据。普通读取不会触发回写。
后续移除
两个历史分支及专属测试集中维护,尚未确定移除版本,不提供配置开关或自动过期时间。 未来统一移除时,删除 Doclib 读取器中的两个旧分支和专用适配器即可, 无需改变通用解析 API。已有验证报告保持历史事实,不追溯修改其测试结论。