You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python代码获取PDF文件中每个段落的字体大小?

提取PDF段落字体大小的实现方案

你之前使用的page.getText()默认仅返回纯文本内容,不会携带字体大小等样式属性。你用的fitz(PyMuPDF)库本身就支持提取结构化的带样式文本数据,只需调整提取参数即可实现需求:

基于fitz的实现代码

import fitz

filepath = '/home/user/Downloads/abc.pdf'

with fitz.open(filepath) as doc:
    # 用于存储全文档的<字体大小, 段落内容>对应关系,可按需修改存储结构
    para_with_font = []
    for page in doc:
        # 传入"dict"参数获取包含样式信息的结构化文本
        page_dict = page.get_text("dict")
        for block in page_dict["blocks"]:
            # 过滤非文本类块(如图片、矢量图等)
            if block["type"] != 0:
                continue
            for line in block["lines"]:
                for span in line["spans"]:
                    # span为最小的同样式文本单元,同一span内字体大小完全一致
                    current_size = span["size"]
                    current_text = span["text"].strip()
                    if not current_text:
                        continue
                    # 合并相同字体大小的连续文本为段落,可根据需求调整合并规则
                    if para_with_font and para_with_font[-1][0] == current_size:
                        para_with_font[-1][1] += " " + current_text
                    else:
                        para_with_font.append([current_size, current_text])

# 输出结果
for font_size, text in para_with_font:
    print(f"字体大小:{font_size:.1f},段落内容:{text}")

补充说明

  • 上述代码的合并逻辑仅做参考,你可以结合PDF的行间距、段落缩进等属性(也可从返回的结构化数据中获取)优化段落合并的准确率。
  • 该方案对常规可编辑PDF的识别准确率较高,扫描件类的图片PDF需要先做OCR才能提取文本和对应样式。

内容的提问来源于stack exchange,提问作者V J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 20:45:07