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

如何解决Python读取带Confidentiality级别sensitivity labels的docx文件报错问题?

解决带敏感度标签的docx文件读取报错问题

问题场景

使用python-docx库读取带有Confidentiality级别敏感度标签的docx文件时,抛出PackageNotFoundError,报错详情如下:

>>> from docx import Document
>>> doc = Document(file_path)
raph in doc.paragraphs:
    text.append(paragraph.Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/mocellin/chat/.venv/lib/python3.12/site-packages/docx/api.py", line 27, in Document
    document_part = cast("DocumentPart", Package.open(docx).main_document_part)
                                         ^^^^^^^^^^^^^^^^^^
  File "/home/mocellin/chat/.venv/lib/python3.12/site-packages/docx/opc/package.py", line 126, in open
    pkg_reader = PackageReader.from_file(pkg_file)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mocellin/chat/.venv/lib/python3.12/site-packages/docx/opc/pkgreader.py", line 22, in from_file
    phys_reader = PhysPkgReader(pkg_file)
                  ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mocellin/chat/.venv/lib/python3.12/site-packages/docx/opc/phys_pkg.py", line 21, in __new__
    raise PackageNotFoundError("Package not found at '%s'" % pkg_file)
docx.opc.exceptions.PackageNotFoundError: Package not found at '/home/mocellin/doc-padrao/docs/fnord.docx'

原因分析

带有Microsoft敏感度标签的docx文件并非标准的Open XML包结构,而是经过特殊加密包装的容器,python-docx无法识别这种非标准格式,因此抛出包未找到的错误。

解决方案

1. 手动移除敏感度标签

在Microsoft Office中打开目标文件,按以下步骤移除标签后保存:

  • 点击顶部菜单栏「文件」选项
  • 选择「信息」,找到「保护文档」下拉菜单
  • 点击「管理敏感度标签」,选择移除当前标签,保存文件
    处理后的文件可直接用python-docx读取。

2. 转换为普通docx格式

打开带标签的文件后,选择「另存为」,指定格式为「Word 文档 (*.docx)」,部分场景下Office会自动剥离标签包装,生成标准docx文件。

3. 自动化场景:使用Microsoft Graph API

若需保留标签且批量处理,可调用Microsoft Graph API的文件处理接口,获取明文内容后再解析。此方法需配置Azure AD权限,适合企业级自动化流程。


内容的提问来源于stack exchange,提问作者Márcio Mocellin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:57:22