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

如何用Python库提取Word转PDF文档中的修订红线内容?

提取PDF中Word修订批注的结构化数据问题

Word开启修订模式编辑后转存的PDF,其修订内容(删除/插入文本)在PDF内部是以底层注释对象存储的,并非直接封装成{"inserted": "...", "deleted": "..."}这种结构化格式——这就是你用普通Python库无法直接提取到目标结构的核心原因。

可行的处理方案

  • 先明确PDF中修订对应的注释类型:Word转PDF时,删除的文本通常对应StrikeOut(删除线)类型注释,插入的内容一般会存放在注释的contents字段(弹出批注文本),或关联的Insertion类型注释中。
  • 使用支持PDF注释解析的Python库(如pdfplumber、PyPDF2)提取注释,再匹配同一修订操作的删除/插入内容:
import pdfplumber

def parse_pdf_revisions(pdf_file_path):
    revision_list = []
    with pdfplumber.open(pdf_file_path) as pdf_doc:
        for page in pdf_doc.pages:
            # 遍历页面所有注释,筛选删除线类型的修订
            for annotation in page.annotations:
                if annotation.get("subtype") == "StrikeOut":
                    # 提取被删除的文本(通过注释的 bounding box 定位页面文本)
                    deleted_content = page.within_bbox(annotation["bbox"]).extract_text() or ""
                    # 提取对应插入的内容(通常在注释的contents字段)
                    inserted_content = annotation.get("contents", "").strip()
                    if deleted_content or inserted_content:
                        revision_list.append({
                            "inserted": inserted_content,
                            "deleted": deleted_content.strip()
                        })
    return revision_list

# 调用示例
revisions = parse_pdf_revisions("revised_document.pdf")
print(revisions)
  • 注意事项:不同版本的Word/Acrobat转PDF时,注释的存储格式可能有差异,比如部分场景下插入内容会以独立的TextEdit注释存在,需要额外通过注释的位置、ID来关联对应的删除操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:32:41