EPUB FastAPI DeepSeek 最后更新:

epub-AI-reader · AI 伴读平台

epub-AI-reader 以 reader3项目为起点,延续轻量章节化阅读体验,在本地提供书库、默认问题缓存、AI 聊天与 QA 日志,让每次翻页都能快速获得专业总结并记录提问,并支持进一步导出为阅读笔记,真正实现“不用AI不读书”、“不做笔记不读书”。

项目目标:结合本地 EPUB 解析与 DeepSeek AI,构建可追溯、可导出的阅读流程:提供多书库、离线 AI 缓存、错误重试与笔记导出,最终成就一个贴身阅读助手。

项目概览

目录结构:library/epubs/ 存放原始 EPUB,library/data/ 存放每本书的 _datadefault_ai_cache.jsonreading_progress.db,uv run reader3.py 生成结构化数据,uv run generate_ai_cache.py 补齐默认问答。

Why

  • 原始 reader3 只提供静态章节查看,缺乏 AI 语义分析。
  • DeepSeek 每次调用消耗时间和配额,需缓存常见问题响应。
  • 阅读回答需要保留上下文以供复习与导出。

What

  • EPUB 解析+TOC 渲染(遵循 reader3 模型)并生成 book.pkl。
  • FastAPI:普通阅读 / AI 阅读 / 聊天 / 书籍列表 / 状态 API。
  • generate_ai_cache.py 批量生成默认问答并跳过封面、目录、短内容等。
  • AI 面板:呈现缓存、记录 QA 日志、支持“重试上一个问题”。
  • export_note.py 将所有答案与 QA 合并成 Markdown 笔记并请求 DeepSeek 生成总结。

系统架构

  1. reader3.pyEPUB 解析 + 章节/图像/TOC 抽取。
  2. generate_ai_cache.py调用 DeepSeek、跳过封面/目录、保存 default_ai_cache.json。
  3. server.pyFastAPI 提供阅读、AI、图像、书籍 & 状态接口,并按最后阅读时间排序库。
  4. deepseek_client.py封装 DeepSeek 请求,遇到请求/解析错误会抛出以便前端显示并重试。
  5. export_note.py导出 Markdown 读书笔记并生成 DeepSeek 总结。

技术栈与工具

核心技术

  • FastAPI + Jinja2 构建阅读与 AI 界面。
  • sqlite3 管理 reading_progress、book_status。
  • requests + DeepSeek API,上下文内容截断到 2,000 字。
  • Marked.js 渲染 AI 回复,支持 Markdown/代码块。

开发工具

  • uv 运行脚本与服务器(参考 README 用法)。
  • sqlite3 CLI 查询 library/data/reading_progress.db。
  • Python3 + pip,依赖 ebooklib、requests、fastapi 等。
  • Git 维护,README 中记录环境与故障排查。

关键代码示例

server.py 中 /api/chat 会在成功后写入 QA 日志,出错时不会写入并触发前端重试按钮;generate_ai_cache.py 使用 should_skip_chapter 跳过封面/目录。

def append_chat_history(...):
    if cached_entry.get("filtered"):
        return
    qa_logs.setdefault(str(chapter_index), []).append({...})

此外,export_note.py 遍历 default_ai_cache.json,调用 DeepSeek 生成整体总结并导出 Markdown 笔记。

演示与截图

界面包括 templates/library.html 的书库(显示进度与完成状态),以及 templates/reader_with_ai.html 的章节 + AI 双列布局,右侧可恢复默认回答与 QA 历史。

书库界面 阅读界面
书库列出每本书的阅读进度,AI 面板默认打开并加载缓存回答。

开发计划

参考资源