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

使用python-docx提取docx文本时大小写混淆问题求助

用python-docx提取docx文本时大写字符变为小写的原因与解决办法

问题原因

你遇到的情况核心原因是:原文档里的“大写显示”并非字符本身是大写,而是通过Word的**字体格式(全部大写/小型大写)**实现的。python-docx的paragraph.text提取的是文档底层存储的原始文本,而非应用格式后的显示效果,所以会出现原显示大写、提取后变小写的情况。

比如你示例中的ПОРЯ́ДОК,在Word里大概率是选中Поря́док后设置了“全部大写”格式——底层文本仍然是Поря́док,但Word通过格式让它显示为大写,提取时自然拿到原始的大小写混合文本。

验证方法

打开原docx文档,选中那个显示为大写的文本,右键选择「字体」,查看「效果」区域是否勾选了「全部大写」或「小型大写字母」。如果是,就确认是这个问题。

解决办法

要提取符合显示效果的文本,需要遍历段落中的每个run(Word中一段文本可能由多个不同格式的片段组成),检查每个run的字体格式后再转换文本:

from docx import Document

def get_display_text(doc):
    full_content = []
    for paragraph in doc.paragraphs:
        para_content = []
        for run in paragraph.runs:
            current_text = run.text
            # 处理全部大写格式
            if run.font.all_caps:
                current_text = current_text.upper()
            # 若需要处理小型大写,可根据需求调整,俄语场景下一般直接转大写即可
            para_content.append(current_text)
        full_content.append(''.join(para_content))
    return '\n'.join(full_content)

# 使用示例
doc = Document("你的文档路径.docx")
display_text = get_display_text(doc)
print(display_text)

如果原文档中是手动输入的大写字符,paragraph.text会直接提取到大写,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:33:16