我在iPhone应用中导入了5个真实的Anki牌组。结果如下
我为什么要做这个测试
“我的牌组能顺利导入吗?”这是几乎所有 Anki 用户留言背后最关心的问题。仅仅和桌面端 Anki 的卡片数量匹配是不够的:一个填空牌组可能导入了正确数量的卡片,但依然显示原始的 {{c1::…}} 标记,缺失提示,或者出现空白图片、无法播放的音频按钮。因此,与其盲目相信解析器,我选择了医学、MCAT 和日语学习者在真实场景中使用的共享牌组,在 iPhone 上逐一导入它们,启动复习会话,并将前 6–10 张卡片的正反面都截了图。
测试环境:Guru 1.5.1 (build 76),iPhone 16 Pro Max,iOS 18。每个 .apkg 文件都直接从“文件”应用中打开,这会触发与通过隔空投送 (AirDrop) 或分享面板导入时相同的导入向导。记录的时间为从点击导入开始,到牌组出现在库中的实际用时。
五个测试牌组
| 牌组 (Deck) | 文件大小 | Anki 中的卡片数 | 导入后的卡片数 | 导入用时 | 渲染检查 (6–10 张卡片) |
|---|---|---|---|---|---|
| First Aid 2017 Pharmacology | 5.5 MB | 1,232 | 1,232 | 约 10 秒 | 填空提示,斜体 Extra 字段 |
| USMLE Step 2 (23 种笔记,14 种填空) | 68 MB | 5,647 | 5,647(修复前为 11,199) | 约 10 秒 | 填空,彩色强调,图片,Extra 字段 |
| MileDown's MCAT Decks | 238 MB | 2,888 | 2,888 | 约 5 秒 | 彩色填空,图表;外部链接显示为灰色文本 |
| Zanki Physiology & Pathology | 125 MB | 16,966 | 16,966(修复前为 20,792) | 约 15 秒 | 填空,下划线,图片 |
| JLPT "eggrolls" N1–N5 | 121 MB,10,107 个音频文件 | 10,147 | 10,147 | 89 秒 | 振假名,例句,音频按钮 |
第六个文件是一个包含 263 张卡片的 AnKing MCAT 样本,仅用作二次导入同一包的对照测试,我并没有逐张检查其卡片。
我在每张卡片上检查了什么
- 库中的卡片数量与同一牌组在桌面端 Anki 显示的数量是否一致。
- 填空卡片正面是否显示
[…]或提示文本,背面是否高亮显示答案,每个填空编号是否对应一张卡片。 - 粗体、下划线和彩色文本(AnKing 风格的强调文本)是否成功保留。
- 包内的图片是否正常加载,包括从 Extra(附加)字段引用的图片。
- 音频字段是否变成可播放的按钮;振假名(ruby 文本)是否依然附着在对应的汉字上。
- 模板级别的附加内容,比如一些牌组在每张卡片顶部打印的页眉,是否依然显示。
USMLE Step 2
这是测试集中最棘手的牌组:一个包内包含 23 种笔记类型和 14 种不同的填空模板。我打开的每一个变体都能正常渲染为普通填空卡片,红蓝颜色的强调完整保留,Extra 字段也正确显示在答案下方。心内膜炎卡片上的视网膜照片是从包的媒体文件夹中加载的,而不是来自网络。
Zanki Physiology & Pathology
按卡片数量计算,这是最大的一个牌组。16,966 张卡片的导入耗时约 15 秒。带下划线的术语和图片都顺利导入。我在这里注意到了一件事,在测试 USMLE Step 2 时也遇到过:来自同一笔记的卡片(同一个填空笔记的 c1、c2、c3)会在复习会话中连续出现。桌面端 Anki 默认会搁置关联卡片(bury siblings);但我测试的版本并没有。详见下文。
MileDown's MCAT Decks
这是体积最大的文件,达到了 238 MB,其中几乎全是图片。因为它卡片总数少,导入仅用时大约 5 秒。彩色填空和图表正常渲染。唯一的不完美之处是:MileDown 的卡片包含外部超链接,它们在应用内显示为灰色文本,而不是可点击的链接。文本还在;但链接的目标地址丢失了。
JLPT "eggrolls" N1–N5
导入速度最慢的一个,原因在于媒体数量而不是卡片数量:必须解压并索引 10,107 个音频文件。10,147 张卡片耗时 89 秒。在卡片上,振假名位于汉字上方,例句保留了换行,每个音频字段都变成了一个紫色的播放按钮。
First Aid 2017 Pharmacology
一个小型、经典的填空牌组。填空提示和斜体 Extra 字段如预期般渲染。它唯一的问题在外观上:该牌组的原始名称 aervien + tracymcgrady1991 step 1 pharm (FA 2017) 会显示在库中,并在第一屏被截断。导入后重命名即可解决。
测试发现的 Bug:子牌组树被重复计算
USMLE Step 2 导入后显示 11,199 张卡片,而桌面端 Anki 显示 5,647 张。Zanki 变成了 20,792 张而不是 16,966 张。MileDown 和 JLPT 的数量则完全准确。
发生重复和没有重复的牌组之间的区别在于牌组树结构。USMLE Step 2 的父牌组本身包含卡片,并且还有 15 个子牌组。导入器会列出直接包含卡片的每个牌组,然后为它们枚举笔记,其中也包含了它们的子项,这就导致子牌组的笔记在父牌组下被统计了一次,在它们自己名下又被统计了一次。Zanki 有几个包含自身卡片的中间牌组,这就解释了它为何多出 22%;而 MileDown 和 JLPT 的父牌组是空的,因此没有重复计算。通过“每张卡片包含卡片的祖先数量”进行建模预测得出的结果分别是 11,194 / 20,790 / 2,888 / 10,147,这与我实际测量的结果相吻合。
此问题的修复方法是让每条笔记仅保留在声明归属的最深层牌组中。我们的 17 个真实牌组的本地语料库测试此前只断言“至少包含 100 张卡片”,现在会断言确切的数量并且 24/24 测试用例全部通过。此项更改已包含在 Guru 1.5.1 中,在撰写本文时该版本正在 App Store 审核中。如果你在早期版本上导入了嵌套牌组,发现卡片数量大约翻倍,请在更新后删除该牌组并重新导入文件;现有的库不会自动重写。
三个不尽如人意的地方
- 填空关联卡片连续出现。 一个笔记的 c1、c2 和 c3 会在会话中连续出现。在 1.5.1 中,Guru 每天每个笔记只显示一张卡片,与 Anki 的“搁置关联卡片 (bury siblings)”行为一致。
- “~60 分钟”的预估时长。 每个牌组都对 20 张新卡片显示相同的预估时长,当你刚导入 17,000 张卡片时,这既不准确又令人泄气。1.5.1 版本会根据你在复习会话中实际将要看到的卡片来进行预估。
- 牌组名称。 共享牌组导入时带着它们原有的、通常很长的名称,并且会在库中被截断。这个问题仍待解决;目前建议在导入后手动重命名。
在你自己的牌组上运行相同的检查
- 在桌面端 Anki 中:文件 → 导出 → Anki 牌组包 (.apkg)。如果你希望保留学习间隔进度,请勾选 包含排程信息 (Include scheduling information);如果需要图片和音频,请勾选 包含媒体 (Include media)。
- 将文件隔空投送 (AirDrop) 到 iPhone 或保存到 iCloud 云盘,然后在“文件”应用中点击它并选择 Guru。(附截图的分步指南。)
- 对比库中的卡片数量与桌面端 Anki 中的数量。如果你的牌组包含子牌组且数量大约翻了一倍,说明你使用的是 1.5.1 之前的版本。
- 在删除测试文件之前,开启一次复习会话并检查一张填空卡片、一张图片卡片和一张音频卡片。
导入和每日复习提供免费使用,免费方案最多支持 5 个顶级牌组(导入与新建合并计算;导入到现有的顶级牌组中仍然免费),整个子牌组树算作一个。如需编辑、同步、学习锁定 (Study Lock) 以及无限牌组,可以升级 Pro 版本(每月 $4.99 并含 3 天试用,每年 $39.99,终身版 $24.99)。每个牌组都可以随时导出为标准的 .apkg 文件。
常见问题 (FAQ)
导入会保留我的复习记录和进度间隔吗? 只要包在导出时勾选了“包含排程信息 (Include scheduling information)”,它就会保留排程状态(到期日、稳定性和难度)。如果导出时未勾选,导入后将全部作为新卡片。
它能处理 AnKing 吗? 本次测试中的 USMLE Step 2 牌组使用的是带有 14 种填空变体和彩色强调的 AnKing 风格笔记类型,它们都成功渲染了。完整的 AnKing Step 牌组文件更大,媒体更多,因此预期导入时间将接近一分钟,而不是 10 秒。AnkiHub 的更新不会自动同步到 Guru;你需要重新导入一份新的导出文件。详情请参阅 iPhone 上的 AnKing 和 Zanki。
为什么音频牌组导入花了 89 秒,而 Zanki 只花了 15 秒? 导入时间随着媒体文件的数量而增加,而不是卡片数量。JLPT eggrolls 拥有 10,107 个音频文件;而 Zanki 的图片要少得多,虽然体积更大。
这些截图是在真实设备上截取的吗? 它们来自于运行了与 App Store 发布版本相同构建的 iOS 模拟器(iPhone 16 Pro Max);导入引擎和渲染器与实体设备上完全相同。在物理 iPhone 15/16 设备上的导入时间也在同一范围内。
卡片中的外部链接有效吗? 目前还不行。卡片文本内的链接会显示为灰色文本,而不是像上面的 MileDown 卡片中那样的可点击链接。
用你自己的牌组试试看
Guru 能够完整无损地导入包含填空、媒体、子牌组和排程信息的 .apkg 和 .colpkg 文件。免费方案提供导入和每日复习功能,最多支持 5 个顶级牌组(导入或新建合并计算)。如需无限制使用及更多高级功能,可选择升级至 Pro。
获取 Guru