大家好,我是章北海
我现在连写文档也要用
Cursor
了,
Word
转
Markdown
是刚需
分享一个上周写的
Python
脚本,用于将
Microsoft Word
文档(
.docx
)转换为
Markdown
格式,同时保留文档中的格式和图片。
from docx import Document
from PIL import Image
import os
from base64 import b64encode
from docx.shape import InlineShape
def docx_to_markdown(docx_path, output_dir):
# 创建输出目录
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 创建 images 子目录
images_dir = os.path.join(output_dir, 'images')
if not os.path.exists(images_dir):
os.makedirs(images_dir)
# 打开 docx 文件
doc = Document(docx_path)
markdown_content = []
# 处理每个段落
for para in doc.paragraphs:
# 提取文本
text = para.text
# 处理段落中的图片
for run in para.runs:
if run._element.drawing_lst:
for drawing in run._element.drawing_lst:
# 获取图片关系 ID
rid = drawing.xpath('.//a:blip/@r:embed')[0]
image = doc.part.related_parts[rid]
# 保存图片
image_filename = f'image_{len(os.listdir(images_dir))}.png'
image_path = os.path.join(images_dir, image_filename)
with open(image_path, 'wb') as f:
f.write(image.blob)
# 添加 markdown 图片语法
text += f'\n\n'
# 添加到 markdown 内容
markdown_content.append(text)
# 写入 markdown 文件
output_path = os.path.join(output_dir, 'output.md')
with open(output_path, 'w', encoding='utf-8') as f:
f.write('\n\n'.join(markdown_content))
return output_path
# 使用示例
docx_path = '你的文档路径.docx'
output_dir = '输出目录路径'
markdown_file = docx_to_markdown(docx_path, output_dir)
脚本功能
-
文本转换
:将
docx
文档中的段落文本转换为
Markdown
格式。
-
图片处理
:提取文档中的图片并保存到
images
文件夹中,同时在
Markdown
文件中插入相应的图片引用。
在运行此脚本之前,请确保已安装以下软件:
安装
-
-
使用以下命令安装所需的
Python
库:
pip install python-docx Pillow
使用方法
-