# bandu **Repository Path**: hackcat_admin/bandu ## Basic Information - **Project Name**: bandu - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-09 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 伴读书房 本地运行的 AI 语文伴读应用。家长上传 PDF 或粘贴原文后,应用会提取阅读材料,标出难词和关键句,并生成一份适合小学中高年级孩子的伴读提问提纲。 ## 功能 - 上传 PDF,优先用 `pdftotext` 抽取文字。 - 扫描版 PDF 会调用硅基流动上的 OCR 模型。 - 可手动编辑识别文本后再生成。 - 使用硅基流动 OpenAI 兼容接口调用 DeepSeek V4 Flash。 - 未配置 API key 时,会生成一份本地示例版,方便先体验流程。 - 支持原文高亮、复制 Markdown、导出 `.md` 文件。 - 按“书/文章/合集”保存每次伴读记录,方便回看连续阅读过程。 ## 启动 ```bash cp .env.example .env ``` 编辑 `.env`,填入自己的硅基流动 key: ```bash SILICONFLOW_API_KEY=你的_key SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1 AI_MODEL=deepseek-ai/DeepSeek-V4-Flash AI_TIMEOUT_MS=120000 OCR_MODEL=PaddlePaddle/PaddleOCR-VL-1.5 OCR_MAX_PAGES=24 OCR_DPI=150 OCR_CROP=true PORT=5173 ``` 启动应用: ```bash npm start ``` 打开: ```text http://localhost:5173 ``` ## OCR 文字版 PDF 会先用 `pdftotext` 抽取文字。像《世说新语》《鲁滨逊漂流记》这类图片型/扫描型 PDF,会把页面渲染为图片后调用硅基流动上的 OCR 模型。 如果硅基流动后台模型名不同,修改 `.env` 里的: ```bash OCR_MODEL=PaddlePaddle/PaddleOCR-VL-1.5 ``` `OCR_MAX_PAGES` 用来限制单次 PDF 最多识别多少页。你后续每天切成 2 页或 10-20 页上传,默认值 `24` 足够。 `OCR_DPI` 控制 PDF 渲染成图片的清晰度。当前测试材料用 `150` 更稳。 默认使用硅基流动上的 `PaddlePaddle/PaddleOCR-VL-1.5`,成本更适合高频伴读。 `OCR_CROP=true` 会在 OCR 前裁掉页面外圈的印刷控制条、裁切线和时间戳。对你这种从教辅 PDF 导出的每日切片更稳;如果某些材料正文贴边,可以改成 `false`。 本机 PaddleOCR 只作为没有配置硅基流动 key 时的备用方案。如需启用本机备用 OCR,可以安装: ```bash python3 -m pip install paddleocr paddlepaddle pypdfium2 ``` 如果 OCR 不可用,应用仍可使用:上传扫描版 PDF 失败时,可以手动粘贴原文。 ## 伴读记录 每次生成伴读提纲后,可以选择一个已有阅读项目,或填写一个新项目名称,再点击“保存本次记录”。适合这样组织: - 一本书:项目名填书名,每 10-20 页保存为一次记录。 - 一篇文章:项目名填文章名,全文或分段保存为记录。 - 阅读合集:项目名填合集名,用页码/范围区分每次材料。 记录会保存在本机: ```text data/library.json ``` 这个目录已加入 `.gitignore`,不会默认提交到 Git。 ## 安全说明 - 不要把真实 API key 写入代码。 - `.env` 已加入 `.gitignore`。 - 如果 key 曾经发到聊天或其他公开位置,建议在硅基流动后台重新生成并作废旧 key。