一、概述

docx2markdown是基于Python开发的文档格式双向转换工具,支持Microsoft Word(.docx)与Markdown(.md)格式的相互转换。该工具专注于保留基础文档结构,适用于技术文档、简单报告等格式转换场景。docx2markdown是pypandoc的一个替代方案。

二、技术原理

1. 架构设计

XML解析
序列化
反序列化
DOCX生成
Word文档
抽象文档树
Markdown

2. 核心组件

​​python-docx​​: 处理Word文档的读写操作

​​markdown​​: 解析和生成Markdown语法

​​lxml​​: XML处理引擎

​​PIL​​: 图像格式处理(可选)

3. 转换逻辑

​​DOCX → Markdown​​

1. 解析.docx文件的XML结构

2. 提取段落、样式、列表、表格等元素

3. 转换为对应的Markdown语法元素

4. 处理内嵌图片(转换为Base64或文件存储)

​​Markdown → DOCX​​

1. 解析Markdown语法树

2. 创建Word文档对象

3. 应用样式映射(标题→Heading样式等)

4. 生成标准.docx文件结构

三、功能特性

功能支持程度备注
段落文本✔️保留基本段落结构
标题样式✔️支持H1-H6
无序列表✔️支持嵌套列表
有序列表✔️数字序列自动生成
表格✔️基础表格结构
超链接✔️保留链接文本和URL
图片嵌入✔️需配置存储路径
代码块✔️支持```语法
粗体/斜体✔️​​bold​​和italic
混合格式⚠️部分复杂样式可能丢失

四、安装方法

# 基础安装
pip install docx2markdown
# 包含测试依赖
pip install docx2markdown[testing]

使用uv:

# 基础安装
uv add docx2markdown
# 包含测试依赖
uv add docx2markdown[testing]

五、使用示例

1. Python API

import docx2markdown
from pathlib import Path

def convert_docx_to_md(input_path, output_path):
    """Word转Markdown示例"""
    try:
        if not Path(input_path).exists():
            raise FileNotFoundError(f"输入文件不存在: {input_path}")
            
        docx2markdown.docx_to_markdown(
            input_path, 
            output_path
        )
        print(f"转换成功: {output_path}")
    except Exception as e:
        print(f"转换失败: {str(e)}")

def convert_md_to_docx(input_path, output_path):
    """Markdown转Word示例"""
    try:
        docx2markdown.markdown_to_docx(
            input_path,
            output_path
        )
        print(f"转换成功: {output_path}")
    except Exception as e:
        print(f"转换失败: {str(e)}")

# 使用示例
convert_docx_to_md("./data/docx2markdown技术说明文档.docx", "./data/docx2markdown技术说明文档.md")
convert_md_to_docx("readme.md", "documentation.docx")

2. 命令行工具

# DOCX转Markdown
docx2markdown input.docx output.md

# Markdown转DOCX
docx2markdown input.md output.docx

六、注意事项

1. 复杂格式限制

  • 不支持Word文档中的分栏布局
  • 表格合并单元格可能转换异常
  • 数学公式需要特殊处理

2. 性能建议

  • 单个文档建议不超过50页
  • 图片数量超过20张时建议启用独立存储目录

3. 兼容性说明

  • 基于Office Open XML标准
  • 推荐使用Microsoft Word 2016+验证结果

七、参考资源

1. 官方PyPI页面

2. GitHub仓库

3. python-docx文档

附:典型转换流程

User App DOCX MD 发起转换请求 解析XML结构 返回文档元素 生成MD语法树 写入文件系统 解析语法树 创建DOCX对象 写入Open XML alt [DOCX→MD] [MD→DOCX] 返回转换结果 User App DOCX MD
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