docx-to-md-with-images

Polar Sponsor
爱发电 赞助
.NET 9.0

将 Word(.docx)及其他文档格式转换为 Markdown。主要面向 .docx 文件,支持完整的图片提取、内联格式保留及文档结构还原。同时通过 markitdown 回退机制,支持 PDF、PPTX、XLSX、HTML、CSV、JSON 和 XML 格式。

DOCX 到 Markdown 并带有图像

功能概述

DOCX 到 Markdown 并带有图像是一项面向实际任务的技能,主要用于将 Word (. docx) 文档转换为 Markdown , 并带有正确的图像提取、 内置格式保存和相对路径引用;另外, 也支持其它文档。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

DOCX 转 Markdown(含图片支持)

将 Word(.docx)文档转换为 Markdown,支持图片正确提取、内联格式保留以及相对路径引用。同时通过回退机制支持其他文档格式。

适用场景

  • 用户要求将 .docx 文件转换为 .md / markdown 格式
  • 用户希望保留文档中的图片
  • 用户需要高保真转换,包括标题、表格、列表及各类格式化内容

前提条件

  • pandoc(主用方案,必需用于高质量 .docx 转换并提取图片)
  • python 及 python-docx 包(当 pandoc 不可用时的回退方案)
  • uvx markitdown(用于其他格式的回退方案:PDF、PPTX、XLSX、HTML、CSV、JSON、XML)

脚本说明

所有脚本均位于相对于本技能文件的 scripts/ 目录下。请始终使用这些脚本,切勿编写内联代码。

脚本 用途
scripts/install_pandoc.py 在 Windows/macOS/Linux 上自动安装 pandoc
scripts/fix_images.py 将 img/media/ 目录扁平化至 img/,并修复 Markdown 中的图片路径
scripts/docx_to_md.py 基于 python-docx 的 .docx → .md 回退转换器(无需 pandoc)

DOCX 转换工作流

步骤 1:检查 pandoc 是否已安装

pandoc --version

步骤 1b:若缺失则自动安装 pandoc

若未找到 pandoc,请运行安装脚本,并向用户显示显著提示信息:

py scripts/install_pandoc.py

安装完成后,请验证:

pandoc --version

重要提示:成功安装 pandoc 后,必须明确告知用户:

“pandoc 已自动安装。您可能需要重启终端以使 PATH 更改生效。如果执行 pandoc --version 仍失败,请重启终端后重试。”

若自动安装失败,请显示以下消息:

“无法自动安装 pandoc,请手动安装:

  • Windows:从 https://github.com/jgm/pandoc/releases/latest 下载安装包
  • macOS:brew install pandoc
  • Linux:sudo apt install pandoc”

步骤 2:使用 pandoc 提取图片并完成转换

# 创建 img 目录
mkdir -p ./img

# 执行转换并提取媒体文件
pandoc input.docx --extract-media="./img" -o output.md -f docx -t gfm

步骤 3:整理提取的图片并修正路径

运行内置脚本 —— 该脚本可同时完成目录扁平化与路径修正:

py scripts/fix_images.py output.md

该脚本执行以下操作:

  1. 将 ./img/media/ 目录结构扁平化为 ./img/
  2. 将 HTML 格式的 标签转换为标准 Markdown 格式 ![](./img/...)
  3. 将绝对路径替换为相对路径
  4. 移除图片周围的冗余

    标签及 style 属性

步骤 4:验证结果

# 应仅显示 ./img/ 开头的路径
grep -oP '![.*?](.*?)' output.md

# 应返回 0(表示无残留的  标签)
grep -c '

回退方案:python-docx(当 pandoc 不可用时)

当 pandoc 无法安装时,可使用内置的 python-docx 脚本:

py scripts/docx_to_md.py input.docx output.md

该脚本支持:

  • 标题层级(Heading 1/2/3 → #/##/###)
  • 通过 run 检测实现粗体/斜体等内联格式
  • 通过 w:numPr XML 元素支持嵌套列表
  • 表格 → Markdown 表格格式
  • 自动跳过 TOC 条目(样式为 toc 1、toc 2 等)

真实场景转换经验总结:

  • uvx markitdown 在 Windows 上可能因 onnxruntime DLL 加载失败而报错
  • python-docx 稳定可靠,但不支持图片提取;如需保留图片,请务必使用 pandoc

其他格式转换(markitdown 回退方案)

对于非 .docx 格式,在可用时优先使用 uvx markitdown:

# PDF
uvx markitdown input.pdf -o output.md

# PowerPoint
uvx markitdown input.pptx -o output.md

# Excel
uvx markitdown input.xlsx -o output.md

# HTML、CSV、JSON、XML
uvx markitdown input.html -o output.md
uvx markitdown input.csv -o output.md

# 使用文件类型提示(适用于 stdin 输入)
cat document | uvx markitdown -x .pdf > output.md

# 对复杂 PDF 使用 Azure Document Intelligence
uvx markitdown scan.pdf -d -e "https://your-resource.cognitiveservices.azure.com/"

注意:markitdown 在部分 Windows 系统上可能因 onnxruntime DLL 问题而失败。此时请改用格式专用替代方案(例如:PPTX 使用 python-pptx,XLSX 使用 openpyxl)。

输出结构

project/
├── input.docx          # 源文档
├── output.md           # 转换后的 Markdown 文件
└── img/                # 提取的图片(仅 pandoc 方案生成)
    ├── image1.png
    ├── image2.jpeg
    └── ...

注意事项

  • 强烈推荐使用 pandoc 进行 .docx 转换 —— 它对标题、表格、列表、代码块及各类格式的支持远优于手工解析的 python-docx 方案
  • .emf 格式(Windows 图元文件)在多数 Markdown 查看器中不受支持;如有需要,建议转换为 PNG 格式
  • 图片文件名沿用 Word 内部命名规则(如 image1.png、image2.png 等)
  • 始终使用 gfm(GitHub Flavored Markdown)作为输出格式,以获得最佳兼容性
  • 在 Windows 上,请通过 py script.py 运行 Python 脚本,而非直接在 PowerShell 中内联执行(避免转义问题)
  • python-docx 回退方案支持:标题层级、粗体/斜体格式、嵌套列表、表格,并自动跳过 TOC 条目

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习