如何将 PDF 转换为 Markdown:4 种实用方法

当你需要把 PDF 内容导入 Obsidian 等个人知识库、整理后交给大语言模型(LLM)分析,或者希望将不易编辑的 PDF 转成更轻量、便于修改的文本格式时,Markdown(.md)通常是一个合适的选择。不过,不同 PDF 的结构差异很大。有些文件包含可直接提取的文本,有些则是扫描件;有些排版简单,有些还包含多栏内容、公式和复杂表格。因此,转换效果不仅取决于工具,也与 PDF 本身的类型和版式有关。

目前没有一种方法能够稳定处理所有 PDF。选择转换方式时,通常需要考虑文件数量、排版复杂度、是否为扫描文档,以及内容是否涉及隐私。下面整理了 4 种常见的 PDF 转 Markdown 方法,方便你根据实际需求快速选择。

快速选择:哪种 PDF 转 Markdown 方法更适合你?

方法 适用场景 隐私性 主要限制
在线转换工具 临时转换少量且不含敏感信息的 PDF 较低至中等 文件需要上传到第三方服务器
离线桌面应用 私人笔记、合同和内部文档 完全本地运行时较高 对扫描件和复杂排版的处理能力可能有限
Python 库 批量转换或构建自动化处理流程 本地运行时较高 需要一定的编程基础,并配置相关依赖
多模态 AI 扫描件、公式、多栏排版和复杂表格 取决于使用方式 可能产生 API 费用,或需要性能较强的本地 GPU,同时存在识别错误和内容偏差的风险

方法一:使用在线转换工具(操作最方便)

如果只需要转换一两个文件,且 PDF 主要由可复制的普通文本组成,可以直接使用在线 PDF 转 Markdown 工具。无需安装软件或配置运行环境,上传文件后即可完成转换。

常用的在线转换工具

  • CloudConvert 支持多种文件格式转换,通常可以保留基本的标题层级、段落和项目符号。
  • Md-to.com 提供 Markdown 与 PDF、Word、HTML 等格式之间的转换,界面简单,适合临时处理少量文件。

在线将 PDF 转换为 Markdown

  1. 打开在线 PDF 转 MD 工具,例如 CloudConvert。

    打开在线 PDF 转 Markdown 工具

  2. 点击 Select File,上传需要转换的 PDF。

  3. 确认输出格式为 MDMarkdown

  4. 点击 Convert 开始转换。处理完成后,点击 Download 下载生成的 Markdown 文件。

⚠️ 注意事项:

  • 注意文件隐私: 在线工具需要将文件上传到第三方服务器,因此不建议用于处理财务报表、法律合同、个人信息或企业内部资料。涉及敏感内容时,应优先选择离线工具。
  • 留意文件限制: 部分网站会限制文件大小、每日转换次数或同时处理的文件数量。上传大型 PDF 前,建议先查看对应服务的限制说明。

转换结果:
转换完成后,你将获得一个可编辑的 Markdown 文件。对于结构较简单的文本型 PDF,标题、段落和列表通常可以得到保留。
在线 PDF 转换工具生成的 Markdown 文本

方法二:使用离线桌面应用(适合处理敏感文件)

如果 PDF 中包含合同、财务资料、私人笔记或企业内部信息,使用离线工具通常更稳妥。文件可以直接在本地处理,无需上传到第三方服务器,有助于降低敏感信息泄露的风险。

选项 A:MarkItDown GUI

MarkItDown GUI 提供了图形化操作界面,适合不熟悉命令行或不想编写代码的用户。

  1. 打开 GitHub Releases 页面,下载适用于 Windows、Linux 或 macOS 的最新版本。

    从 GitHub 下载 MarkItDown GUI

  2. 解压下载的 ZIP 文件,然后运行 MarkItDown.exe。如果使用 macOS 或 Linux,请打开对应系统的可执行文件。

  3. 在程序窗口中点击 Add Files,选择需要转换的 PDF 文件,然后点击 Convert 生成 .md 文件。

    使用 MarkItDown GUI 将 PDF 转换为 Markdown

