跳转至

2.1 PDF 转 Markdown 和 HTML

PDF 适合阅读和打印,但不适合直接编辑,也不方便大模型准确读取文章结构、公式、表格和图片。因此,在整理文献或制作教学网页时,通常需要先将 PDF 转换为 Markdown,再根据需要转换为 HTML。

本节采用以下流程:

PDF
Doc2X 图文解析
Markdown + 本地图片
检查并修正 Markdown
使用大模型套用 HTML 模板
生成可浏览的 HTML 文章

2.1.1 PDF 转 Markdown

2.1.1.1 工具选择

本教程使用 Doc2X

进入 Doc2X

事实上,PDF 转 Markdown 已经有很多实用工具,例如:

  • Marker;
  • MinerU;
  • Docling;
  • Nougat;
  • 各类 OCR 工具。

Marker、MinerU 等本地工具适合批量处理、保护本地文件或为大模型知识库准备数据,但需要配置 Python、CUDA、模型和运行环境。

对于刚入门的学生,如果只是转换单篇论文,使用 Doc2X 更直接,不需要额外搭建环境。

2.1.1.2 上传 PDF

打开 Doc2X 后,进入文档解析页面,上传需要转换的 PDF。

通常选择:

图文解析

图文解析会同时处理:

  • 正文;
  • 标题;
  • 公式;
  • 图片;
  • 表格;
  • 多栏排版;
  • 页眉和页脚。

如果只需要转换论文中的部分内容,可以先指定页码范围,避免整篇解析造成额度和时间浪费。

2.1.1.3 检查解析结果

解析完成后,不要马上导出,应先在预览页面快速检查以下内容:

  1. 标题层级是否基本正确;
  2. 双栏论文是否已经转换为正确的单栏阅读顺序;
  3. 公式是否完整;
  4. 表格是否错位;
  5. 图片是否缺失;
  6. 图片与图题是否对应;
  7. 页眉、页脚和页码是否被误识别为正文;
  8. 参考文献是否被错误拆分。

如果只是少量错误,可以导出后直接在 Markdown 文件中修正。

如果整页顺序明显错误、公式大量丢失或图片无法识别,建议重新解析,或者更换 Marker、MinerU 等工具处理。

2.1.1.4 导出 Markdown

确认解析结果基本正确后,依次点击:

导出
→ 导出格式
→ Markdown

导出时重点设置两个选项:

  • 公式符号:选择 $
  • 图片来源:选择本地图片。

2.1.1.5 为什么公式符号选择 $

Markdown 中常见的数学公式写法有:

行内公式:$E=mc^2$
块级公式:

$$
E=mc^2
$$

选择 $ 的主要原因是后续处理更方便。

第一,$...$$$...$$ 是大模型比较容易识别的公式格式。在翻译、纠错和转换 HTML 时,大模型通常能够保留公式结构。

第二,MathJax、KaTeX、Pandoc 以及很多 Markdown 阅读器都能够处理这种公式格式。

第三,这种写法比较简洁,后续人工检查时容易分辨正文和公式。

需要注意,$ 并不是所有 Markdown 软件默认支持的标准语法。如果网页中公式没有显示,一般不是公式内容错误,而是网页没有加载 MathJax 或 KaTeX。

例如:

风力机输出功率可表示为:

$$
P=\frac{1}{2}\rho A v^3 C_p
$$

其中,$\rho$ 为空气密度,$A$ 为风轮扫掠面积。

2.1.1.6 为什么图片选择本地图片

建议选择:

本地图片

导出后通常会得到类似结构:

论文名称/
├─ 论文名称.md
└─ images/
   ├─ image_001.png
   ├─ image_002.png
   └─ image_003.png

Markdown 中的图片引用一般为:

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

选择本地图片有几个好处:

  • 不依赖 Doc2X 的在线图片地址;
  • 离线也能正常查看;
  • 将文件发给别人时不容易丢图;
  • 后续制作 MkDocs 或 HTML 网页更加稳定;
  • 可以替换、裁剪或重新命名图片。

不要单独移动 Markdown 文件

Markdown 中保存的是图片相对路径。移动文件时,应同时移动 `.md` 文件和 `images` 文件夹,并保持两者的相对位置不变。

2.1.1.7 导出后的文件检查

导出后,建议使用 VS Code、Typora 或其他 Markdown 编辑器打开文件。

重点检查以下内容。

标题层级

一篇文章只保留一个一级标题:

# 文章标题

