Type: concept
Confidence: 0.85
Created: 2026-04-16
Updated: 2026-04-18
Tags: 文档解析AI公式识别文档处理

公式识别

概述

公式识别(Formula Recognition)将数学公式图像映射为 LaTeX 字符串——一种包含嵌套结构的领域特定语言(DSL),比普通 OCR 困难得多。

关键内容

为什么公式识别比 OCR 难得多?

普通文字是一维序列:字符从左到右线性排列,OCR 的 CTC 解码天然适合。

数学公式是二维树状结构: - 上标/下标关系(非线性):∫₀^∞ - 二维网格结构矩阵 ⎛a b⎞⎝c d⎠ - 竖直排列关系:分数 n! / k!(n-k)!

普通文字识别模型把图像映射为字符序列,而公式识别需要把图像映射为 LaTeX 字符串,包含希腊字母命令(\frac\cdot)、嵌套结构(分子嵌套在 \frac 内)、特殊符号和精确的括号匹配。这需要序列到序列(Seq2Seq的生成模型,而非简单的 CTC 解码。

行内公式 vs 独立公式

MinerU 区分两种公式类型:

独立公式(Display Equation): - 单独占一行(或多行),通常有编号 "(1)" - DocLayout-YOLO 检测为 equation 类别 - 处理:裁剪整个 equation 框区域 → UniMERNet 识别 → 输出 $$...$$

行内公式(Inline Equation): - 嵌入在文字段落内部,通常比较短 - 布局检测不会单独标出(包含在 text 框内) - 处理更复杂,需要先检测行内公式的位置

行内公式检测:一个更难的子问题

文字型 PDF:行内公式通常以特殊数学字体出现(CMMI、CMSY、Symbol 字体)。MinerU 通过字体名称检测:

MATH_FONT_KEYWORDS = ["CMMI", "CMSY", "CMR", "MSAM", "MSBM", "mtmi", "Symbol", "MT-Symbol"]

检测到数学字体 Span 后,标记为行内公式候选,裁剪该区域送入 UniMERNet

扫描件:无字体信息。MinerU 使用一个行内公式检测模型(基于轻量 YOLO 变体)对文字行图像进行逐行扫描,检测公式区域的边界框。

UniMERNet 方案

UniMERNetMinerU 第四层流水线中的公式识别引擎: - 采用 Swin Transformer 编码器 + Transformer 解码器的 Image-to-Sequence 架构 - 自回归逐 token 生成 LaTeX,Beam Search(Beam Size = 4)提升质量 - 命令级词表(约 600 个 token):\frac 作为单一 token,大幅提升效率 - LaTeX 后处理:语法修复 + sympy 渲染验证 - 输出标准 Markdown 格式:行内 $...$,独立 $$...$$

与同类工具对比

工具 公式 → LaTeX
pypdf/pdfminer
Marker ⚠️ 有限
Nougat
MinerUUniMERNet ✅ 专项优化

来源

相关