Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
reiqr/shiroha-quiz: 支持自定义题库导入、练习刷题、模拟考试与错题复习的轻量级刷题应用(现已支持AI核对、AI解析)

reiqr/shiroha-quiz: 支持自定义题库导入、练习刷题、模拟考试与错题复习的轻量级刷题应用(现已支持AI核对、AI解析)

7 hours ago

Shiroha Quiz


Shiroha Quiz

Shiroha Quiz 是一个轻量、开源的刷题工具,支持自导入题库、练习、考试与多端使用。

你手里有 Word、Excel、TXT、JSON,或者题目和答案分开的文件。Shiroha Quiz 尝试把这些内容自动识别成可练习、可考试、可复盘的个人题库。

当前主要有两条公开使用线:

  • Web 版:适合电脑整理题库,支持导入、练习、考试、错题、备份、AI 与 OCR。
  • Android 原生版:当前主推,Kotlin + Compose 原生实现,支持 AI、多空填空、背题/斩题、图片题和智能复习。
看板娘
[!IMPORTANT]
更新节奏:最近工作稍微闲了一些,应该会开始恢复更新。问题反馈仍欢迎提交。



快速开始

| 你的情况 | 下载什么 | 入口 | | --- | --- | --- | | Android 手机 | 原生版 APK,文件名以 -native-release.apk 结尾 | 下载 | | Windows 电脑 | Web ZIP,解压后双击 打开Shiroha Quiz.cmd | 下载 | | 先体验一下 | 在线版,免安装 | 打开在线版 |

原生版与 Web 版使用独立版本号,不是新旧关系。下载时认文件名即可,当前版本以 Releases/latest 为准。
当前仍处于测试阶段,不建议用于高风险正式考试场景。重要题库请定期备份。

原生版与 Web 版区别

| 维度 | Android 原生版 | Web 版 | | --- | --- | --- | | 使用方式 | 安装 APK,Android 8.0+ | 解压后双击启动器,免安装 | | 数据存储 | 本地 SharedPreferences | 浏览器 LocalStorage | | 离线能力 | 除 AI、在线文档识别外可离线 | 基础功能可离线,扩展库可按需下载 | | 文档识别 | MinerU 在线 OCR、DOCX 图片提取 | PDF.js 文字层解析、OCR 测试区 | | 特色 | 背题、斩题、智能复习、暗夜模式、平板适配 | 桌面题库清洗、OCR、AI 导入与单题解析 | | 适合 | 手机日常刷题 | 电脑整理题库与快速使用 |

展开查看两端详细差异


刷题与考试

双端都有

  • 支持随机练习、顺序练习、考试、错题复习、收藏和学习记录。
  • 支持单选、多选、判断、填空(含多空)和简答题。
  • 支持顺序练习进度、题目快速编辑、考试倒计时和答题卡。
  • 答错题目可进入错题本,学习记录可用于后续复盘。
Android 原生版额外支持(Web 当前没有)
  • 即时练习 / 批量练习:可选择立即判题、自动下一题,也可整组提交。
  • 背题模式:直接查看答案与解析,不计入普通练习记录。
  • 斩题:把已经掌握的题移出普通练习池,并可随时恢复。
  • 智能复习:根据错题状态安排到期复习。
  • 选项打乱:练习与考试可独立控制。
  • 字号与紧凑模式:题干、选项字号可调,适合长题阅读。
  • 错题作用域:可在当前题库 / 全部题库之间切换,并按掌握状态筛选。
  • 优先未做题:随机组题时优先抽取尚未练习过的题,数量不足再从已做题补足。
  • 考试细化设置:可按题型设置题量、分值和时长,并支持滑动切题。
Web 版额外 / 实现不同
  • 考试结果可按题型汇总得分。
  • 更偏桌面端快速刷题与题库整理,不提供背题、斩题和智能复习。

题库导入与文档处理

双端都有

  • 支持 docx、xlsx / csv、txt、json 和粘贴文本导入。
  • 支持“题目文件 + 答案文件”双文件导入。
  • 自动识别题号、题干、选项、答案、解析、题型和分区。
  • 支持导入预览、异常提示、手动修正和全文查找 / 替换。
  • 支持普通 JSON、跨端备份和图片题数据互通。
Android 原生版额外支持
  • DOCX 内嵌图片提取并绑定到题目。
  • 材料题 / 共用题干、集中答案区等复杂格式的专门解析与回归保护。
  • MinerU 在线 OCR:支持扫描 PDF 识别、图片提取与人工绑定。
