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

寻求可提取PDF文本及左上角坐标的Python模块(返回bounding boxes列表)

可提取PDF文本及左上角坐标的Python模块推荐

有两个常用的Python模块能满足你的需求,支持完整解析PDF文件,并返回包含文本、左上角坐标的边界框列表:

PyMuPDF(fitz)

这是一款高效的PDF处理工具,默认返回的文本边界框信息可直接转换为你需要的格式。需要注意的是,它的坐标原点在页面左下角,需通过页面高度减去边界框的bottom值,转换为左上角坐标。

示例代码:

import fitz

def extract_text_with_coords(pdf_path):
    text_boxes = []
    doc = fitz.open(pdf_path)
    for page in doc:
        page_height = page.rect.height
        blocks = page.get_text("dict")["blocks"]
        for block in blocks:
            if block["type"] == 0:  # 仅处理文本块
                for line in block["lines"]:
                    for span in line["spans"]:
                        # 转换为左上角坐标:top = 页面高度 - 边界框bottom值
                        left = span["bbox"][0]
                        top = page_height - span["bbox"][3]
                        text_boxes.append({
                            "left": round(left, 2),
                            "top": round(top, 2),
                            "text": span["text"]
                        })
    doc.close()
    return text_boxes

# 使用示例
result = extract_text_with_coords("your_file.pdf")
print(result)

pdfplumber

这个模块专为PDF文本提取设计,坐标原点默认在页面左上角,无需额外转换就能直接获取你需要的left、top值,使用起来更直观。

示例代码:

import pdfplumber

def extract_text_with_coords(pdf_path):
    text_boxes = []
    with pdfplumber.open(pdf_path) as pdf:
        for page in pdf.pages:
            words = page.extract_words(x_tolerance=1, y_tolerance=1)
            for word in words:
                text_boxes.append({
                    "left": round(word["x0"], 2),
                    "top": round(word["top"], 2),
                    "text": word["text"]
                })
    return text_boxes

# 使用示例
result = extract_text_with_coords("your_file.pdf")
print(result)

两个模块都支持全PDF解析,无需指定特定区域。pdfplumber的坐标逻辑更贴合你的需求,PyMuPDF则在处理大文件时速度更有优势。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:32:49