⚠️ 转换后得到空白文件?

MarkItDown 主要从 PDF 的文本层中提取内容。如果生成的 Markdown 文件为空,原 PDF 很可能是扫描件,或者页面中只有图片而没有可选中的文字。遇到这种情况,可以使用方法四介绍的 OCR 或多模态 AI 工具进行识别。

选项 B:使用 VS Code 和 MarkItDown 扩展

如果你平时使用 VS Code 编辑 Markdown 或管理项目文件,也可以直接在工作区中完成 PDF 转换,无需切换到其他应用。

  1. 打开 Visual Studio Code

  2. Ctrl + Shift + X 打开扩展市场;在 macOS 中使用 Cmd + Shift + X

  3. 搜索 MarkItDown,然后点击 Install 安装扩展。

    用于将 PDF 转换为 Markdown 的 VS Code MarkItDown 扩展

  4. 通过 File > Open Folder 打开工作文件夹,并将需要转换的 PDF 放入该文件夹。

  5. 在左侧资源管理器中右键单击 PDF 文件,然后选择 MarkItDown: Convert File to Markdown

⚠️ 不要通过双击 PDF 来启动转换。

双击 PDF 只会在编辑器中打开文件,并不会执行 MarkItDown 的转换命令。在某些环境中,还可能显示无法阅读的二进制内容。请通过左侧资源管理器中的右键菜单运行转换。

方法三:使用 Python 库(适合批量转换和自动化)

如果需要处理几十个甚至数百个以文本内容为主的 PDF,逐个上传或手动转换会比较耗时。借助 Python,可以一次读取整个文件夹中的 PDF,并自动生成对应的 Markdown 文件,适合批量整理资料或集成到现有工作流程中。

选项 A:Microsoft MarkItDown

Microsoft MarkItDown 是一款开源工具,适合将结构较简单、包含可提取文本的 PDF 转换为 Markdown。它无需付费,也比较容易集成到 Python 脚本中。

  1. 打开终端,通过 pip 安装 MarkItDown

    1
    pip install "markitdown[all]"
  2. 新建一个 Python 文件,例如 batch_convert.py,并粘贴以下代码。该脚本会查找当前目录中的所有 PDF,并分别生成同名的 .md 文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    import glob
    import os
    from markitdown import MarkItDown

    md = MarkItDown()

    # 获取当前文件夹中的所有 PDF 文件
    pdf_files = glob.glob("*.pdf")

    if not pdf_files:
    print("未找到 PDF 文件。")
    else:
    print(f"准备处理 {len(pdf_files)} 个文件……")

    for pdf_file in pdf_files:
    output_file = os.path.splitext(pdf_file)[0] + ".md"

    try:
    print(f"正在转换:{pdf_file}")
    result = md.convert(pdf_file)

    with open(output_file, "w", encoding="utf-8") as f:
    f.write(result.text_content)
    except Exception as e:
    print(f"转换 {pdf_file} 时出错:{e}")

    print("处理完成。")
  3. 在 PDF 所在目录中运行脚本。转换完成后,每个 PDF 都会生成一个对应的 Markdown 文件。

提示: MarkItDown 主要提取 PDF 中已有的文本层。如果原文件是扫描件或图片型 PDF,可能无法获得完整内容,此时更适合使用后文介绍的 OCR 或多模态 AI 方法。

选项 B:Spire.PDF for Python

