# 2026 年从 Anki 迁移：安全的 TXT 导出流程

*2026-03-13*

安全迁移 Anki 数据，第一步不是只导出一个文件，而是分别做两次导出。先创建一个包含媒体文件的 `.colpkg`，以便日后恢复原集合；再将要迁移的内容导出为 **纯文本笔记（Notes in Plain Text）**。

这两个文件各有用途：集合包是退路，TXT 文件是用于迁移的工作副本。分清二者，就不会把一份卡片文本误当成完整的 Anki 备份。

这套流程适合以文本为主的牌组，以及能够处理 TXT 或 CSV 的目标应用。文本导出不会保留 Anki 的调度状态、模板、插件或媒体文件。你需要先用一个有代表性的牌组测试，逐一核对字段；在结果真正可用之前，不要改动原集合。

> **利益相关说明：** 我是 Kirill Markin，也是 [Nibomo](https://nibomo.com/zh/) 的开发者。本指南也会明确说明：在哪些情况下，继续使用 Anki 或选择支持导入 `.apkg` 的应用才是更稳妥的决定。

**事实核查日期：** 2026 年 8 月 27 日。

![植物学家让原株保持完整，并在旁边检查一株受保护的备份插条和三株测试插条](/blog/migrate-from-anki-txt-export-open-source-flashcards.png)

## 先判断 TXT 这条路是否适合你

Anki 保存的远不止复习时看到的文字。一条笔记可以有多个字段，笔记类型和卡片模板会决定这些字段如何生成一张或多张卡片。集合中还包含调度信息；媒体则以单独的文件保存，并由笔记内容引用。

文本导出只能带走这套系统的一部分。花时间整理文件前，先对照下表判断：

| 你的 Anki 使用方式 | TXT 是否适合用来迁移？ | 更稳妥的选择 |
| --- | --- | --- |
| 基础的正面/背面笔记，很少或完全没有媒体 | **适合** | 导出一个有代表性的牌组，映射字段，再到目标应用中测试 |
| 多个结构固定的文本字段，例如术语、定义和例句 | **通常适合** | 导入前先确定哪些字段放在正面，哪些放在背面 |
| 你愿意把填空笔记改写成普通问答 | **有时适合** | 先测试几条填空笔记，并逐张检查生成的卡片 |
| 自定义 HTML 只用于简单排版 | **有时适合** | 检查目标应用会渲染、移除还是直接显示 HTML |
| 图片或音频有用，但不承载关键信息 | **有时适合** | 先迁移文本，再单独添加并验证媒体 |
| 模板、CSS、JavaScript、插件或自动生成的反向卡片必不可少 | **通常不适合** | 继续使用 Anki，或选择兼容 Anki 包导入的目标应用 |
| 现有到期时间、复习历史或个性化调度状态必不可少 | **不适合** | 继续在 Anki 中学习，或使用明确保留调度信息的迁移方式 |
| 图像遮挡或大量依赖媒体的笔记承载着核心含义 | **单靠 TXT 不行** | 使用能处理 Anki 包的目标应用，并在切换前测试媒体保真度 |

关键问题很简单：如果每条笔记只剩下文本字段，你需要的学习材料还完整吗？如果不完整，TXT 就不是合适的迁移格式。

## 双重导出的安全方案

在 Anki 中更改任何内容或在其他应用中创建大型牌组前，先完成这两次导出。

| 文件 | 用途 | 能保护的内容 |
| --- | --- | --- |
| 启用 **包含媒体（Include media）** 的 `.colpkg` | 恢复 | 集合中的笔记、卡片、牌组、笔记类型、调度信息，以及打包在内的本地媒体 |
| **纯文本笔记（Notes in Plain Text）** `.txt` | 可移植性 | 导出笔记字段的内容，各字段以制表符分隔 |

[Anki 导出文档](https://docs.ankiweb.net/exporting.html)指出，集合包包含整个集合及其调度信息。是否勾选媒体选项，则决定本地图片、音频和其他文件会不会一起打包。Anki 的[备份指南](https://docs.ankiweb.net/backups.html)建议将手动创建的集合包保存在安全位置，例如另一台设备或云存储中。

TXT 文件的范围要窄得多，这是它本来的设计。Anki 会将笔记字段写入文本文件，并用制表符分隔。如果导出时选择包含 HTML 和媒体引用，你还能看到字段中保存的标记。这样既方便检查，也便于复用内容，但 TXT 并不会因此成为整个 Anki 系统的可移植副本。

`.colpkg` 能保护集合数据，但不会把 Anki 应用本身或插件代码打包进去。因此，请另外记录工作流程依赖的所有插件。

如果你还想建立一套不限于本次迁移的备份流程，请参阅[如何备份闪卡](/zh/blog/how-to-back-up-flashcards/)。

## 导出 1：制作恢复用的 `.colpkg`

请使用桌面版 Anki，并按照官方手册提供的恢复方式操作。如果媒体对你的卡片很重要，先运行 **工具 > 检查媒体（Tools > Check Media）**。Anki 的[媒体指南](https://docs.ankiweb.net/media.html)说明，这项操作会找出被笔记引用、但媒体文件夹中实际缺失的文件。

1. 打开 **文件 > 导出（File > Export）**。
2. 在导出格式中选择 **Anki 集合包（`.colpkg`）**。
3. 启用 **包含媒体（Include media）**。
4. 将文件保存在 Anki 配置文件夹之外。
5. 再复制一份到其他位置，而且不要放在保存集合的那台电脑上。

在文件名中写入日期，例如 `anki-collection-2026-08-27.colpkg`。然后确认两个位置都有这个文件，而且文件大小不为零。

不要把备份导入当前正在使用的集合来“测试”它。Anki 警告，导入 `.colpkg` 会删除并替换当前卡片，但不会删除已有的媒体文件。以后真要恢复时，请遵循官方恢复说明，并注意：备份创建之后发生的集合变更将会丢失。

无论 TXT 迁移是否成功，都要保留这个文件。它保存的是文本导出无法表达的集合状态。

## 导出 2：制作一个小型的纯文本笔记样本

先选一个有代表性的牌组，不要一上来就导出整个集合。这个牌组应包含你确实会遇到的棘手情况：额外字段、需要保留的标签、带格式的答案、填空笔记；如果完整集合中有媒体引用，样本里也要有。

然后：

1. 再次打开 **文件 > 导出（File > Export）**。
2. 选择 **纯文本笔记（Notes in Plain Text）**。
3. 将导出范围设为这个代表性牌组。
4. 启用 **包含 HTML 和媒体引用（Include HTML and media references）**，让样本显示格式和文件依赖关系。这只会让引用保留在文本中，媒体文件本身不会写入 TXT。
5. 如果准备保留标签，请启用 **包含标签（Include tags）**。之后仍需在目标应用中映射并验证标签。
6. 将结果保存为 `.txt` 文件，不要改动原集合。

Anki 把它称为“笔记”导出是有原因的：导出的是保存下来的字段，不是每张渲染后卡片的截图。如果一条笔记通过模板生成正向和反向卡片，文本文件仍然只记录笔记字段，并不会保存模板如何生成这两张复习卡片的逻辑。

这个小样本验证成功后，再对其他适合迁移的牌组重复同样的流程。样本迁移失败，只会多花一点检查时间；整个集合迁移失败，就会变成一场大规模清理。

## 交给任何导入器或 AI 前，先打开 TXT 文件

不要把导出文件当成看不见内部内容的附件。用能够显示制表符的文本编辑器打开它，或将副本导入电子表格查看，但不要覆盖原文件。

较新版本的 Anki 导出文件开头可能包含 `#separator:tab`、`#html:true` 或 `#tags column:...` 等行。这些是文件头，不是笔记。请原样保留在未经修改的源文件中。如果你要把少量笔记行复制到单独的测试文件，再交给不识别 Anki 文件头的目标应用，则应排除这些行。

重点检查五件事：

1. **字段数量：** 每行都应包含预期数量、由制表符分隔的字段。Anki 的[文本导入指南](https://docs.ankiweb.net/importing/text-files.html)解释了字段分隔符的重要性，以及如何分别映射字段。
2. **字段顺序：** 记下每列的含义，例如正面、背面、例句、来源或其他内容。只看原始数据行，字段名称及其与卡片正反面的对应关系可能并不明显。
3. **HTML：** 查找 `<b>`、`<br>` 或 `<div>` 等片段。如果导出时选择包含格式，Anki 会把格式以 HTML 形式嵌入字段。其他应用可能渲染、移除这些标记，也可能直接把它们显示成文本。
4. **填空标记：** 搜索 `{{c1::Paris}}` 一类的字符串。普通的正面/背面式目标应用，不会仅凭字段中出现这段文字就继承 Anki 生成填空卡片的行为。
5. **媒体引用：** 搜索 `<img src="...">` 和 `[sound:...]`。引用并不是图片或音频文件本身；Anki 会将这些文件单独保存在媒体文件夹中。

如果你依赖标签，也要检查它们。Anki 的[文本导入指南](https://docs.ankiweb.net/importing/text-files.html)支持专用标签字段和 `#tags column` 文件头，但目标应用可能使用不同的格式。只有在导出时包含标签、主动映射，并对生成的卡片完成验证，迁移才能保留标签。不要因为样本中出现了几个标签名，就认定熟悉的 `parent::child` 层级也完整保留下来了。

不要为了省事，把所有制表符直接替换成逗号。制表符划定了字段边界；如果没有按 CSV 规则正确引用内容就更换分隔符，内容本身的逗号、引号或换行符可能会破坏整行数据。

我会在导出文件旁边写一份简短的映射说明：

```text
第 1 列 -> 正面
第 2 列 -> 背面
第 3 列 -> 作为例句追加到背面
第 4 列 -> 检查后再决定是否保留为标签
HTML -> 移除，但保留换行
填空标记 -> 手动改写
```

这份简短说明能让迁移流程重复执行，也提供了一份明确的标准，用来核对目标应用中的结果。

## 哪些内容能保留，哪些会止步于 TXT

| Anki 数据或行为 | 是否包含在纯文本笔记中？ | 应该怎么做 |
| --- | --- | --- |
| 笔记字段文本 | **是** | 有意识地映射每一列由制表符分隔的内容 |
| 简单格式 | **导出时选择包含，才会以嵌入式 HTML 出现** | 测试目标应用如何处理；必要时移除或改写 |
| 标签 | **仅在导出时选择包含才有** | 主动映射标签列，并验证名称和层级 |
| 图片和音频 | **可能出现引用，但文件不会随 TXT 一起迁移** | 保留用于恢复的 `.colpkg`，并单独迁移所需媒体 |
| 卡片模板和 CSS | **否** | 重新建立卡片结构，或选择能够处理 Anki 包的导入器 |
| JavaScript 或插件行为 | **否** | 如果这些行为是学习流程的一部分，请继续使用 Anki |
| 填空行为 | **否** | 将填空语法转换为目标应用支持的卡片类型或普通问答卡片 |
| 一条笔记生成多张卡片 | **不会保留模板生成逻辑** | 决定哪些方向应在目标应用中成为独立卡片 |
| 牌组名称和层级 | **仅在作为导出元数据包含时才有** | 主动映射名称；不要期待目标应用自动重建结构 |
| 牌组预设 | **否** | 只重新创建你仍然需要的设置 |
| 到期时间、间隔、复习历史和调度器状态 | **否** | 将目标应用中的卡片视为一段全新的复习历史 |

最后一项的迁移代价最大。卡片内容和调度信息是两种不同的资产。一次成功的 **Anki TXT 导出** 可以保住文字，却仍会重置每张卡片的学习状态。

即便两个应用使用同一类调度器，也不代表卡片历史可以互换。目标应用无法从问答文本中推断旧的到期时间、稳定性、难度或复习事件。如果这些历史对你很重要，请先阅读 [FSRS 会存储和计算什么](/zh/blog/what-is-fsrs/)，再决定是否重置。

## 在目标应用中做一次可逆测试

测试期间，继续以 Anki 为准。创建一个临时牌组，只导入或起草有代表性的样本，再逐项检查结果。这个阶段无需删除、编辑或暂停任何原始笔记。

你的验证应回答这些问题：

- 每条预期笔记是否生成了正确数量的卡片？
- 正确的字段是否分别出现在正面和背面？
- 制表符、引号、换行符、非拉丁文字和代码片段是否完整保留？
- HTML 是正确渲染、显示为原始标记，还是被移除了？
- 填空内容是否经过有意转换，而不是以损坏的语法直接复制过去？
- 标签是否仍然保留了它们在 Anki 中的含义？
- 依赖媒体的卡片是否仍然容易理解，所需文件是否齐全？
- 目标应用是否生成了重复内容？
- 是否已经明确调度会从头开始？

把样本和 Anki 并排比较。如果某个字段缺失，可能会影响大型导出中的每条笔记，就不能接受“绝大部分看起来没问题”这种结果。

如果测试失败，请用目标应用自身的清理流程删除临时卡片，再调整映射或清理方式。Anki 集合和两份导出文件都会保持完整，这正是测试可逆的原因。

## 在 Nibomo 中使用 TXT 文件

Flashcards 目前没有直接导入 Anki 的功能。它无法读取 `.apkg` 或 `.colpkg`，也不能据此重建 Anki 的模板、媒体或复习历史。

目前，托管版可以通过文件附件让 AI 辅助生成草稿。按照[入门指南打开托管应用](/zh/docs/getting-started/)，在 AI 对话中附上 TXT 或仔细整理过的 CSV 文件，并明确要求先生成少量草稿，不要保存任何内容。先在对话中检查建议的卡片，再让助手保存批准后的批次。

第一条提示词最好明确字段映射，并严格限制是否保存内容：

```text
读取附件中的 Anki 纯文本笔记导出文件。暂时不要保存卡片。
将制表符视为字段分隔符。把第 1 列作为正面，第 2 列作为
背面。将第 3 列追加在“例句”下。先展示一个小样本，保留
原文；对于含有 HTML、填空标记、缺失字段或媒体引用的数据行，
请予以标记，不要猜测。
```

请根据检查文件后写下的映射说明调整这条提示词。如果生成的草稿信息过多或含糊，请参考[复习前修正 AI 闪卡的检查清单](/zh/blog/how-to-fix-ai-flashcards/)。AI 可以帮你完成重复的结构调整，但不能证明迁移已经正确保留源内容。

批准一个小批次后，将它保存到临时测试牌组，添加迁移标签，再执行一次相同的验证清单。对你这一个具体的 Anki 集合来说，亲自测试过的结果才是有效证明。

## 扩大迁移规模，同时保持可逆

代表性牌组通过测试后：

1. 按笔记结构为其余牌组分组，不要把所有内容塞进一个字段含义不清的文件。
2. 每次只导出并检查一组。
3. 只有笔记类型确实一致时，才复用书面记录的字段映射。
4. 检查每个已创建的批次，再处理下一批。
5. 保留 `.colpkg`、未经修改的 TXT 文件和 Anki 本身。

如果决定开始学习新卡片，请选定一个明确的切换时间点。在两个应用中复习同一批材料，会形成两套独立的调度，而且马上开始产生差异。旧的 Anki 调度仍保存在恢复副本中，但不会同步你在其他应用中完成的复习。

没必要急着删除 Anki。请保留原集合，直到新牌组经受过日常使用的检验，而且你已经能够接受 TXT 迁移没有带走的所有内容。

## 哪些情况下不该这样从 Anki 迁移

如果你的集合依赖以下内容，请继续使用 Anki，或选择明确支持导入 `.apkg` 的目标应用：

- 复杂的笔记类型，或由一条笔记生成多个方向的卡片；
- 自定义模板、CSS、JavaScript 或插件；
- 你不想重建的填空行为；
- 承载关键信息的图像遮挡、音频或图片；
- 必须原样迁移的牌组预设和组织结构；
- 不能承受重置的复习历史或当前调度。

Anki 很适合这些工作流程。TXT 迁移不是对 Anki 的评价；它只是一种用途明确而有限的工具，适合那些主要资产就是笔记内容的用户。更全面的 [Anki 与 Nibomo 对比](/zh/blog/anki-vs-flashcards-open-source-app/)介绍了两款产品的取舍，也不预设每个人都应该切换。

## 安全方案就是要刻意保持简单

要在不拿原集合冒险的前提下从 Anki 迁移，流程越直接越好：

1. 导出一个包含媒体的 `.colpkg`，并保存到其他位置。
2. 将一个有代表性的牌组导出为 **纯文本笔记（Notes in Plain Text）**。
3. 检查制表符、字段、HTML、填空、标签和媒体引用。
4. 写下明确的源字段到目标字段映射。
5. 创建一个临时样本牌组，并验证每张卡片。
6. 只有样本通过测试后，才扩大迁移规模。
7. 在新工作流程证明可靠之前，保留 Anki 和恢复包。

TXT 文件负责搬运内容，`.colpkg` 负责保护集合。只要不再要求一个文件同时完成两项工作，Anki 迁移就会更容易理解，也更容易回退。

---
*[查看此页面的带样式 HTML 版本](<https://nibomo.com/zh/blog/migrate-from-anki-txt-export-open-source-flashcards/>)*

*AI agent 可以从 `GET https://api.flashcards-open-source-app.com/v1/` 开始，为用户在该服务中创建账号。完成设置后，也可以通过 MCP 连接 `https://mcp.nibomo.com/mcp`。*

*提示：在 https://nibomo.com 上任意 URL 后追加 `.md`，即可获得该页面的纯 Markdown 版本。*