一个专注于文档结构化提取的本地化工具,基于 LangChain 高级 RAG 方案,支持 PDF 和 Word 文档的智能信息抽取。
- 📄 多格式支持:支持 PDF 和 Word 文档解析
- 🏷️ 灵活标签配置:支持单选、多选、填空三种标签类型
- 🔍 高级检索方案:集成 Multi-Query Retrieval、HyDE、ParentDocumentRetriever、RERANK、ES BM25 等
- 🤖 本地化部署:默认使用 Ollama + LanceDB,完全本地运行
- 🎯 结构化输出:基于用户配置的标签,LLM 返回结构化数据
- 🚀 一键启动:提供命令行快速启动方案
- 🔌 开放接口:易于扩展其他 AI API 和向量数据库
- 后端:Python + FastAPI + LangChain
- 前端:Next.js + TypeScript + Tailwind CSS
- 向量数据库:LanceDB(默认)
- LLM:Ollama(默认,可扩展)
- Embedding:Ollama(默认,可扩展)
- 包管理:pip(Python)
前置要求:Docker Desktop >= 4.26 (Windows/Mac) 或 Docker + Docker Compose v2 (Linux)
# 仅启动后端 + 前端(Ollama 运行在宿主机)
./docker_run.sh
# 启动后端 + 前端 + QAnything OCR/PDF 模型服务
./docker_run.sh --with-models
# 完全容器化(含 Ollama 容器)
./docker_run.sh --with-ollama
# 启用全部服务
./docker_run.sh --full
# 后台运行
./docker_run.sh -d
# 停止服务
./docker_run.sh --down首次启动时会自动构建镜像。访问地址:
- 前端:http://localhost:3001
- 后端 API:http://localhost:8888
Windows 用户:需在 WSL2 或 Git Bash 中运行
docker_run.sh,或直接使用:docker compose -f docker-compose-win.yaml up
详细 Docker 配置说明见本文档底部 Docker 部署 章节。
- Python 3.10+
- Node.js 18+ 和 npm
- Ollama(本地运行,可选但推荐)
# Linux/Mac
./install.sh
# Windows
install.bat安装脚本会自动:
- 检查并安装必要的依赖(Python、Node.js、pip)
- 创建 Python 虚拟环境
- 安装后端和前端依赖
- 创建环境变量配置文件
- 创建必要的存储目录
# 1. 创建虚拟环境并安装后端依赖
cd backend
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/Mac
source .venv/bin/activate
pip install -r requirements.txt
cd ..
# 3. 安装前端依赖
cd frontend
npm install
cd ..
# 4. 配置环境变量
cp backend/.env.example backend/.env
# 编辑 backend/.env 配置 Ollama 等# Linux/Mac
./start.sh
# Windows
start.bat启动脚本会自动:
- 检查依赖是否已安装
- 检查环境变量配置
- 启动后端和前端服务
注意:首次运行前请确保已运行 install.sh 或 install.bat 安装依赖。
详细文档请参考 系统架构文档。
- 复制环境变量模板:
cp backend/.env.example backend/.env- 编辑
backend/.env,配置 Ollama 和 LanceDB:
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=phi3:mini
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
LANCE_DB_PATH=./storage/lancedbLLM 模型(用于信息提取):
phi3:mini(3.8B, ~2.2GB) - 推荐,平衡性能和速度llama3.2:1b(1B, ~600MB) - 超轻量,极速但效果稍差qwen2:0.5b(0.5B, ~300MB) - 极轻量,最快但效果一般tinyllama(1.1B, ~650MB) - 超轻量
Embedding 模型(用于向量化):
nomic-embed-text(274MB) - 推荐,平衡性能和速度all-minilm(22MB) - 超轻量,极速但效果稍差bge-small(33MB) - 轻量且效果不错
高性能模型(需要更多资源):
- LLM:
llama2(7B, ~4GB),mistral(7B, ~4GB) - 需要更多内存和计算资源
模型选择建议:
- CPU 部署:使用
phi3:mini+nomic-embed-text(默认配置) - 极轻量需求:使用
llama3.2:1b+all-minilm - 性能优先:使用
llama2或mistral+nomic-embed-text
- 配置标签:在标签配置页面创建标签(单选/多选/填空)
- 上传文档:上传 PDF 或 Word 文档
- 文档处理:系统自动解析、向量化并索引文档
- 信息提取:基于配置的标签,从文档中提取结构化信息
- 结果查看:在结果页面查看提取的结构化数据
anything-extract/
├── backend/ # Python 后端
│ ├── app/ # FastAPI 应用
│ ├── core/ # 核心业务逻辑
│ ├── services/ # 服务层
│ ├── models/ # 数据模型
│ └── utils/ # 工具函数
├── frontend/ # Next.js 前端
│ ├── app/ # Next.js App Router
│ ├── components/ # React 组件
│ └── lib/ # 工具库
├── docker/ # Docker 构建文件
│ ├── Dockerfile.backend # Python 后端镜像
│ ├── Dockerfile.frontend # Next.js 前端镜像
│ ├── docker-entrypoint.sh # 后端容器入口
│ └── qanything-models-entrypoint.sh # QAnything 模型服务入口
├── docker-compose-linux.yaml # Linux Docker Compose
├── docker-compose-mac.yaml # macOS Docker Compose
├── docker-compose-win.yaml # Windows Docker Compose
├── docker_run.sh # Docker 一键启动脚本
├── .env.docker.example # Docker 环境变量模板
├── docs/ # 文档
│ └── ARCHITECTURE.md # 系统架构文档
└── storage/ # 数据存储
├── documents/ # 解析后的文档
├── lancedb/ # 向量数据库
└── uploads/ # 上传文件
| 服务 | 描述 | 端口 | 启用方式 |
|---|---|---|---|
backend |
Python FastAPI 后端 | 8888 | 默认 |
frontend |
Next.js 生产前端 | 3001 | 默认 |
qanything_models |
QAnything OCR + PDF 解析服务 | 7001, 9009 | --with-models |
ollama |
Ollama LLM/Embedding 容器 | 11434 | --with-ollama |
| 平台 | compose 文件 | Ollama 地址 | QAnything 镜像 |
|---|---|---|---|
| Linux | docker-compose-linux.yaml |
localhost:11434 |
qanything-linux:v1.5.1 |
| macOS | docker-compose-mac.yaml |
host.docker.internal:11434 |
qanything-mac:v1.5.1 |
| Windows | docker-compose-win.yaml |
host.docker.internal:11434 |
qanything-win:v1.5.1 |
# 一键启动(自动检测平台)
./docker_run.sh
# 含 QAnything OCR/PDF 模型服务
./docker_run.sh --with-models
# 完全容器化(含 Ollama 容器)
./docker_run.sh --with-ollama
# 全部服务
./docker_run.sh --full
# 后台运行
./docker_run.sh -d
# 重新构建镜像
./docker_run.sh --build
# 停止服务
./docker_run.sh --down或直接使用 Docker Compose:
# 基础启动
docker compose -f docker-compose-win.yaml up
# 启用模型服务
docker compose -f docker-compose-win.yaml --profile models up
# 全部服务
docker compose -f docker-compose-win.yaml --profile full up--with-models 会启动 xixihahaliu01/qanything-{platform}:v1.5.1 容器,该镜像内置了所有 ML 模型(OCR、PDF 解析),存储于镜像内的 /root/models。
完全独立,无需 QAnything 项目:OCR/PDF 服务代码已内置于本项目 dependent_server/ 目录,Docker 容器会挂载该目录并建立软链:
dependent_server/ocr_server/ocr_models→/root/models/ocr_modelsdependent_server/pdf_parser_server/pdf_to_markdown/checkpoints→/root/models/pdf_models
然后仅启动 OCR(:7001) 和 PDF Parser(:9009) 两个服务供后端调用。
storage/ 目录挂载到后端容器,重建容器不会丢失数据:
storage/lancedb/- 向量数据库storage/documents/- 解析后的文档storage/uploads/- 上传文件storage/database.db- SQLite 数据库
- 系统架构文档 - 完整的系统架构、API 接口、安装和使用指南
欢迎提交 Issue 和 Pull Request!
MIT License