Skip to content

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 重建与压缩 统一使用此入口。转换只发生在内存,不改写原文件、数据库记录或历史文件名。

读取优先级如下:

  1. 只要存在 schema 键,就使用当前严格读取器;校验失败不尝试旧分支。
  2. 无 schema、无有效版本标识的 pdf_info 进入 3.4.5 分支。
  3. 无 schema 的 schema_version="1.0" pages 包装,仅在页面包含旧字段时进入同一分支。
  4. 无 schema/metadata 的旧 schema_version="2.0",只转换文档外层。
  5. 混合页面结构、未知身份或版本、字段冲突和损坏数据明确失败。

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。已有验证报告保持历史事实,不追溯修改其测试结论。