Web 版额外支持
  • PDF.js 直接解析文字层 PDF。
  • OCR 测试区:扫描 PDF 可转为文本或 DOCX 后再人工核对导入。
  • 更适合在电脑上先做全文清洗,再进入识别预览。

AI 功能

双端都有

  • AI 导入核对、补解析和结构化结果优先。
  • 练习页支持单题 AI 解析与连续追问。
  • 确认后的 AI 解析可以保存回题库。
  • 支持 DeepSeek、OpenAI 兼容接口和自定义接口。
Android 原生版额外支持(Web 当前没有)
  • 无答案题 AI 临时参考答案:默认关闭,只用于本次判题,不写回题库,也不进入错题本。
  • API Key 使用 Android Keystore 加密保存。
Web 版额外支持
  • AI 可用于整理原始题库文本后再进入导入流程。
  • 可连接 Ollama / LM Studio 等本机 OpenAI 兼容服务。
  • 单题追问可产出可独立保存的完整解析草稿。

备份与跨端

双端都有

  • 支持本地完整备份与恢复。
  • Web 与原生版题库格式互通。
  • 图片题可通过 ZIP 保留素材并跨端导入。
  • 支持 WebDAV 云备份与远程恢复。
Android 原生版额外支持
  • 可选每天 / 每周自动 WebDAV 备份,并设置网络、充电和旧备份保留条件。
Web 版实现特点
  • 支持 WebDAV 远程列表、SHA-256 校验,以及合并 / 覆盖恢复。

界面与平台能力

Android 原生版

  • Kotlin + Jetpack Compose + Material3 原生界面。
  • 支持浅色 / 暗夜模式、Shiroha 模式、平板侧边导航和系统返回键。
  • 主要面向手机和平板日常刷题。
Web 版
  • HTML + CSS + JavaScript,浏览器直接运行。
  • 支持本地启动器和在线版,主要面向电脑端题库整理与快速使用。
两端题库与备份格式持续保持互通;具体功能变化以 CHANGELOG 和 Releases 为准。


当前能力

刷题与考试

  • 题型:单选、多选、判断、填空(含多空)、简答题。
  • 练习:随机练习、顺序练习、考试、错题复习、收藏与学习记录。
  • 范围与进度:支持题库分组、跨题库练习范围和顺序练习进度。
  • 原生特色:即时/批量练习、随机练习优先未做题、背题、斩题、选项打乱、字号调整和智能复习。
  • 考试:支持倒计时、答题卡、交卷提醒和结果统计。
  • 快速编辑:练习中可直接修改题目并写回来源题库。
  • 学习记录:每轮练习或考试生成独立记录,支持逐题复盘与只看错题筛选。

题库导入

  • 格式:支持 docx、xlsx / csv、txt、json、文字层 pdf 和粘贴文本。
  • 双文件导入:支持“题目文件 + 答案文件”自动匹配。
  • 自动解析:识别题号、题干、选项、答案、解析、题型和分区。
  • 核对与修正:支持导入预览、异常提示、手动修正、全文查找/替换。
  • 原生版:支持 DOCX 内嵌图片提取、材料题/共用题干和集中答案区等复杂格式。
  • Web 版:支持 PDF.js 文字层解析,并提供扫描 PDF OCR 测试兜底。
  • 原生解析器持续维护真实题库回归测试,复杂边界说明放在专项文档中。

AI 辅助

  • AI 导入:Web 与原生版均支持整理 / 核对 / 补解析,优先使用结构化题目结果。
  • 单题 AI:练习页可按需解析与追问,确认后保存解析。
  • 临时参考答案:原生版可选启用,默认关闭,不写回题库、不进入错题本。
  • 接口:支持 DeepSeek、OpenAI 兼容接口和自定义接口;Web 版也可连接 Ollama / LM Studio。
AI 结果仅作辅助参考;使用外部 AI 服务时,题目文本会发送给你配置的服务商。API Key 不写入题库备份。

备份与跨端

  • 本地备份:支持完整数据备份和恢复。
  • 跨端互通:Web 与原生版题库格式互通,图片题可通过 ZIP 保留素材。
  • WebDAV:支持云备份与远程恢复,原生版还可选自动备份。
  • 密钥存储:原生版 API Key 使用 Android Keystore 加密保存。

使用说明