如果需要更灵活地控制转换过程,例如只处理指定页码范围,或单独提取 PDF 中的表格数据,可以使用 Spire.PDF for Python 提供的相关 API。

  1. 在终端中安装 Spire.PDF for Python:

    1
    pip install Spire.PDF
  2. 新建一个 Python 文件,并添加以下代码。该示例会遍历当前目录中的所有 PDF,提取指定页码范围,并将结果保存为 Markdown 文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    import glob
    import os
    from spire.pdf.common import *
    from spire.pdf import *

    pdf_files = glob.glob("*.pdf")

    if not pdf_files:
    print("未找到 PDF 文件。")
    else:
    for pdf_file in pdf_files:
    output_file = os.path.splitext(pdf_file)[0] + "_partial.md"
    print(f"正在提取页面:{pdf_file}")

    src_pdf = PdfDocument()
    src_pdf.LoadFromFile(pdf_file)
    extracted_pdf = PdfDocument()

    # 页码索引从 0 开始:1 到 4 表示提取第 2 页至第 5 页
    if src_pdf.Pages.Count > 1:
    extracted_pdf.InsertPageRange(
    src_pdf,
    1,
    min(4, src_pdf.Pages.Count - 1)
    )
    extracted_pdf.SaveToFile(output_file, FileFormat.Markdown)
    else:
    print(f"已跳过 {pdf_file}:文件少于 2 页。")

    src_pdf.Close()
    extracted_pdf.Close()

    print("批量处理完成。")

该示例中的页码索引从 0 开始。1 表示第 2 页,4 表示第 5 页;如果 PDF 不足 5 页,代码会自动提取到最后一页。

⚠️ 开发者提示:

Spire.PDF 评估版可能存在页面处理限制,并在部分输出文件中添加水印。如果需要完整测试相关功能,可以申请免费临时许可证

方法四:使用多模态 AI(适合扫描件和复杂版式)

扫描 PDF、多栏论文、数学公式和复杂表格往往不只是“提取文字”这么简单。传统工具即使能够识别页面中的文本,也可能打乱阅读顺序,丢失公式结构,或无法正确还原表格关系。

多模态 AI 可以结合页面图像和文字内容理解版面结构,再将识别结果整理为 Markdown。对于没有文本层的扫描件,或者排版较复杂的 PDF,这类方法通常更有优势,但输出结果仍需要人工检查。

选项 A:Microsoft MarkItDown 与多模态大模型(云端 API)

Microsoft MarkItDown 可以配合 OCR 插件和支持视觉理解的大语言模型处理扫描文档。例如,连接 OpenAI 的视觉模型后,可以将 PDF 页面作为图像进行分析,并尝试还原标题、段落、列表和其他版面结构。

  1. 安装 MarkItDown、OCR 插件和 OpenAI SDK:

    1
    pip install "markitdown[all]" markitdown-ocr openai
  2. 运行以下 Python 脚本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    from markitdown import MarkItDown
    from openai import OpenAI

    # 初始化 OpenAI 客户端
    client = OpenAI(api_key="your-openai-api-key")

    # 启用插件,并连接支持视觉理解的模型
    md = MarkItDown(
    enable_plugins=True,
    llm_client=client,
    llm_model="gpt-4o",
    )

    # 解析扫描 PDF
    result = md.convert("scanned_report.pdf")

    # 输出转换后的 Markdown 内容
    print(result.text_content)

⚠️ 费用与隐私提示:

使用云端模型时,文档内容可能需要发送到第三方服务器处理。请勿在未确认数据政策和合规要求的情况下上传合同、财务资料、个人信息或企业内部文件。

扫描页通常会以图像形式参与模型处理,页数越多、分辨率越高,API 成本也越高。建议先选择 1~2 页具有代表性的内容测试识别效果,再决定是否处理完整文档。

选项 B:使用本地开源 AI 工具

如果文档包含敏感信息,或者需要长期、批量处理大量 PDF,可以考虑在本地部署文档解析工具或视觉模型。这样能够减少文件上传到云端的需求,也更便于控制处理流程和数据存储位置。

常见选择包括:

  • MinerU(Magic-PDF) 适合处理论文、技术资料等复杂文档,可识别标题、段落、表格和公式,并尽量去除页眉、页脚等重复内容。
  • Marker 适合教材、多栏文档和包含表格的 PDF,可根据版面分析阅读顺序,并输出 Markdown 文本。
  • 通过 Ollama 运行本地视觉模型 可以在本地运行支持图像理解的模型,并编写脚本将 PDF 页面转换为图片后逐页识别。

