TableMaster
概述
TableMaster 是 PaddleOCR PP-Structure 模块中的表格结构识别模型,将表格识别转化为序列生成问题:输入表格图像,自回归生成 HTML token 序列 + 预测每个单元格的边界框(bbox)。是 MinerU 第四层流水线的核心表格引擎。
关键内容
架构设计
TableMaster 采用 ResNet + FPN(特征提取)→ Transformer Decoder(自回归生成) 的架构:
- 特征提取:ResNet + FPN 从表格图像中提取多尺度特征图,加入位置编码
- Transformer Decoder:自回归地生成 HTML token 序列
- 双任务输出头:
- Token 分类头:
nn.Linear(hidden_dim, vocab_size)— 预测每个位置的 HTML token - Bbox 回归头:
nn.Linear(hidden_dim, 4)— 预测每个单元格的边界框(x0, y0, x1, y1)
HTML 词表设计
TableMaster 的词表包含 HTML 相关的特殊 token,覆盖表格结构的各种情况:
| Token | 用途 |
|---|---|
<BOS> / <EOS> |
序列起止标记 |
<td> / </td> |
单元格起止 |
<tr> / </tr> |
行列起止 |
<td colspan="2"> / <td colspan="3"> |
跨列单元格 |
<td rowspan="2"> / <td rowspan="2" colspan="2"> |
跨行/跨行+跨列 |
<b> / <i> |
粗体/斜体(表头常见) |
双阶段表格识别
TableMaster 在 MinerU 中是第一阶段(结构识别)的核心:
阶段一:表格结构识别(TableMaster)
输入:表格图像
输出:HTML 格式的表格结构(含空 <td></td> 占位)+ 每个单元格的 bbox
阶段二:表格单元格填充
文字型 PDF:PyMuPDF Span 坐标对应
扫描件:OCR 逐单元格识别
输出:含文字的完整表格
跨单元格处理
TableMaster 通过 colspan / rowspan token 表达合并单元格关系。MinerU 在转换为 Markdown 时做降级处理(Markdown 不支持跨单元格):跨列单元格复制内容到多个列,用 ↑ 标记重复,并在 JSON 输出中保留完整 HTML 结构。
三线表支持
学术论文常见的三线表(无竖线,仅顶线、表头分隔线、底线)对算法是极大挑战。TableMaster 通过学习到的特征理解"列对齐",即使无竖线也能识别列边界,表头行粗体特征帮助确定列数。
输出格式
TableMaster 经 MinerU 管道后输出三种格式: - Markdown:通用表格格式,跨单元格做降级处理 - HTML:完整结构,保留 colspan/rowspan - JSON:机器可读,含 bbox、cell_data、page_no 等元信息
与同类工具对比
| 工具 | 表格结构还原 |
|---|---|
| pypdf/pdfminer | ❌ |
| Marker | ⚠️ |
| Nougat | ❌ |
| TableMaster(MinerU) | ✅ 专项优化 |
来源
- raw/assets/MinerU/minerU_01_architecture.md — MinerU 深度解析系列 · 第一篇:整体架构全景
- raw/assets/MinerU/minerU_06_table.md — MinerU 深度解析系列 · 第六篇:表格识别系统