Type: concept
Confidence: 0.80
Created: 2026-04-18
Updated: 2026-04-18
Tags: 技术文档处理PDF

Span层级结构

概述

PyMuPDF的文字提取遵循Page → Block → Line → Span → Char五级嵌套结构,其中Span(具有相同字体属性的连续文字片段)是MinerU最核心的处理单元。

关键内容

五级嵌套结构

Page(页面)
└── Block(块:连续文字或图像区域)
    └── Line(行:同一基线上的文字)
        └── Span(片段:同一字体、大小、颜色的连续文字)
            └── Char(字符,rawdict模式下可获取)

Span的核心属性

每个Span携带丰富的元信息: - text:文字内容 - bbox:边界框 (x0, y0, x1, y1) - font:字体名 - size:字号(pt) - flags:位掩码,标识粗体/斜体/衬线/等宽/上标 - color:文字颜色(RGB整数) - origin:基线坐标

flags位掩码解码

FLAG_SUPERSCRIPT = 1    # 上标
FLAG_ITALIC      = 2    # 斜体
FLAG_SERIFED     = 4    # 衬线字体
FLAG_MONOSPACED  = 8    # 等宽字体
FLAG_BOLD        = 16   # 粗体

MinerU利用粗体+字号信息推断标题层级,这是后续分类系统的重要输入。等宽字体flag可用于初步识别代码块。

原始Span的噪声问题

PyMuPDF提取的原始Span存在多种噪声: 1. 超短Span碎片化:单字符或空格级别的过度分割,需同行合并 2. 水印文字:旋转、半透明、大面积覆盖,通过颜色和旋转角度检测 3. 页眉页脚:页面顶部/底部固定区域,多页重复出现 4. 重叠Span:部分PDF生成工具产生的内容重复,需去重

MinerU在接收原始Span后需要清洗这些噪声,然后转换为内部MinerUSpan格式

来源

相关