乐于分享
好东西不私藏

死磕1个月,我们造了个Word公式渲染引擎

死磕1个月,我们造了个Word公式渲染引擎

故事来源于我们研发的 JitWord 协同AI文档。
在持续迭代的2年中,陆陆续续有客户(尤其是科研单位)反馈说我们是否能把 Word文档 中的复杂公式也“拿下”。比如支持在 JitWord 中编写复杂数学公式,并支持将 Word 中的公式一键导入到 JitWord 中,同时支持一键导出到 Word
其实本质上就一句话:全面兼容Word文档中的复杂公式编辑能力
我们认真评估了一下,既然我们要做 “在线版协同 AI Word”解决方案,那么公式编辑是绕不过去的“坎”。
所以我们用了所有的研发资源,死磕了一个月,这个问题终于被我们解决了。

先聊聊一些真实的痛点

在协同AI文档赛道,Word 公式的渲染一致性导入导出无损性协同实时性,一直是行业核心技术痛点。

市面上绝大多数在线文档产品,对Word公式的处理普遍采用“第三方开源引擎中转+图片兜底”的方案,看似低成本落地,却存在无法根治的硬伤:

作为主打AI协同高精度Word兼容的AI文档产品,JitWord 核心定位是实现本地Word与云端协同文档的无缝互通

为彻底解决公式全链路痛点,我们团队耗时1个月,从零自研了 Word公式渲染引擎,摒弃第三方中转方案,基于 Word 官方 OMML 标准实现纯原生解析、像素级渲染、双向无损导入导出,目前已全量上线,支撑 JitWord 所有公式编辑、AI生成、协同同步、文档流转等场景。

先上体验地址:https://next.jitword.com/px-editor/entry

下面我会深度拆解这次我们自研引擎的整体架构设计核心技术原理渲染链路实现导入导出容错方案,复盘一下我们的研发过程中的难点与落地经验。

Word公式的核心本质(OMML标准)

想要完美兼容 Word 公式,首先必须吃透Word公式的底层存储规范。这里给大家科普一个Word底层的知识:

不同于大家熟知的 LaTeX、MathML,Word 所有原生公式均基于 OMML(Office Math Markup Language)XML格式存储,这是微软官方定义的Office数学公式专用标记语言,也是实现无损渲染、无损导出的核心关键。

下面给大家分享一下 OMML 的架构核心特性:

再来分析一下传统方案的致命缺陷

市面上90%的在线文档公式方案,采用「OMML → MathML/LaTeX → 渲染」的中转链路,核心问题在于格式转换不可逆、信息丢失OMML的复杂嵌套结构、专属排版规则无法 1:1 映射到通用MathML/LaTeX,导致渲染偏差、导出失效

同时,第三方引擎未针对协同场景优化,无法适配 JitWord 多人实时编辑、增量同步的核心能力。

基于上面的困境和痛点,我们设计了核心原则:以OMML为唯一数据源,自研全链路解析、渲染、转换引擎,实现Word闭环公式的导入导出和高性能渲染

先给大家看看我们导入导出Word复杂公式的效果:

word原始公式:

导入到 JitWord 后的效果:

基本上 100% 可二次编辑,同时能双向导出到 Word,效果如下:

JitWord自研公式引擎整体架构设计

我们 JitWord 自研公式引擎采用分层模块化架构,高内聚、低耦合,适配渲染、导入、导出、协同、AI联动五大核心场景,整体分为6大核心层级,从底层解析到上层业务实现全链路闭环。

具体实现架构流程我画了一张图,大家可以参考一下:

具体的核心链路实现流程如下:

1. Word导入链路:docx文档解析 → 提取原生OMML公式片段 → 容错清洗 → 构建公式AST → 布局计算 → 混合渲染展示;

2. 在线编辑链路:用户/AI编辑操作 → AST增量更新 → 局部布局重算 → 局部重绘 → 协同广播同步;

3. Word导出链路:在线公式AST → 标准化OMML生成 → 嵌入docx文档结构 → 无损导出原生可编辑Docx公式。

像素级Word同源布局算法

浏览器、设备的默认排版规则存在一定程度的差异,是在线公式渲染与Word视觉不一致的核心原因。为此我们抛弃了浏览器的默认布局模式,自研了一套 Word 同源布局算法,精准复刻 Office 原生排版逻辑,具体设计如下:

    双向无损导入导出核心实现

    导入导出的核心难点我个人认为是:格式可逆、信息无丢失。所以我们基于 AST 结构实现了数据层的格式转换,彻底解决了公式导入导出的闭环痛点:

    1. Word导入优化

    我们在解析docx文档时,精准提取了<m:oMath>原生公式节点,不做格式中转,直接解析成OMML构建渲染树,杜绝中转导致的结构丢失、样式错乱。这样做的好处是,保留了核心的可编辑结构,同时还能提升渲染性能。

    2. Word导出优化

    在线编辑后的公式,不会生成图片或扁平化数据,而是通过AST反向编译生成标准合规的OMML代码,完整还原了公式结构、层级、样式,导出后的Word文档可直接在Office、WPS中二次编辑,与本地创建的公式无任何差异。(目前我们测试了大量的WPS,Office案例,基本都可以相对完美的兼容, 大家也可以测试一下,也可以给我们提供更多测试Case)

    插播一个小Tip,目前我写了一个系统的AI实战学习手册,大家感兴趣的可以学习参考一下:

    3. 多格式适配

    同步支持LaTeXMathML双向转换,适配AI生成公式场景,实现「AI输出LaTeX → 引擎转为OMML原生渲染 → 导出Word无损保存」的全链路,解决AI公式办公流转难题。

    这里不得不分享一下我们用AI生成公式的案例,其实有大量的实际场景可以用上,比如:

    • 老师们出的数学/物理/化学/生物/计算机试卷

    • 科研机构的科研文档,手册

    • 面试官的面试题

    • 更多适合公式的场景

    话不多说,先上案例:

    总结与后续规划

    这次耗时1个月左右的自研Word公式渲染引擎设计之旅,核心价值不在于“重复造轮子”,而在于摆脱第三方引擎的技术枷锁,掌握文档公式处理的底层原生能力

    对于协同AI文档产品而言,公式不是附属功能,而是专业办公、学术创作、教育场景的核心基础设施。

    通过这次自研方案,JitWord 协同AI文档实现了三大核心技术突破:

    1. 摆脱格式中转依赖,实现Word公式原生解析、渲染、流转,达成行业顶级兼容性;

    2. 针对性适配协同与AI场景,形成区别于通用文档产品的核心技术壁垒;

    3. 搭建可迭代的自研引擎架构,为后续公式高级功能迭代奠定底层基础。

    后续我们将持续迭代引擎能力,比如:

    增加公式自动纠错、公式批量格式化、手写公式识别、复杂物理化学公式适配等功能,进一步强化 JitWord 在专业文档、学术创作、AI办公场景的核心竞争力。

    最后补充一嘴

    目前我们 JitKnowAI知识库还已经上线,目前已有200位产品深度体验用户,和我们一起共建这款AI知识库。
    感兴趣的可以加入我们一起“Know”:
    也欢迎关注我们的公众号,会定期分享我们的开源、AI产品创业的最新进展:
    大家在使用 jitknow 的过程中有任何问题,也欢迎随时留言区反馈~
    体验地址:https://aiknow.jitword.com