Skip to content

ydzat/knowforge

Repository files navigation

KnowForge

简体中文 | English

版本 许可证 Python

KnowForge 是一个基于人工智能的自动化学习笔记生成器,能够从多种输入源(PDF、图片、代码、网页链接)整合处理,生成结构化的笔记,支持多种格式输出。

特性

  • 多源输入支持:处理PDF文档、图片(OCR)、网页链接、代码文件
  • 智能文本拆分:根据章节/段落自动拆分大文档
  • 记忆管理系统:通过向量化和ChromaDB实现上下文记忆和检索
  • AI生成增强:使用大语言模型生成摘要和笔记内容,支持多种LLM接口
  • 高级OCR处理:结合LLM和知识库的OCR结果校正和增强
  • 多格式输出:支持Markdown、Jupyter Notebook、PDF格式
  • 高级日志与国际化系统:基于Logloom的全面国际化支持和日志系统
  • 多语言支持:支持中文和英文界面
  • 跨平台兼容:支持Windows和Linux系统

版本规划

  • 当前版本:v0.1.7(输出系统增强已完成)
  • v1.0.0:完整功能版本(包括Web界面)
  • v2.0.0:MoeAI-C系统集成版本

开发路线图

  • v0.2.0(预计:2025年6月):高级记忆管理与LLM增强
  • v0.3.0(预计:2025年8月):知识图谱与跨文档关系
  • v0.4.0(预计:2025年10月):学习辅助与智能评估
  • v0.5.0-v1.0.0(预计:2025年12月-2026年3月):Web界面与用户体验

开发进度

参考KnowForge路线图文档,当前已完成v0.1.7版本(输出系统增强),正在进行v0.2.0版本(高级记忆管理与LLM增强)的开发。

最新里程碑:

  • 2025年5月16日 (v0.1.6):完成高级PDF图像提取和OCR增强功能,实现多方法冗余提取策略和LLM增强OCR结果,提取成功率达到100%。同时完善高级记忆管理系统,实现记忆访问统计更新和工作记忆优化。
  • 2025年5月14日 (v0.1.5):规划文档综合处理功能,设计DocumentAnalyzer、ContentExtractor等核心组件,准备开发PDF内容自动识别能力。
  • 2025年5月10日 (v0.1.4):实现OCR-LLM-知识库集成,开发了EmbeddingManager和LLMCaller模块,大幅提升了图像文本识别质量。
  • 2025年5月8日 (v0.1.3):将LocaleManager完全迁移至Logloom,优化了国际化资源加载机制,实现了键名智能解析功能。
  • 2025年5月5日 (v0.1.2):向量记忆管理模块优化,修复了与ChromaDB API的兼容性问题,增强了混合检索策略。
  • 2025年5月2日 (v0.1.1):集成Logloom日志系统,提升了系统的可靠性和国际化支持。

下一步计划: 现已完成v0.1.7输出功能增强,即将进入v0.2.0开发阶段,专注于高级记忆管理功能和LLM调用模块增强。根据更新后的路线图,我们已制定了明确的v1.0.0目标和详细的开发里程碑,确保在v1.0.0版本前完成Web界面开发。详细的设计方案见13_DocumentProcessingDesign.md13_AdvancedMemoryManager_Progress.md

更新后的完整开发路线图请查看08_ROADMAP_KnowForge.md,其中明确了从当前版本到v1.0.0的详细发展规划和里程碑。

安装指南

系统要求

  • 操作系统:Windows 10+、Linux (Ubuntu 20.04+, Fedora 41+)
  • Python版本:3.11或更高
  • 内存:建议4GB以上,处理大文档时推荐8GB+

方法一:使用Conda(推荐)

# 创建环境
conda create -n knowforge python=3.11
conda activate knowforge

# 克隆项目
git clone https://github.com/yourusername/knowforge.git
cd knowforge

# 安装依赖
pip install -r requirements.txt

# 安装最新版Logloom(必需)
pip install logloom

# 在conda环境中需要设置环境变量
# Linux/macOS
export DEEPSEEK_API_KEY=your-api-key-here
# Windows
set DEEPSEEK_API_KEY=your-api-key-here

方法二:使用venv

# 创建环境
python -m venv venv

# 激活环境 (Windows)
venv\Scripts\activate
# 激活环境 (Linux/macOS)
source venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 安装最新版Logloom(必需)
pip install logloom

环境配置

如果使用Conda

export DEEPSEEK_API_KEY=your-api-key-here

如果使用venv

  1. 根目录(如果不存在)创建文件.env

  2. 编辑.env文件,填入您的API密钥

DEEPSEEK_API_KEY=your-api-key-here

使用方法

命令行使用

基本用法:

