生成式 AI 正在深刻改变我们的工作与生活方式,但许多可能为企业带来变革的数据,依然被锁存在过时或封闭的格式之中。
IBM 旗下的开源文档解析工具 Docling,已帮助企业从旧版图表、客户档案和年度报告中提取新的洞察,令这些信息变得触手可及。Docling 在 GitHub 上累计获得 3200 万次下载和 6.4 万颗星,是 IBM 有史以来最成功的开源项目,已被集成到 LangChain、红帽 OpenShift,乃至 IBM 自家的 Granite 系列大语言模型中。
如今,Docling 背后的研究团队推出了与之相辅相成的新成果:DocLang。这是一种基于 XML 的子语言,通过让 AI 模型用更少的 Token 识别标题结尾、图表说明起始等位置,有望降低推理延迟与成本。
XML 即可扩展标记语言,最初设计用于在应用、数据库和网络服务之间存储和传输数据。上世纪 90 年代,前端网页转向了对错误更为宽容的 HTML,因为 XML 的解析规则严格;HTML 还内置了现成可用的可视化标签,使用门槛更低。尽管 HTML 成为了网络通用的标记语言,XML 却从未真正退出历史舞台。Docling 将来自多种格式(PDF、PPT、XLSX、MP4)的非结构化数据转化为内部表示,并序列化为 DocLang——一种受约束的 XML 方言,专为大语言模型的可解释性而设计。
我们近期与 Docling 首席研究员 Peter Staar 进行了深度交流,了解了 DocLang 的诞生背景、核心优势以及推动企业与社区广泛采用所需的条件。
为什么需要 DocLang?
我们今天使用的文档格式,各自为不同目的而生。PDF 告诉渲染器像素放在哪里,DOCX 告诉文字处理软件如何排版页面,两者都不是为需要理解内容的机器而设计的。当这些格式被送入 AI 流水线时,阅读顺序会变得模糊,表格会崩塌,图表会失去说明文字,元数据也会消失——而这一切都发生在模型看到内容之前,从根本上限制了模型的准确性上限。
DocLang 有何不同?
DocLang 存在的唯一目的,就是让机器能够理解内容。它是一个开放标准——就像数据领域的 JSON、网页领域的 HTML——原生编码了语义、布局、边界框和阅读顺序,而不是在事后尝试还原结构,而是从一开始就定义好表示方式。我们还坚持一个原则:同一份内容应有且仅有一种编码形式。两个系统正确读取同一份文档,产生的输出应完全一致,每个字节都相同。这种"一文档、一表示"的特性是以往任何标准都无法保证的,也正是 DocLang 可被训练和验证的根本所在。
为什么选择 XML 作为 DocLang 的基础?
我们选择 XML,是因为它与语义 Token 之间存在清晰的对应关系。每个语义 Token 都有明确的开闭形式——`<text>` 与 `</text>`——并直接映射到单个大语言模型 Token:开标签是一个 Token,闭标签是另一个 Token。这种一一对应意味着模型不必浪费能力去学习解析一种模糊的标记方言。文档结构与 Token 流结构完全一致。我们将语法词汇量上限控制在约 1000 个 Token,并将属性语义推入嵌套元素而非属性字段,正是为了保持映射的紧凑性,将 Token 消耗降到最低。
DocLang 的创意从何而来?
灵感源于一次做表格识别时的观察。当时我们在训练图像到序列的模型,让它读取表格并以 HTML 格式输出。方案可行,但效率不高,模型频繁输出语法错误的 HTML。这促使我们研发了优化表格结构语言(OTSL),并于 2023 年发表。核心洞察很简单却很有力:如果设计一套极简的、专用词汇,而不是借用 HTML,模型的准确性会更高,推理时间会下降,输出也始终语法正确——表示方式本身承担了我们原本要求模型去做的工作。
我们想:如果这对表格有效,为什么不把它推广到整个页面?这便催生了 DocTags,以及后来的 SmolDocling——一个拥有 2.56 亿参数的视觉语言模型,能够一次性处理含有表格、公式、代码和图表的页面,并与体量大 27 倍的模型比肩。在这一过程中,我们也汲取了教训:DocTags 并不符合 XML 规范,也不够完整,对某些文档结构的表达力有限。DocLang 在保留高效 Token 利用、机器原生表示这一核心理念的基础上,进一步做到了 XML 合规、完整性和规范性。
有哪些具体优势?
这些优势相互叠加,共同发力,具体包括以下几点:
更小的模型,更高的准确率。正如 OTSL 和 SmolDocling 所证明的,表示方式承担了更多工作,模型本身无需背负过重负担。
杜绝结构幻觉。DocLang 的语法规则使无效输出无法被表示,无论是非矩形表格还是未闭合的元素,整类错误从根本上就不会发生。
无损且有据可查。完整的表格网格、图表位置、阅读顺序和边界框全部保留,供模型处理。
一致性,可构建。每份文档只有一种规范编码,意味着可以基于它进行训练、差异比较、缓存和验证,是一种值得信赖的格式。
内置合规治理。个人身份信息标记、检索增强生成(RAG)权限、训练约束等信息存储在文档头部,而非脆弱的附属文件中,确保合规元数据始终随内容同行。
不止于文档。DocLang 的基本元素可延伸至音频转录、图像和视频片段,这在流水线走向多模态的今天尤为重要。
开放,无锁定。DocLang 是在 Linux 基金会治理框架下的开放标准,任何工具或流水线均可实现或使用。
面临哪些挑战?
一种格式的价值,取决于采用它的生态系统。只有规范没有实现,不过是一纸空文。能否获得广泛采用,将决定 DocLang 的成败,这也是我们在发布之初就提供真实支持的原因。
第二个挑战是在完整性与一致性之间取得平衡。文档世界无比复杂,每次为了覆盖边缘情况而增加表达能力,都可能带来新的表示歧义。在覆盖真实复杂场景的同时坚守"一文档、一表示"的原则,是持续性的艰难设计工作。这也是我们仍处于 0.x 版本、并将次要版本视为潜在破坏性变更的原因——我们宁愿把规范形式做对,也不愿过早冻结。
迁移成本是第三个挑战。任何已有流水线的人都需要投入工具开发和重新训练以完成转换。我们认为准确性的提升足以弥补这一成本,但这是真实存在的代价,不应被轻描淡写地一笔带过。
此外,我们还面临治理风险:如何确保标准真正保持开放,防止它碎片化为各家厂商的私有版本。这既是技术问题,也是人与流程的问题。
DocLang 要获得广泛采用,需要什么条件?
标准的胜出靠的是易于采用和明显更优,而不是行政强制。我们的策略分三步走。
第一步,免费、开放、中立治理。DocLang 是在基金会治理框架下的开放规范,有多个组织共同背书,没有厂商锁定。这是任何人信任一种格式来托管其文档的最低门槛。
第二步,在人们已有的工具中直接支持。这是最关键的杠杆。我们不是要求所有人从头重写流水线,而是让 DocLang 成为人们已在使用的工具的原生输出。Docling 和 ABBYY 的 FineReader Engine(一款光学字符识别软件开发工具包)已经可以输出 DocLang。一旦你现有的解析器就能生成标准格式,采用就不再是迁移项目。
第三步,持续用事实说话。OTSL 和 SmolDocling 已经证明,更好的表示方式不是审美问题,它直接提升模型准确性、降低成本。开发者采用的是让系统可量化变得更好的格式,我们要用数据说话。随着独立实现不断增加,DocLang 自然会成为默认选择——就像 JSON 一样,没人刻意决定使用它,它就这样成为了标准。
DocLang 最终会让 Docling 走向过时吗?
完全不会,两者是互补关系。Docling 是将真实世界中杂乱的文件转化为结构化输出的工具,DocLang 是表达这一输出的标准化格式。如果说有什么变化,那就是 DocLang 让 Docling 更有价值——因为 Docling 的输出现在是一个开放标准,任何下游系统都可以使用,其他工具也可以生成。标准的意义在于没有单一工具对其拥有所有权。文档转换器与它所输出的格式之间,不存在竞争关系,就像编译器与机器码规范之间并不对立一样。
Q&A
Q1:DocLang 是什么?和普通 XML 有什么区别?
A:DocLang 是 IBM 研究团队推出的一种基于 XML 的标记语言子集,专为让 AI 模型理解文档内容而设计。与普通 XML 不同,DocLang 对语法词汇做了严格约束(上限约 1000 个 Token),每个语义标签直接映射到一个大语言模型 Token,结构清晰、无歧义。它还要求同一份文档只能有一种编码形式,保证输出可训练、可验证,而普通 XML 没有这一约束。
Q2:DocLang 和 Docling 是什么关系?
A:两者是互补关系,而非竞争关系。Docling 是一个开源文档解析工具,负责将 PDF、PPT、XLSX、MP4 等格式的非结构化数据转化为结构化内容;DocLang 则是承载这些结构化内容的标准化格式。Docling 生成 DocLang,DocLang 让 Docling 的输出可以被任何下游系统消费,类似于编译器与机器码规范的关系。
Q3:DocLang 能降低 AI 推理成本吗?是怎么实现的?
A:可以。DocLang 通过更紧凑的 Token 表示方式,减少模型在解析文档结构上浪费的计算资源。每个语义标签对应一个 Token,模型无需学习复杂的标记解析规则,可以将更多能力集中在内容理解上。IBM 此前基于类似思路开发的 OTSL 和 SmolDocling 已经验证了这一方向——SmolDocling 仅有 2.56 亿参数,但能与体量大 27 倍的模型媲美。
