# 如何查找 Anki 重复卡片并决定保留哪一份

*2026-10-04*

这道题明明复习过，Anki 却把它当成新卡。可能是导入时多了一份笔记，也可能是同一条笔记生成的另一张卡。先分清这两种情况。你在浏览窗口里删掉一行，可能会连带删掉那条笔记的所有卡片，包括你想保留的那个方向。

清理 **Anki 重复卡片**，先看它们是不是来自同一条笔记。如果是不同的笔记，用 **Notes → Find Duplicates**（笔记 → 查找重复项）找出可能重复的笔记。查到字段内容相同只是线索。逐组比较笔记内容，再看每张卡片的复习记录，决定留哪一份。

以下步骤适用于 Anki 桌面版，依据 2026 年 10 月 4 日核对的官方文档和已发布的源代码。下文用虚构数据做纸面推演，表中列的是预期结果。

![一名国际象棋俱乐部成员在木棋盘上比较一枚多出的浅色车和两枚磨损的车](/blog/anki-duplicate-cards.png)

## 先查清重复从哪来

笔记里存着 Front（正面）、Back（背面）等字段，Anki 按模板生成卡片。比如，同一条词汇笔记可以生成两张卡，一张让你看词想词义，另一张让你看词义回想原词。这两张卡互为同胞卡（siblings），各有自己的复习安排。参见 [Anki 关于笔记和字段的说明](https://docs.ankiweb.net/manual/getting-started#notes-%26-fields)。

打开 **Browse**（浏览），切到 **Cards**（卡片）模式。依次选中疑似重复的卡片，打开 **Cards → Info**（卡片 → 信息），对比笔记 ID。ID 相同，卡片就来自同一条笔记。ID 不同，就来自不同的笔记。把 `nid:123` 里的 `123` 换成实际的笔记 ID，就能跨牌组查到这条笔记的所有卡片。参见 [Anki 手册中的 ID 搜索说明](https://docs.ankiweb.net/searching.html#object-ids)。

| 查到的情况 | 可能的原因 | 下一步 |
| --- | --- | --- |
| 同一条笔记，提问方向相反 | 按设计生成的同胞卡 | 看两个方向是否都值得复习 |
| 同一条笔记，显示的题目相同 | 卡片模板可能重复了 | 对比模板和卡片预览 |
| 不同笔记，题目看起来相同 | 可能是重复笔记 | 对比完整笔记后再决定留哪条 |

如果两个方向是特意设置的，可以看看[反向卡指南（英文）](/blog/anki-reverse-cards/)。如果只想停掉其中一个方向的复习，可以暂停对应的卡片。暂停只影响复习，卡片仍留在卡片库里。参见[如何暂停 Anki 卡片（英文）](/blog/anki-bury-vs-suspend/)。

如果两个卡片模板的内容相同，请按 Anki 的说明排查。删除模板会影响使用该笔记类型的所有笔记，包括其他牌组里的笔记。把它当作整个笔记类型的改动单独处理。参见 [Anki 的重复卡片排查说明](https://faqs.ankiweb.net/extra-copies-of-a-card-are-coming-up.html)。

## 指定范围，查找重复笔记

打开 **Notes → Find Duplicates**，选择要比较的字段，例如 **Front**。Anki 默认会查遍含有该字段的笔记类型。可以在 **Optional filter**（可选筛选条件）里缩小范围，再点击 **Search**（搜索）。参见 [Anki 手册中的查重选项](https://docs.ankiweb.net/browsing.html#finding-duplicates)。

如果牌组名为 `Cleanup practice`，输入下面这行。

```text
deck:"Cleanup practice"
```

按牌组搜索时，Anki 也会搜索它的子牌组。如果不同牌组里可能各有一份，去掉筛选条件，查整个卡片库。一个牌组里没查到重复项，其他牌组里仍可能有副本。参见 [Anki 的牌组搜索语法](https://docs.ankiweb.net/searching.html#tags-decks-cards-and-notes)。

点开一组结果，逐条查看其中的笔记。**Tag Duplicates**（给重复项加标签）会给组里每条匹配的笔记加上 `duplicate`，包括你想保留的那条。参见[已发布版本的标记代码](https://github.com/ankitects/anki/blob/26.09.3/qt/aqt/browser/find_duplicates.py)。

**别把 `tag:duplicate` 的结果全删了。** 用这个标签找齐候选项，再逐条选出要删的笔记。

查重只比较你选中的字段，无法判断两道题考的是不是同一个知识点。换了说法的题目可能要另外手动搜索。反过来，一模一样的题面也可能对应不同的语言或课程。

## 用三组笔记练习怎么选

假设牌组 `Cleanup practice` 里有六条笔记，没有子牌组。A 和 B 使用 **Basic (and reversed card)**（基础及反向卡）的原有模板，各生成两张卡。C 到 F 使用 **Basic**（基础）的模板，各生成一张卡。八张卡都在这个牌组里。字母只是例子里的代号，Anki 里的笔记 ID 和卡片 ID 都是数字。

| 笔记 | 正面 → 背面 | 假设的复习情况 | 怎么处理 |
| --- | --- | --- | --- |
| A 和 B | `le vélo` → `bicycle` | A 的正向卡复习过 12 次，反向卡复习过 3 次。B 的两张都是新卡 | 保留 A，先检查 B 能不能删 |
| C 和 D | `Chemical symbol for silver?` → `Ag` | C 复习过 20 次，D 复习过 6 次 | 对比两张卡的复习记录，再决定继续复习哪张 |
| E 和 F | E 为 `bank` → `financial institution`，F 为 `bank` → `side of a river` | 考的是不同词义 | 两条都留，给题面加上语境 |

按 Front 查重，这三对笔记可以各自组成一组。只有第一组比较容易选。决定 B 能不能删之前，对照**每个字段**、媒体、标签和笔记类型，再预览两条笔记各自生成的题目和提问方向。B 可能有 A 缺少的发音音频，也可能多生成了一道题。

如果补充内容符合原来的学习目标，可以把它复制到留下的那条笔记里，再预览卡片。值得保留的来源标签也一起带过去。如果换了要考查的知识点，就另做一道题，从新的复习记录开始。

比较 C 和 D 时，把复习次数当作线索，再看两张卡每次复习的日期和评分、当前复习间隔以及到期信息。次数多也可能是因为这张卡需要反复重学。先确认题目和答案值得继续学，再选你想接着复习的那张卡。如果答案互相矛盾，先查原来的学习资料。复习次数无法验证答案。

保留 C、删除 D，**两张卡的复习记录不会合并**。C 会沿用自己的学习状态。你可以在信息窗口里查看每张卡各自的复习记录。参见 Anki 的[卡片信息（Card Info）说明](https://docs.ankiweb.net/stats.html#card-info)。

被删笔记的复习记录仍会计入整个卡片库的统计，但会从单个牌组的统计中消失，也不会转到留下的卡片上。参见 [Anki 手册中关于已删除笔记的统计说明](https://docs.ankiweb.net/stats.html#more)。

拿不准就先留着。记下还要查什么，必要时先暂停那些暂时不想复习的卡片。

## 一次只删一份，删完逐项核对

动手删自己的笔记前，先同步其他设备上还没上传的改动，再同步桌面端，让它也收到这些改动。具体步骤见 [Anki 同步手册](https://docs.ankiweb.net/syncing.html)。

通过 **File → Export**（文件 → 导出）保存一份 **Anki Collection Package (`.colpkg`)**，并勾选 **Include Media**（包含媒体）。这个包包含所有牌组、复习安排和复习记录。把文件存到安全的地方。导入备份时，Anki 会把当前用户配置里的卡片整体换成备份中的卡片。参见 [Anki 的卡片库导出说明](https://docs.ankiweb.net/exporting.html#collection-colpkg)。

想先练习删除，可以通过 **File → Switch Profile**（文件 → 切换用户配置）新建一个独立的用户配置，再把备份导入进去。练习用的配置不要连接 AnkiWeb。[每个用户配置都有独立的卡片库](https://docs.ankiweb.net/profiles.html)。如果两个配置都连到同一个账号，一个卡片库可能覆盖另一个。也可以参阅 [APKG 和 COLPKG 的区别（英文）](/blog/anki-apkg-vs-colpkg/)，了解两种格式各自能备份和导入什么。

在这个练习里，把 A 的正向卡（看词想词义）记作 A1，反向卡记作 A2。B 的对应卡片记作 B1 和 B2。在 **Cards → Info** 里记下 A 的两张卡各自的实际卡片 ID、到期信息、复习间隔，以及几条方便核对的复习记录，再记下 B 的笔记 ID。在同一次操作中对比删除前后的结果。期间先别复习 A 或 B 的卡片，也别调整它们的复习安排。

逐条删除 Anki 重复笔记的步骤如下。

1. 在 **Browse** 中，把搜索条件换成用 B 的实际笔记 ID 写成的 `nid:` 查询。在 **Cards** 模式下检查每条结果，预览两个方向的卡片。处理自己的笔记时，这里别加牌组筛选条件，这样也能查到这条笔记在其他牌组里的卡片。
2. 切换到 **Notes**（笔记）模式。确认唯一一条结果就是要删的 B，只选中这一条，然后点击 **Notes → Delete**（笔记 → 删除）。Anki 的[删除操作](https://docs.ankiweb.net/browsing.html#notes)会删掉选中的笔记及其所有卡片，即使你是在 **Cards** 模式里选中一张卡后执行的。
3. 用 B 的笔记 ID 再搜一次，确认已经没有结果。用 `cid:` 搜索 A 的两张卡，把之前记下的卡片 ID 用英文逗号隔开，再打开两张卡的 **Info**，逐项核对。
4. 搜索 `deck:"Cleanup practice"`，对比 **Notes** 和 **Cards** 模式各自显示的行数。再按下表核对剩下的笔记。

只删除 B 时，预期结果如下。

| 核对项 | 删除前 | 删除后应看到的结果 |
| --- | --- | --- |
| 整个练习牌组 | 6 条笔记、8 张卡片 | 5 条笔记、6 张卡片 |
| 自行车词汇卡 | A1、A2、B1、B2 | 只剩 A1 和 A2 |
| A 的卡片 ID、到期信息、复习间隔和复习记录 | 你事先记下的值 | 卡片、复习安排和复习记录都与先前一致 |
| 按 B 的笔记 ID 搜索 | B 的两张卡 | 没有结果 |
| 银的元素符号和 bank 的相关笔记 | C、D、E、F | 这四条笔记都还在 |

只删 B 这一条笔记，就会少两张卡。即使错删了 A，最后也会剩下 5 条笔记和 6 张卡，但你已经复习过、原本想留下的两张卡就没了。清点数量时也要核对 ID。清理时别重置留下的卡片，也别改它们的复习安排。

整个卡片库的复习图表仍可能包含已删除卡片的复习记录。要确认留下的卡片进度还在，核对卡片 ID 和 **Info** 里的记录。

这一组核对无误后，再处理下一组，单独决定要留哪一份。如果刚才是在副本里练习，就在平时使用的用户配置中按确认过的步骤做一遍。核对卡片库后，先同步桌面端，再同步其他设备，然后就可以在那些设备上继续复习。

如果重复项是导入时产生的，下次导入前可以看看[用 CSV 更新已有笔记的指南（英文）](/blog/anki-csv-update-existing-notes/)。如果你复制笔记只是为了把同一个知识点归入多个主题，可以用标签来归类，只维护一份复习记录。参见 [Anki 标签和牌组的用法（英文）](/blog/anki-tags-vs-decks/)。

---
*[查看此页面的带样式 HTML 版本](<https://nibomo.com/zh/blog/anki-duplicate-cards/>)*

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

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