【无标题】

文章目录

自定义词库的背单词助手------设计思路与实现要点

一、项目愿景

我想做一个小软件或工作流,一句话概括就是 "自定义词库的背单词助手"

核心功能:

  1. 导入自定义词库(先支持 md/txt/xlsx,后续再补充拍照识别等)
  2. 呈现单词读音(音标 + 音频)

二、MVP 数据流

整体处理流程如下:

复制代码
导入文件(md/txt/xlsx) → 解析成 [{word, 释义?}]
                ↓
         匹配 ECDICT → 补全音标、词频、词性
                ↓
    前端卡片展示:单词 + IPA + 🔊播放按钮
                ↓
      音频:点击→有道API→缓存到本地→播放

三、音频方案

  • 最终方向:在线优先,离线降级为本地
  • 初期开发:先依托在线拉取

四、交互形态

首选 卡片翻看模式

  • 正面:英文 + 音标 + 点击UI放音频
  • 反面:中文释义 + 相关用法

五、运行环境与演进愿景

  • 起步 :本地网页(uvicorn app:app --reload,访问 localhost:8000
  • 演进路线:本地网页 → 互联网网站 → 桌面独立程序 → 手机应用商城
  • 架构硬要求前后端彻底分离
    • 后端:纯 FastAPI,只吐 JSON 和音频
    • 前端:不依赖任何框架的静态页
  • 好处:一份核心代码,本地直接跑、部署上线、Tauri 套壳桌面端、Capacitor 打包 App,都无需改动

六、代码中的三个扩展点(来自 README)

  1. dict_lookup() ------ 可替换的词典核心。当前内置 8 个 demo 词,替换成 ECDICT 的 stardict.csv(77 万词,含 IPA、词频、词性,免费离线)只需改造这一个函数。
  2. /audio 接口 ------ 已做成"在线优先"代理结构。要加离线降级,只需在拉有道之前先查本地 cache/ 目录,命中即返回。
  3. next(known) ------ 间隔重复接入点。目前顺序翻页,接上 SM-2 算法即可拥有 Anki 式复习。


七、初期问题与解决方案

问题 1:后台没有词库,用户导入的是英文+中文释义

解决方案:释义以用户导入的为准,词典只兜底音标。

  • 用户导入 hydrogen 氢气,背面就显示"氢气"
  • 若只写单词没给释义,才去内置词典查;查不到则提示"在词库里给它加上释义即可显示"

输入格式设计------让用户怎么写都能解析

要求正则足够"灵活",自动识别分隔符。支持的写法:

复制代码
hydrogen 氢气
hydrogen = 氢气
hydrogen: 氢气
hydrogen | 氢气
hydrogen,氢气
hydrogen, 氢气
hydrogen	氢气    (Tab 分隔,xlsx 双列同理)
hydrogen氢气      (中英文连写)
carbon dioxide 二氧化碳  (带空格的词组)

解析规则:第一段连续英文是单词,遇到第一个分隔符或第一个中文字符时,后面全算释义。这样用户几乎不用记格式。

问题 2:希望支持 .docx 文件

解决方案 :直接加解析分支,用 python-docx 读取段落文本和表格。

问题 3:点击音频播放键有 2~3 秒延迟

原因 :每次点击才去远端拉取音频,存在网络往返耗时。

解决办法(两层叠加):

  1. 前端预取:渲染当前卡片时,在后台提前请求下一张卡片的音频
  2. 后端加本地缓存/audio 接口先把有道返回的 mp3 存入 cache/ 目录,第二次听同一个词直接返回本地文件,秒开

这样,第一次听某个词仍需在线等待,但后续全程无延迟。同时,cache/ 目录里的 mp3 断网也能播放,实现了"在线优先、离线降级"的第一步。

八、运行与使用

安装依赖后启动即可:

bash 复制代码
pip install -r requirements.txt
uvicorn app:app --reload

浏览器打开 localhost:8000,把单词文件拖进去就行。

依赖说明:相比最初版本,增加了 python-docx 用于解析 Word 文档。

相关推荐
hakesashou2 小时前
python文件操作需要导入模块吗
python
wuxinyan1232 小时前
工业级大模型学习之路029:解决双智能体调用数据库报错问题
数据库·人工智能·python·学习·智能体
SunnyDays10112 小时前
Python操作Excel批注:从基础添加到高级自定义的完整指南
开发语言·python·excel
独隅2 小时前
PyTorch自动微分模块:从原理到实战一
人工智能·pytorch·python
Curvatureflight2 小时前
前端国际化 i18n 落地实践:语言包、动态文案和格式化问题怎么处理?
前端·c++·vue
kTR2hD1qb2 小时前
Claude Code Skill的介绍与使用
java·前端·数据库·人工智能
汤米粥2 小时前
python学习——核心语法三
java·python·学习
七老板的blog3 小时前
从持久化任务到多 Agent 协作
python·学习·ai
修己xj3 小时前
打造专属博文封面神器:一个开源免费的博文封面生成器ThisCover
前端