2.1 PDF 转 Markdown 和 HTML¶
PDF 适合阅读和打印,但不适合直接编辑,也不方便大模型准确读取文章结构、公式、表格和图片。因此,在整理文献或制作教学网页时,通常需要先将 PDF 转换为 Markdown,再根据需要转换为 HTML。
本节采用以下流程:
2.1.1 PDF 转 Markdown¶
2.1.1.1 工具选择¶
本教程使用 Doc2X:
事实上,PDF 转 Markdown 已经有很多实用工具,例如:
- Marker;
- MinerU;
- Docling;
- Nougat;
- 各类 OCR 工具。
Marker、MinerU 等本地工具适合批量处理、保护本地文件或为大模型知识库准备数据,但需要配置 Python、CUDA、模型和运行环境。
对于刚入门的学生,如果只是转换单篇论文,使用 Doc2X 更直接,不需要额外搭建环境。
2.1.1.2 上传 PDF¶
打开 Doc2X 后,进入文档解析页面,上传需要转换的 PDF。
通常选择:
图文解析会同时处理:
- 正文;
- 标题;
- 公式;
- 图片;
- 表格;
- 多栏排版;
- 页眉和页脚。
如果只需要转换论文中的部分内容,可以先指定页码范围,避免整篇解析造成额度和时间浪费。
2.1.1.3 检查解析结果¶
解析完成后,不要马上导出,应先在预览页面快速检查以下内容:
- 标题层级是否基本正确;
- 双栏论文是否已经转换为正确的单栏阅读顺序;
- 公式是否完整;
- 表格是否错位;
- 图片是否缺失;
- 图片与图题是否对应;
- 页眉、页脚和页码是否被误识别为正文;
- 参考文献是否被错误拆分。
如果只是少量错误,可以导出后直接在 Markdown 文件中修正。
如果整页顺序明显错误、公式大量丢失或图片无法识别,建议重新解析,或者更换 Marker、MinerU 等工具处理。
2.1.1.4 导出 Markdown¶
确认解析结果基本正确后,依次点击:
导出时重点设置两个选项:
- 公式符号:选择
$; - 图片来源:选择本地图片。
2.1.1.5 为什么公式符号选择 $¶
Markdown 中常见的数学公式写法有:
选择 $ 的主要原因是后续处理更方便。
第一,$...$ 和 $$...$$ 是大模型比较容易识别的公式格式。在翻译、纠错和转换 HTML 时,大模型通常能够保留公式结构。
第二,MathJax、KaTeX、Pandoc 以及很多 Markdown 阅读器都能够处理这种公式格式。
第三,这种写法比较简洁,后续人工检查时容易分辨正文和公式。
需要注意,$ 并不是所有 Markdown 软件默认支持的标准语法。如果网页中公式没有显示,一般不是公式内容错误,而是网页没有加载 MathJax 或 KaTeX。
例如:
2.1.1.6 为什么图片选择本地图片¶
建议选择:
导出后通常会得到类似结构:
Markdown 中的图片引用一般为:
选择本地图片有几个好处:
- 不依赖 Doc2X 的在线图片地址;
- 离线也能正常查看;
- 将文件发给别人时不容易丢图;
- 后续制作 MkDocs 或 HTML 网页更加稳定;
- 可以替换、裁剪或重新命名图片。
不要单独移动 Markdown 文件
2.1.1.7 导出后的文件检查¶
导出后,建议使用 VS Code、Typora 或其他 Markdown 编辑器打开文件。
重点检查以下内容。
标题层级¶
一篇文章只保留一个一级标题:
正文大纲依次使用:
不要在同一个文件中连续使用多个 # 一级标题,否则 MkDocs 的右侧目录可能出现异常。
公式¶
检查以下问题:
$是否成对出现;$$是否成对出现;- LaTeX 命令是否被拆行;
- 公式编号是否与原文一致;
- 上下标和希腊字母是否识别正确。
图片¶
检查:
- 图片路径是否正确;
- 图片顺序是否与原文一致;
- 图题是否放在对应图片附近;
- 是否出现重复图片;
- 是否混入期刊 Logo、页眉或装饰图片。
表格¶
复杂表格可能被导出为 HTML:
这是正常情况。Markdown 原生表格不支持合并单元格,因此复杂表格使用 HTML 往往更稳定。
参考文献¶
参考文献最容易出现的问题包括:
- 每一行被识别成单独段落;
- DOI 被拆断;
- 作者与题目顺序错乱;
- 上标编号被当成公式;
- 多栏参考文献顺序错误。
如果文章主要用于阅读,参考文献只需保证顺序和内容基本正确;如果用于正式发布,则需要逐条检查。
2.1.2 Markdown 转 HTML¶
Markdown 整理完成后,可以使用大模型将其转换为指定样式的 HTML。
本教程以 DeepSeek 为例,其他支持长文本和文件上传的大模型也可以采用相同方法。
2.1.2.1 准备文件¶
建议准备两个文件:
其中:
- Markdown 文件提供文章内容;
- HTML 文件提供网页结构、配色、字体、左侧目录和排版样式。
不要只告诉大模型“转成 HTML”。如果没有提供样例,它通常会自行设计页面,最终样式可能与现有教学网页不一致。
2.1.2.2 推荐提示词¶
将 Markdown 和样例 HTML 一起上传,然后输入:
请将我上传的 Markdown 文章转换为与样例 HTML 相同结构和样式的 HTML 文件。
要求:
1. 不得删减、概括或改写 Markdown 正文;
2. 保留原有标题层级;
3. 保留全部公式、图片、表格、链接和代码块;
4. 图片继续使用 Markdown 中的本地相对路径;
5. 只替换样例 HTML 中的文章内容和目录,不要随意修改 CSS、JavaScript 和页面结构;
6. 根据 Markdown 标题自动生成目录;
7. 确保目录链接能够跳转到对应标题;
8. 公式使用 MathJax 显示;
9. 输出完整 HTML,不要省略任何代码;
10. 不要在 HTML 前后添加解释。
11. 如果输出的代码长度超过一次对话文本限制,分两次对话输出
2.1.2.3 转换前先说明图片位置¶
如果 Markdown 和图片文件夹结构为:
则 HTML 中应继续使用:
2.1.2.4 文章过长时如何分块¶
长篇论文可能超过大模型的上下文长度。若前述prompt不能让大模型分对话输出,应按照章节分块。
例如:
每次输入时说明:
这是文章第 2 部分。
请按照之前的 HTML 模板,只转换当前内容对应的 <main> 正文片段。
要求:
1. 不输出 <html>、<head> 和 <body>;
2. 不重复已经转换的内容;
3. 保持标题编号和层级;
4. 保留公式、图片、表格和引用;
5. 只输出当前章节对应的 HTML。
所有章节转换完成后,再让大模型合并:
请将这些 HTML 正文片段按照原来的章节顺序合并到样例 HTML 模板中。
要求:
1. 不得删减正文;
2. 删除重复内容;
3. 统一标题 id;
4. 根据所有标题重新生成完整目录;
5. 检查目录链接与标题 id 是否一一对应;
6. 检查 HTML 标签是否闭合;
7. 输出最终完整 HTML。
2.1.2.5 标题 ID 与目录跳转¶
HTML 中的标题通常写成:
目录链接写成:
其中:
必须与:
完全一致,否则点击目录时无法跳转。
建议标题 ID 使用:
- 英文字母;
- 数字;
- 连字符
-。
例如:
尽量避免使用空格、斜杠或过长的中文标题作为 ID。
2.1.2.6 转换后的重点检查¶
大模型完成转换后,不要直接发布,至少检查以下内容:
内容是否完整¶
将 Markdown 和 HTML 的末尾进行对比,检查:
- 是否漏掉章节;
- 是否漏掉参考文献;
- 是否重复输出某一段;
- 是否擅自总结或改写正文。
目录是否正常¶
逐项点击左侧或右侧目录,确认:
- 每个链接都能跳转;
- 没有跳到错误章节;
- 没有重复标题;
- 二级和三级目录层级正确。
图片是否显示¶
如果图片无法显示,优先检查:
公式是否显示¶
如果网页直接显示:
说明 MathJax 没有正常加载。
HTML 模板中需要包含 MathJax 配置,例如:
<script>
window.MathJax = {
tex: {
inlineMath: [['$', '$']],
displayMath: [['$$', '$$']]
}
};
</script>
<script
async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
</script>
表格是否超出页面¶
对于宽表格,可以在 HTML 中增加:
CSS 中增加:
这样表格过宽时会出现横向滚动条,而不会挤压整个页面。
2.1.3 推荐操作流程¶
实际使用时,建议按照下面的顺序操作:
上传 PDF 到 Doc2X
↓
选择图文解析
↓
检查标题、公式、图片和表格
↓
导出 Markdown
↓
公式符号选择 $
↓
图片选择本地图片
↓
使用 VS Code 检查并修正 Markdown
↓
上传 Markdown 和样例 HTML 给大模型
↓
生成或分块生成 HTML
↓
检查目录、图片、公式和表格
↓
放入 MkDocs 或直接发布
核心原则:
- PDF 转 Markdown 时,重点保证内容准确、图片完整和公式可识别。
- Markdown 转 HTML 时,重点要求大模型尊重原文,只套用模板,不重新创作内容。