正文大纲依次使用:

## 一级章节

### 二级章节

#### 三级章节

不要在同一个文件中连续使用多个 # 一级标题,否则 MkDocs 的右侧目录可能出现异常。

公式

检查以下问题:

  • $ 是否成对出现;
  • $$ 是否成对出现;
  • LaTeX 命令是否被拆行;
  • 公式编号是否与原文一致;
  • 上下标和希腊字母是否识别正确。

图片

检查:

  • 图片路径是否正确;
  • 图片顺序是否与原文一致;
  • 图题是否放在对应图片附近;
  • 是否出现重复图片;
  • 是否混入期刊 Logo、页眉或装饰图片。

表格

复杂表格可能被导出为 HTML:

<table>
...
</table>

这是正常情况。Markdown 原生表格不支持合并单元格,因此复杂表格使用 HTML 往往更稳定。

参考文献

参考文献最容易出现的问题包括:

  • 每一行被识别成单独段落;
  • DOI 被拆断;
  • 作者与题目顺序错乱;
  • 上标编号被当成公式;
  • 多栏参考文献顺序错误。

如果文章主要用于阅读,参考文献只需保证顺序和内容基本正确;如果用于正式发布,则需要逐条检查。

2.1.2 Markdown 转 HTML

Markdown 整理完成后,可以使用大模型将其转换为指定样式的 HTML。

本教程以 DeepSeek 为例,其他支持长文本和文件上传的大模型也可以采用相同方法。

2.1.2.1 准备文件

建议准备两个文件:

待转换文章.md
样例模板.html

其中:

  • 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 和图片文件夹结构为:

文章/
├─ article.md
├─ article.html
└─ images/
   ├─ figure1.png
   └─ figure2.png

则 HTML 中应继续使用:

<img src="images/figure1.png" alt="figure1">

2.1.2.4 文章过长时如何分块

长篇论文可能超过大模型的上下文长度。若前述prompt不能让大模型分对话输出,应按照章节分块。

例如:

第1块:标题、摘要、关键词和引言
第2块:第2章
第3块:第3章
第4块:第4章
第5块:结论和参考文献

每次输入时说明:

这是文章第 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 中的标题通常写成:

<h2 id="pdf-to-markdown">PDF 转 Markdown</h2>

目录链接写成:

<a href="#pdf-to-markdown">PDF 转 Markdown</a>

其中:

href="#pdf-to-markdown"

必须与:

id="pdf-to-markdown"

完全一致,否则点击目录时无法跳转。

建议标题 ID 使用:

  • 英文字母;
  • 数字;
  • 连字符 -

例如:

<h2 id="section-2-1">2.1 PDF 转 Markdown 和 HTML</h2>

尽量避免使用空格、斜杠或过长的中文标题作为 ID。

2.1.2.6 转换后的重点检查

大模型完成转换后,不要直接发布,至少检查以下内容:

内容是否完整

将 Markdown 和 HTML 的末尾进行对比,检查:

  • 是否漏掉章节;
  • 是否漏掉参考文献;
  • 是否重复输出某一段;
  • 是否擅自总结或改写正文。

目录是否正常

逐项点击左侧或右侧目录,确认:

  • 每个链接都能跳转;
  • 没有跳到错误章节;
  • 没有重复标题;
  • 二级和三级目录层级正确。

图片是否显示

如果图片无法显示,优先检查:

HTML 文件位置
图片文件夹位置
HTML 中的 src 路径
文件名大小写

公式是否显示

如果网页直接显示:

$E=mc^2$

说明 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 中增加:

<div class="table-wrapper">
  <table>
    ...
  </table>
</div>

CSS 中增加:

.table-wrapper {
  width: 100%;
  overflow-x: auto;
}

这样表格过宽时会出现横向滚动条,而不会挤压整个页面。

2.1.3 推荐操作流程

实际使用时,建议按照下面的顺序操作:

上传 PDF 到 Doc2X
选择图文解析
检查标题、公式、图片和表格
导出 Markdown
公式符号选择 $
图片选择本地图片
使用 VS Code 检查并修正 Markdown
上传 Markdown 和样例 HTML 给大模型
生成或分块生成 HTML
检查目录、图片、公式和表格
放入 MkDocs 或直接发布

核心原则:

  1. PDF 转 Markdown 时,重点保证内容准确、图片完整和公式可识别。
  2. Markdown 转 HTML 时,重点要求大模型尊重原文,只套用模板,不重新创作内容。