大数据

使用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 pikepdf
import 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}")