一、创意介绍
DriverTest 是一款基于 Android 的驾考知识卡片学习助手。它的核心思路很简单:把你需要记忆的驾考知识点变成一张张知识卡片,支持手动输入、拍照 OCR 和 AI 智能生成三种方式创建,然后用间隔复习算法帮你科学安排每天的复习任务。不用刷几千道题,只需要针对自己的薄弱点,用碎片时间反复回顾,就能把科目一和科目四的知识点记得牢牢的。
二、创意背景
说来惭愧,这个项目的灵感来自我自己考驾照的经历。
当时科目一我刷了整整一个星期、做了 1500 多道题,考完之后不到两个月,朋友问我一个交通标志的含义,我居然完全想不起来了。那种感觉特别挫败——明明考了 98 分,但知识好像只是"暂存"在脑子里,考完就清空了。
后来我开始观察身边备考驾照的朋友,发现几乎每个人都有类似的困扰:题目刷了很多,但真正记住的没多少;每次打开刷题 App 都是从第 1 题开始,毫无针对性;看到教材上划的重点、别人分享的笔记截图,想整理成自己的复习资料,只能手动一个字一个字地打。
说白了,传统刷题 App 解决的是"有没有题做"的问题,但没解决"怎么真正记住"的问题。它们给你一个 1500 题的题库,让你从头刷到尾,却不告诉你哪些是你已经掌握的、哪些是你反复出错的、哪些是你今天最应该复习的。
于是我就在想,能不能做一个更轻量、更个性化的工具——不需要海量题库,而是让用户自己决定要记什么,然后用类似 Anki 那种间隔复习的方式,帮用户在遗忘曲线的最佳节点上反复回顾,真正把知识点内化。
另外,现在大模型这么强,能不能让 AI 帮忙生成知识点卡片?比如我对"高速公路限速规定"不太熟,直接输入这个关键词,AI 就能自动帮我整理出几条结构化的知识点,我只需要确认保存就行了。这样就不用手动去翻教材、查资料、打字录入了。
再加上 OCR 拍照识别——教材上、驾考宝典 App 上看到的重要内容,拍个照就能自动提取文字生成卡片。三种输入方式配合,基本上覆盖了所有"想把某个知识点记录下来"的场景。
所以 DriverTest 的定位不是一个刷题工具,而是一个属于用户自己的驾考知识卡片构建器。它帮你把零散的知识点收集起来,然后科学地安排复习,让你用最少的时间达到最好的记忆效果。
三、创意目标与价值
DriverTest 要解决的核心问题是:驾考理论备考中,如何从"被动大量刷题"变成"主动精准记忆"。具体来说,它带来三个实实在在的价值:
1、主动构建知识卡片本身就是一次深度记忆。很多人觉得做卡片浪费时间,但认知科学的研究表明,当你把一个知识点用自己的方式整理、归纳、写出来的时候,记忆效果远好于被动地看一遍或者做一道选择题。DriverTest 让你自己决定要记什么、怎么记,这个过程就是第一轮记忆。
2、AI 帮你省掉最枯燥的整理工作。这是我觉得最有意思的地方——你只需要输入一个关键词,比如"扣分标准"“交警手势”“限速规定”,DeepSeek 大模型就会自动生成一批结构化的知识卡片,每张卡片包含标题和详细内容,你可以预览、编辑、选择保存。相当于有了一个 24 小时在线的驾考知识助手,你想学什么它就能帮你整理什么。
3、间隔复习算法让记忆效率最大化。复习每张卡片的时候,需要标记自己的掌握程度(不熟悉 / 模糊 / 掌握),系统会根据你的标记自动计算下次该什么时候再复习这张卡片。不熟悉的卡片会频繁出现,已经掌握的卡片会逐渐拉长间隔。每天打开 App,它会自动告诉你今天需要复习哪些卡片,你不用操心"该复习什么"这件事。
跟市面上的驾考 App 相比,DriverTest 最大的不同在于思路:别人给你题库让你刷,DriverTest 给你工具让你构建自己的知识体系。它不是要替代驾考宝典之类的刷题 App,而是提供一种互补的备考方式——用刷题 App 发现薄弱点,用 DriverTest 整理和记忆这些薄弱点。具体对比一下:
学习方式——传统刷题 App 是被动做题、海量题库,DriverTest 是主动建卡、精准记忆;
内容来源——传统刷题 App 只能做平台预设的题库,DriverTest 支持手动输入、OCR 拍照、AI 生成三种方式,内容完全由用户自己决定;
复习策略——传统刷题 App 是统一顺序刷题、没有重点,DriverTest 基于掌握度进行间隔复习,薄弱卡片高频出现,已掌握的逐渐拉长间隔;
个性化程度——传统刷题 App 所有人做的都是同一套题,DriverTest 每个人的卡片库和复习节奏都不同,完全因人而异;
AI 能力——传统刷题 App 基本没有 AI 能力,DriverTest 接入 DeepSeek 大模型,输入关键词即可自动生成结构化知识点卡片;
离线能力——传统刷题 App 大多需要联网,DriverTest 的拍照 OCR 采用 Google ML Kit 离线识别,没网也能正常使用;
使用场景——传统刷题 App 需要专门腾出大块时间来刷题,DriverTest 适合碎片时间随时打开翻两张卡片。
说白了,刷题 App 像一本砖头厚的练习册,DriverTest 更像一个可以放进口袋的单词卡盒——轻便、灵活、完全由你掌控。另外,DriverTest 的 OCR 功能用的是 Google ML Kit 的离线中文识别,不需要联网就能用,这在驾校地下室、考场等候区这些网络不好的场景下特别实用。
四、实现路径
技术路线:
DriverTest 是一款纯原生 Android 应用,使用 Kotlin 语言开发,UI 全部基于 Jetpack Compose 构建。架构上采用 MVVM + Repository 模式,依赖注入用 Hilt,本地存储用 Room 数据库。下面按模块介绍一下技术选型和设计思路:
1、UI 层——全部使用 Jetpack Compose 声明式 UI,Material 3 设计语言,在 Android 12 以上设备自动跟随系统壁纸取色(Dynamic Color)。整个应用只有一个 Activity,内部通过 Navigation Compose 管理四个页面的路由:学习页、添加页、统计页、设置页。
2、数据层——Room 数据库设计了两张核心表:knowledge_cards(知识卡片)和 review_records(复习记录)。每张卡片可以记录来源(手动 / OCR / AI)、标题、内容、图片路径。每次复习都会产生一条记录,包含掌握度标记和复习日期。DAO 层支持 Flow 响应式查询,UI 层可以实时观察到数据变化。
3、AI 集成——这是整个项目最有技术含量的部分。通过 Retrofit + OkHttp 调用 DeepSeek Chat API,我写了一个精心设计的 System Prompt,让 AI 以严格的 JSON 数组格式返回驾考知识点卡片。但大模型的输出有时候不那么稳定,偶尔会在 JSON 外面套一层 Markdown 代码块或者加一些多余的说明文字。为此我专门写了一个 JsonParser,先识别并剥离 Markdown 代码围栏(json ... ),再提取第一个完整的 JSON 数组,最后用 Gson 反序列化。这样无论 AI 的输出格式怎么飘,都能稳定解析出卡片数据。
4、OCR 模块——使用 Google ML Kit 的 ChineseTextRecognizerOptions,中文识别模型在首次使用时自动下载,之后完全离线运行。拍照功能用了 CameraX + TakePicture 合约 + FileProvider 方案,比简单的 TakePicturePreview 更稳定,能获取完整分辨率的照片再送入 OCR 引擎。
5、间隔复习算法——核心逻辑在 StatsRepository 中。每天打开学习页,系统会查询今天还没有复习记录的卡片,形成当天的复习队列。用户学习完一张卡片后标记掌握度,不熟悉的卡片会在当天重新加入队列尾部,模糊和掌握的卡片则根据间隔规则安排到未来的日期。连续学习天数的计算是另一个巧妙的点——从今天开始逐天向前检查,看每一天是否有复习记录,直到中断为止。
6、Canvas 图表——统计页的每日进度柱状图没有引入任何第三方图表库,而是直接用 Compose 的 Canvas API 手绘的。drawRect 画柱体,nativeCanvas.drawText 画日期和数字标签,代码量不大但效果不错,是一个很好的 Compose Canvas 实践。
整个项目大约 50 个 Kotlin 源文件,3800 行左右的代码量。对于一个具备完整 MVVM 架构、三种创建方式、智能复习系统、统计仪表盘的 App 来说,这个代码量控制得相当精简,这得益于 Compose 的声明式特性和 Kotlin 的简洁语法。
五、Demo 展示
1、学习页主界面——展示翻转卡片的正面(知识点标题)和背面(详细内容),底部显示三个掌握度按钮(不熟悉 / 模糊 / 掌握),顶部显示今日复习进度条。
2、添加页 AI 搜索——输入"高速公路限速规定"等关键词后,展示 AI 生成的卡片列表,每张卡片前有勾选框。
3、添加页拍照 OCR——展示拍照界面或 OCR 识别结果页面,显示从图片中提取的中文文字已自动填入卡片表单。
4、统计页——展示四个概览数据卡片(总卡片数、掌握率、今日复习量、连续学习天数)以及下方的每日进度柱状图。
Demo APK 下载地址:https://github.com/cwh1234/driver_app/releases
下载 app-release.apk 即可在 Android 设备上直接安装体验。
系统要求:Android 8.0 (API 26) 及以上。
六、代码仓库(应用赛道)
Demo 链接:https://github.com/cwh1234/driver_app
欢迎大家下载体验