⚠️ 硬件要求:

本地工具的资源需求差异较大。部分文档解析工具可以仅使用 CPU 运行,但处理速度可能较慢;运行体量较大的视觉模型时,通常需要独立显卡。

如果希望获得较为流畅的处理速度,可以准备支持 CUDA 的 NVIDIA GPU。8GB 至 16GB 显存适合部分中小型模型和常规文档,但具体需求仍取决于模型大小、页面分辨率、并发数量和所启用的功能。

提示: 多模态 AI 可能误识别文字、公式或表格内容。转换完成后,建议重点检查数字、标题层级、公式、表格单元格关系和段落顺序,再将结果用于知识库、检索系统或大语言模型。

PDF 转 Markdown 常见问题及解决方法

1. 多栏内容顺序错乱

双栏或多栏 PDF 在转换时,普通工具可能会按照页面横向顺序读取文本,导致不同栏目的内容混在一起,段落顺序也随之错乱。

遇到这种情况,可以改用支持版面分析的工具,例如多模态 AI 或专门的文档解析程序,让系统先识别各栏的位置和阅读顺序,再生成 Markdown。

2. 图片或图表丢失

Markdown 通常通过文件路径引用图片,而不是像 PDF 一样将所有内容固定在页面中。如果转换后的图片无法显示,请先检查图片文件是否已成功导出,以及 Markdown 中的相对路径是否正确。

有些转换工具只提取文字,不会保留图片和图表。此时需要单独导出相关图片,并使用以下格式重新插入:

1
![图片说明](images/example.png)

3. 出现乱码、异常符号或空白方框

部分 PDF 使用了嵌入字体、自定义编码或较特殊的字符映射,转换后可能出现乱码、缺字或方框。

可以先尝试更换 PDF 解析工具。如果问题仍然存在,可以将页面按扫描件处理,使用 OCR 或视觉 AI 重新识别文字。对于数字、公式和特殊符号,转换后应进行人工核对。

4. 文件过大,无法上传或转换

在线工具通常会限制单个文件的大小、页数或每日转换次数。具体限制可能随平台调整,因此上传前应查看当前服务说明。

如果文件超出限制,可以先拆分 PDF 文件,再分批转换。对于包含敏感信息或需要批量处理的大型文件,更适合使用本地桌面工具或 Python 脚本。

常见问题解答

Q1:将 PDF 转换为 Markdown 后,超链接和目录会保留吗?

A1:普通网页链接通常可以转换为 Markdown 的 [链接文字](URL) 格式,但具体效果取决于转换工具。PDF 目录中跳转到指定页面的内部链接往往无法完整保留,通常需要根据 Markdown 标题重新生成目录或手动修复链接。

Q2:为什么 PDF 转换为 Markdown 后是空白文件?

A2:原 PDF 很可能是扫描件或图片型文档,没有可供普通转换工具提取的文本层。此时需要使用 OCR 或多模态 AI 识别页面中的文字和版面结构。

Q3:在线 PDF 转 Markdown 工具安全吗?

A3:在线工具需要将文件上传到第三方服务器,因此更适合处理公开或不含敏感信息的文档。合同、财务记录、个人数据和企业内部资料,建议使用离线软件或在本地运行转换脚本。

总结

将 PDF 转换为 Markdown 时,最终效果很大程度上取决于原文档的类型。包含清晰文本层、版式简单的 PDF 通常比较容易处理;扫描件、多栏排版、公式和复杂表格则需要 OCR、版面分析或多模态 AI 的辅助。

选择工具时,除了转换质量,还应考虑文件数量、处理成本和数据隐私。无论使用哪种方法,转换完成后都建议检查标题层级、段落顺序、表格、公式、图片链接和关键数字,避免识别错误影响后续编辑或使用。