python gen_notes.py generate --input-dir "input/" --output-dir "output/" --formats "markdown,ipynb"

参数说明:

  • --input-dir: 输入文件目录
  • --output-dir: 输出文件目录
  • --formats: 生成的输出格式,用逗号分隔(支持 markdown, ipynb, pdf)

查看帮助:

python gen_notes.py --help

输入文件组织

将您的文件放在以下目录结构中:

input/
├── pdf/          # 放置PDF文档
├── images/       # 放置图片
├── codes/        # 放置代码文件
└── links/        # 放置包含URL的文本文件(每行一个链接)

输出文件位置

生成的文件将保存在:

output/
├── markdown/     # Markdown文件
├── notebook/     # Jupyter Notebook文件
├── pdf/          # PDF文件
└── logs/         # 日志文件

开发进度

当前项目处于迭代3(高级功能与优化阶段)开发中,已经完成了国际化系统的全面升级,下一步将重点实现OCR功能和多格式输出支持。 详细的版本历史和计划请查看更新日志开发路线图

开发指南

详细的开发指南请参阅 开发者文档

测试

运行测试:

# 运行所有测试
pytest tests/

# 检查测试覆盖率
pytest --cov=src tests/

# 运行llm集成测试(你需要在input文件夹中放入文件后,才能进行测试)
python scripts/llm_integration_check.py

国际化与日志系统 (Logloom)

项目现已完全迁移至Logloom进行国际化和日志管理。Logloom提供了以下功能:

  • 统一国际化API:使用get_textformat_text获取翻译
  • 动态资源加载:支持register_locale_fileregister_locale_directory动态加载语言资源
  • 多语言支持:完整支持中英文界面和日志消息
  • 智能键名解析:处理多种键名格式,简化开发过程
  • 自动日志文件轮转:防止日志文件过大
  • 可配置的日志格式和级别:通过resources/config/logloom_config.yaml进行设置

新代码应直接使用Logloom API而非LocaleManager(LocaleManager现为过渡层):

# 推荐方式(直接使用Logloom)
from logloom import get_text, format_text

welcome = get_text("welcome")
error = format_text("system.error", message="发生错误")

# 过渡方式(使用LocaleManager作为Logloom封装)
from src.utils.locale_manager import LocaleManager
locale = LocaleManager("resources/locales")
welcome = locale.get("welcome")
error = locale.format("system.error", {"message": "发生错误"})

常见问题解决

EasyOCR依赖问题

  • Windows上可能需要安装Visual C++ Build Tools
  • Linux可能需要额外的系统库: apt-get install libgl1

WeasyPrint依赖问题

  • Linux: apt-get install libpango1.0-dev libharfbuzz-dev libffi-dev
  • Windows: 按照官方指南安装GTK+

Logloom问题

  • 项目需要最新版本Logloom,确保使用pip install logloom安装了最新版本
  • 如果遇到键名格式问题,请检查使用方式是否正确(详见开发指南)
  • 配置文件位置应为resources/config/logloom_config.yaml
  • 语言资源目录应为resources/locales/

项目结构

knowforge/
├── input/                  # 用户输入目录
├── output/                 # 最终输出目录
├── workspace/              # 中间缓存区
├── src/                    # 源代码
│   ├── note_generator/     # 核心逻辑模块
│   │   ├── advanced_memory_manager.py # 高级记忆管理系统
│   │   ├── advanced_ocr_processor.py # 高级OCR处理器 
│   │   ├── llm_caller.py   # LLM调用模块
│   │   ├── document_analyzer.py # 文档分析器(规划中)
│   │   ├── content_extractor.py # 内容提取器(规划中)
│   │   └── content_processor.py # 内容处理器(规划中)
│   ├── cli/                # CLI界面
│   └── utils/              # 工具类
│       ├── locale_manager.py # Logloom封装(过渡层)
│       └── logger.py       # 日志系统
├── resources/              # 静态资源
│   ├── config/             # 配置文件
│   │   ├── config.yaml     # 主配置文件
│   │   └── logloom_config.yaml # Logloom配置
│   └── locales/            # 语言资源
│       ├── zh.yaml         # 中文语言资源
│       ├── en.yaml         # 英文语言资源
│       ├── logloom_zh.yaml # Logloom中文资源
│       └── logloom_en.yaml # Logloom英文资源
├── tests/                  # 单元测试
└── scripts/                # 工具脚本

贡献指南

  1. Fork本仓库
  2. 创建您的特性分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建Pull Request

许可证

本项目采用GNU通用公共许可证v3.0 (GPL-3.0) - 详情参见 LICENSE 文件。该许可证确保软件及其衍生作品始终保持开源,并要求任何修改或衍生作品同样以GPL-3.0协议发布。

作者

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages