文章
使用markitdown将文件转换为markdown类型
安装python依赖
pip install 'markitdown[all]'使用方式:
from markitdown import MarkItDown
# 初始化
md = MarkItDown()
# 转换 PDF
# result_pdf = md.convert(r'inputs/pdf2md.pdf')
# print('PDF内容:', result_pdf)
result_doc = md.convert(r'inputs/doc2md.docx')
print('doc内容:', result_doc)保存md文件
from markitdown import MarkItDown
import os
def convert_to_md(input_file, output_dir="output"):
"""将文档转换为markdown 并保存"""
os.makedirs(output_dir, exist_ok=True)
# 转换
md = MarkItDown()
result = md.convert(input_file)
# 生成输出文件名
base_name = os.path.splitext(os.path.basename(input_file))[0]
output_file = os.path.join(output_dir, base_name + '.md')
# 保存
with open(output_file, 'w', encoding='utf-8') as f:
f.write(result.text_content)
print(f"已保存:{output_file}")
return output_file
if __name__ == '__main__':
# convert_to_md('inputs/doc2md.docx')
convert_to_md('inputs/pdf2md.pdf')
批量操作
from markitdown import MarkItDown
import os
from pathlib import Path
def batch_convert(input_dir=".", output_dir="output"):
"""批量转换目录下所有支持的文档"""
# 支持的文件格式
supported_extensions = {'.pdf', '.docx', '.xlsx', '.pptx', '.xls', '.ppt'}
# 创建输出目录
os.makedirs(output_dir, exist_ok=True)
# 初始化
md = MarkItDown()
# 统计
success_count = 0
fail_count = 0
# 遍历目录
for file_path in Path(input_dir).iterdir():
if file_path.suffix.lower() in supported_extensions:
try:
print(f"⏳ 处理中:{file_path.name}")
# 转换
result = md.convert(str(file_path))
# 保存
output_file = Path(output_dir) / f"{file_path.stem}.md"
with open(output_file, 'w', encoding='utf-8') as f:
f.write(result.text_content)
print(f"✅ 成功:{file_path.name} → {output_file.name}")
success_count += 1
except Exception as e:
print(f"❌ 失败:{file_path.name} - {str(e)}")
fail_count += 1
print(f"\n📊 统计:成功 {success_count} 个,失败 {fail_count} 个")
# 使用
batch_convert("documents", "markdown_output")分割pdf文件
安装依赖
pip install pikepdfimport pikepdf
import os
from pathlib import Path
def split_pdf_by_group(input_path, pages_per_group=2, output_dir="output"):
"""
将 PDF 按指定页数分组保存
Args:
input_path: 输入的 PDF 文件路径
pages_per_group: 每组页数(默认2)
output_dir: 输出目录
"""
os.makedirs(output_dir, exist_ok=True)
base_name = Path(input_path).stem
with pikepdf.Pdf.open(input_path) as pdf:
total_pages = len(pdf.pages)
print(f"📄 总页数:{total_pages},每组 {pages_per_group} 页")
for i in range(0, total_pages, pages_per_group):
start = i + 1
end = min(i + pages_per_group, total_pages)
new_pdf = pikepdf.Pdf.new()
# 注意:切片提取
for page_num in range(i, end):
new_pdf.pages.append(pdf.pages[page_num])
output_path = Path(output_dir) / f"{base_name}_{start}-{end}.pdf"
new_pdf.save(output_path)
print(f"✅ {output_path.name} (第 {start}~{end} 页)")
print(f"\n🎉 完成!共生成 { (total_pages + pages_per_group - 1) // pages_per_group } 个文件")
# 使用:每3页一组
# split_pdf_by_group("文档.pdf", pages_per_group=3)处理完 PDF 后,可以接着用 MarkItDown 转换:
from markitdown import MarkItDown
# 分割后,转换每个小文件
md = MarkItDown()
for pdf_file in Path("output").glob("*.pdf"):
result = md.convert(str(pdf_file))
# 保存为 Markdown
with open(f"md_output/{pdf_file.stem}.md", 'w', encoding='utf-8') as f:
f.write(result.text_content)
print(f"✅ 已转换:{pdf_file.name}")