如何将 PDF 转换为 Markdown:4 种实用方法
如何将 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
打开在线 PDF 转 MD 工具,例如 CloudConvert。
点击 Select File,上传需要转换的 PDF。
确认输出格式为 MD 或 Markdown。
点击 Convert 开始转换。处理完成后,点击 Download 下载生成的 Markdown 文件。
⚠️ 注意事项:
- 注意文件隐私: 在线工具需要将文件上传到第三方服务器,因此不建议用于处理财务报表、法律合同、个人信息或企业内部资料。涉及敏感内容时,应优先选择离线工具。
- 留意文件限制: 部分网站会限制文件大小、每日转换次数或同时处理的文件数量。上传大型 PDF 前,建议先查看对应服务的限制说明。
转换结果:
转换完成后,你将获得一个可编辑的 Markdown 文件。对于结构较简单的文本型 PDF,标题、段落和列表通常可以得到保留。
方法二:使用离线桌面应用(适合处理敏感文件)
如果 PDF 中包含合同、财务资料、私人笔记或企业内部信息,使用离线工具通常更稳妥。文件可以直接在本地处理,无需上传到第三方服务器,有助于降低敏感信息泄露的风险。
选项 A:MarkItDown GUI
MarkItDown GUI 提供了图形化操作界面,适合不熟悉命令行或不想编写代码的用户。
打开 GitHub Releases 页面,下载适用于 Windows、Linux 或 macOS 的最新版本。
解压下载的 ZIP 文件,然后运行 MarkItDown.exe。如果使用 macOS 或 Linux,请打开对应系统的可执行文件。
在程序窗口中点击 Add Files,选择需要转换的 PDF 文件,然后点击 Convert 生成
.md文件。
⚠️ 转换后得到空白文件?
MarkItDown 主要从 PDF 的文本层中提取内容。如果生成的 Markdown 文件为空,原 PDF 很可能是扫描件,或者页面中只有图片而没有可选中的文字。遇到这种情况,可以使用方法四介绍的 OCR 或多模态 AI 工具进行识别。
选项 B:使用 VS Code 和 MarkItDown 扩展
如果你平时使用 VS Code 编辑 Markdown 或管理项目文件,也可以直接在工作区中完成 PDF 转换,无需切换到其他应用。
按 Ctrl + Shift + X 打开扩展市场;在 macOS 中使用 Cmd + Shift + X。
搜索 MarkItDown,然后点击 Install 安装扩展。
通过 File > Open Folder 打开工作文件夹,并将需要转换的 PDF 放入该文件夹。
在左侧资源管理器中右键单击 PDF 文件,然后选择 MarkItDown: Convert File to Markdown。
⚠️ 不要通过双击 PDF 来启动转换。
双击 PDF 只会在编辑器中打开文件,并不会执行 MarkItDown 的转换命令。在某些环境中,还可能显示无法阅读的二进制内容。请通过左侧资源管理器中的右键菜单运行转换。
方法三:使用 Python 库(适合批量转换和自动化)
如果需要处理几十个甚至数百个以文本内容为主的 PDF,逐个上传或手动转换会比较耗时。借助 Python,可以一次读取整个文件夹中的 PDF,并自动生成对应的 Markdown 文件,适合批量整理资料或集成到现有工作流程中。
选项 A:Microsoft MarkItDown
Microsoft MarkItDown 是一款开源工具,适合将结构较简单、包含可提取文本的 PDF 转换为 Markdown。它无需付费,也比较容易集成到 Python 脚本中。
打开终端,通过 pip 安装 MarkItDown:
1
pip install "markitdown[all]"
新建一个 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
27import 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("处理完成。")在 PDF 所在目录中运行脚本。转换完成后,每个 PDF 都会生成一个对应的 Markdown 文件。
提示: MarkItDown 主要提取 PDF 中已有的文本层。如果原文件是扫描件或图片型 PDF,可能无法获得完整内容,此时更适合使用后文介绍的 OCR 或多模态 AI 方法。
选项 B:Spire.PDF for Python
如果需要更灵活地控制转换过程,例如只处理指定页码范围,或单独提取 PDF 中的表格数据,可以使用 Spire.PDF for Python 提供的相关 API。
在终端中安装 Spire.PDF for Python:
1
pip install Spire.PDF
新建一个 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
33import 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 页面作为图像进行分析,并尝试还原标题、段落、列表和其他版面结构。
安装 MarkItDown、OCR 插件和 OpenAI SDK:
1
pip install "markitdown[all]" markitdown-ocr openai
运行以下 Python 脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18from 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 |  |
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 的辅助。
选择工具时,除了转换质量,还应考虑文件数量、处理成本和数据隐私。无论使用哪种方法,转换完成后都建议检查标题层级、段落顺序、表格、公式、图片链接和关键数字,避免识别错误影响后续编辑或使用。















