MinerUSpan格式
概述
MinerUSpan是MinerU将PyMuPDF原始Span数据转换后的内部数据格式,统一了坐标系统、字体属性解析和初步类型标注,是贯穿整个解析流水线的核心数据单元。
关键内容
数据结构定义
@dataclass
class MinerUSpan:
bbox: Tuple[float, float, float, float] # (x0, y0, x1, y1),PDF坐标系
content: str # 文字内容
font_name: str # 字体名
font_size: float # 字号(pt)
font_weight: str # "bold" / "normal"
font_style: str # "italic" / "normal"
color: int # RGB 整数
page_no: int # 所在页码
type: str # "text" / "inline_equation" 等
与PyMuPDF原始Span的关键转换
从PyMuPDF的原始Span到MinerUSpan经历三个关键转换:
- 坐标归一化:PDF坐标(左下原点)→ 图像坐标(左上原点),处理PDF坐标系的Y轴翻转
- 字体解析:从字体名推断是否中文、是否等宽;将flags位掩码解码为
font_weight和font_style字符串 - 初步类型标注:检测等宽字体→可能是代码;检测特殊字体→可能是行内公式
在流水线中的位置
MinerUSpan是MinerU七层流水线中第二层(底层PDF解析)的输出产物,后续层(布局检测、内容识别、分类标注、排序)都基于此格式进行扩展和标注。最终sorted_blocks中的每个内容块都包含经过多层处理的MinerUSpan集合。
设计动机
PyMuPDF原始数据存在噪声(超短碎片、水印、重叠Span),且坐标系与视觉模型不一致。MinerUSpan格式通过: - 统一坐标参照系统 - 标准化字体属性表示 - 增加页码和类型字段 为后续处理提供干净、一致的数据基础。
来源
- raw/assets/MinerU/minerU_02_pdf_parsing.md — MinerU 深度解析系列 · 第二篇:底层 PDF 解析引擎