Web 版

  1. 从 Releases 下载 Web ZIP 并解压。
  2. 双击 打开Shiroha Quiz.cmd,脚本会启动本地服务并打开浏览器,无需预装 Python。
  3. 在 导入题库 中粘贴文本或上传文件。
  4. 在 识别预览 中核对题型、答案和解析后导入。
  5. 进入 练习 或 考试 开始使用。
不建议直接双击 index.html。PDF/OCR 依赖 Web Worker 和 ES module,file:// 下部分能力会失效,而且数据来源与启动器模式不同。

Android 原生版

  1. 安装 *-native-release.apk。
  2. 在 导入 页面选择文件或粘贴文本。
  3. 在 核对页 检查识别结果,必要时手动修正或使用 AI 辅助。
  4. 选择 练习、考试、背题 等模式开始使用。
  5. 错题、收藏、学习记录和智能复习会保存在本机。

数据备份建议

  • 重要题库导入后及时导出备份。
  • 换设备、清缓存、卸载 App 前先备份。
  • Web 版建议固定使用同一种访问方式,在线版、本地服务和 file:// 的数据互不相通。
  • Web JSON 与原生备份可跨端导入;含图片题建议使用 ZIP。
  • WebDAV 使用方式见 WebDAV 云备份使用指南。

导入格式与策略

推荐优先使用结构清晰的 docx、xlsx / csv、txt 或 JSON。旧版 .doc、.xls、.xlsm 建议先另存为新版格式。

基本流程:

上传 / 粘贴
→ 自动解析
→ 识别预览
→ 人工核对
→ 导入题库

详细文档:

如果原始题库很乱,也可以先用 AI 做格式清洗,但建议只统一题号、选项、答案和解析格式,不修改题意、不编造答案。

下载与更新

每次正式发布通常提供 Android 原生 APK 与 Web ZIP。近期功能变化以 Release 说明和 CHANGELOG 为准,README 只保留当前稳定能力概览。

Web ZIP 不包含约 88 MB 的 PDF.js / MathJax / Tesseract 离线扩展资源,可在 apps/web/libs/ 下按需下载;联网时也可使用 CDN 兜底。


以下为开发者内容。

仓库结构

shiroha-quiz/
├── apps/
│   ├── web/                        # Web 版
│   └── android/                    # Android 工程
│       └── app/src/native/         # 原生 Compose 源码
│           ├── ai/                 # AI
│           ├── importer/           # 导入解析
│           ├── document/           # 文档识别
│           ├── security/           # 密钥存储
│           ├── state/              # 状态管理
│           ├── sync/               # WebDAV
│           └── ui/                 # Compose UI
├── docs/                           # 文档索引见 docs/README.md
├── test/                           # 回归与 Web 测试
├── assets/                         # 宣传素材
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
└── README.md

Android 工程仍保留两个 flavor:

| Flavor | 包名 | 技术路线 | | --- | --- | --- | | web | com.yiqiu.shirohaquiz | 历史 WebView 壳 | | native | com.reqir.shirohaquiz | Kotlin + Jetpack Compose + Material3 |


本地运行

Web

apps/web/打开Shiroha Quiz.cmd

也可以使用任意静态服务器:

npx serve apps/web

在线版:https://reiqr.github.io/shiroha-quiz

Android

cd apps/android
./gradlew assembleNativeRelease

Windows PowerShell:

.\gradlew.bat assembleNativeRelease

测试与回归

解析器外部回归:

.\run-regression.ps1

原生 JVM 单元测试:

cd apps/android
.\gradlew.bat :app:testNativeDebugUnitTest

WebDAV 请求测试:

node --test test/web-webdav/request.test.cjs

AI 练习回归位于 test/web-ai-practice/,需要 Node、Playwright 和可用的 Chromium / Edge。

相关说明:


开发状态与文档

历史开发计划已归档到 docs/archive/。当前功能状态以 README、CHANGELOG、Releases 和原生开发进度为准。


参与贡献 / 提交反馈

欢迎通过 Issue 提交 Bug、题库兼容问题、导入失败样例、功能建议或文档修正。

提交时请注明平台(原生版 / Web 版),方便定位问题。


贡献者

感谢以下贡献者:

  • @jiesou —— Web 练习页单题 AI 解析/追问与 WebDAV 同步相关贡献
  • @anupamme —— 指出 AI API Key 明文存储问题并提供最小修复思路

许可证

本项目采用 GPL-3.0 开源。

Chat with me