OpenDoc跟MinerU非常类似,同样是Pipeline多阶段的解析模式.
可见在文档解析领域,即要快,又要准的的情况下,小参数模型pieline模式,比大参数端到端的模型更具有竞争力。
二者最重要的区别在于,MinerU是一个缝合怪,每个独立阶段的连接处,都有很多小技巧,来弥补上下游误差的损失,一旦用自己训练的垂直领域的模型,替换中间某个模型,就很容易放大这些误差,导致垂直领域的解析效果变差。
OpenDoc虽然也是Pipeline模式,但是它只有两个阶段:先做版面分析,后做解析。
版面分析,用的百度PP-DocLayoutV2,模型小识别速度快 解析:用UniRec-0.1B,同时覆盖了:纯文本(单词、行、段落)、公式(单行、多行)、文本与公式混合的内容,以及表格。
两阶段的文档解析,就不会放大每阶段的误差,微调UniRec-0.1B就可以。
UniRec-0.1B
模型架构
图像编码器(Image Encoder):采用FocalNet架构,输入图像保持原始长宽比,最大尺寸960×1408像素。 视觉token化:将空间维度展平为token序列 语义解耦分词器(SDT):将包含层级监督token的文本标签转换为离散token序列 多模态解码器(Decoder):6层Transformer,带交叉注意力模块
技术创新一:分层监督训练( HST)
传统的序列生成模型将文档内容视为扁平的token序列,忽略了文本固有的层级结构(行内关系、段落边界)。
这种简化限制了模型对空间布局表征的学习能力。
例如,一个段落内的多行文本之间存在明确的阅读顺序和紧密的语义关联,而段落之间的分割则意味着主题转换。
方案:
HST通过在标签序列中显式插入层级监督token,引导模型学习结构化的空间依赖 <|ln|>(Line Break Token):表示段落内的换行,用于分隔同一段落中的不同文本行<|pn|>(Paragraph Break Token):表示段落结束,用于分隔不同段落 在训练阶段,这些特殊token作为监督信号强制模型预测结构边界;在推理阶段,<|ln|>被移除,<|pn|>被替换为两个换行符\n\n,从而准确重建文档的段落结构。
HST能够有效捕获跨行、跨段落的结构依赖,尤其对复杂布局文档效果显著。
技术创新二:语义解耦分词器(SDT)
现有方法(如Dolphin Tokenizer)通常在混合语料上训练单一的BPE分词器,导致文本token与公式token共享嵌入空间。
例如:字符串"sum"、"infty"、"frac"在文本语境中是普通词汇,在公式语境中则是命令词,但耦合分词器赋予它们相同的embedding。
对于大模型,这种歧义可通过上下文消歧;但对于0.1B参数的小模型,容量限制使其难以有效区分,导致严重的语义混淆和识别错误。
方案
SDT采用完全分离的训练策略:
独立训练:分别在纯文本语料和公式语料上训练两个独立的分词器 词汇合并:将公式分词器的token以"特殊token"形式合并入文本分词器,排除已存在于文本词汇表中的重复项 语义隔离:确保相同字符串在文本和公式模态下拥有截然不同的token ID和embedding
在SDT中,"sum"、"infty"等词在文本和公式模态下拥有独立的embedding向量,从根本上消除了跨模态语义纠缠。
UniRec的特点
准确率对比:
推理速度: 相比PaddleOCR-VL:5.1倍加速(block级),5.1倍加速(page级) 相比MinerU2.5:6.9倍加速(page级) 相比Dolphin-1.5:2.1倍加速
小结
在对性能、速度有极致要求的情况下,pipeline是非常有竞争优势的,但是链路不宜太多,2层足以。 在确定用小模型解析的情况下,语义解耦很重要,能有效防止在解码时产生歧义,导致解码错误 通过精细的数据工程、任务特定的架构设计和针对性的训练策略,小模型完全可以在特定垂直领域超越通用大模型的性能
