Zipstack/unstract
GitHub: Zipstack/unstract
一款基于 LLM 的非结构化文档数据提取平台,通过自然语言 Prompt 将各类文档转化为结构化 JSON 并以 API 或 ETL 方式部署。
Stars: 7081 | Forks: 685
## 什么是 Unstract?
Unstract 使用 LLM 从文档(PDF、图像、扫描件等)中提取结构化的 JSON。只需通过自然语言 prompt 定义您想要提取的内容,即可将其部署为 API 或 ETL pipeline。
专为**金融**、**保险**、**医疗保健**、**KYC/合规**等领域的团队而打造。
## 现有方案 vs. Unstract
| 任务 | 未使用 Unstract | 使用 Unstract |
|------|------------------|---------------|
| Schema 定义 | 编写正则表达式,为每个供应商构建模板 | 只需编写一次 prompt,即可处理各种变体 |
| 新文档类型 | 数天的开发工作 | 在 Prompt Studio 中只需几分钟 |
| LLM 集成 | 构建您自己的 pipeline | 插入任何提供商(OpenAI、Anthropic、Bedrock、Ollama) |
| 部署 | 定制基础设施 | `./run-platform.sh` 或托管云 |
| 输出 | 非结构化文本块 | 整洁的 JSON,可直接用于您的数据库 |
## ✨ 核心功能
**Prompt Studio** — 使用自然语言定义文档提取 schema。[文档 →](https://docs.unstract.com/unstract/unstract_platform/features/prompt_studio/prompt_studio_intro/)

**API 部署** — 通过 REST API 发送文档,获取返回的 JSON。[文档 →](https://docs.unstract.com/unstract/unstract_platform/api_deployment/unstract_api_deployment_intro/)

**ETL Pipeline** — 从文件夹中拉取文档,进行处理,然后加载到您的数据仓库。[文档 →](https://docs.unstract.com/unstract/unstract_platform/etl_pipeline/unstract_etl_pipeline_intro/)
**MCP Server** — 通过 Model Context Protocol 连接到 AI 代理(如 Claude 等)。[文档 →](https://docs.unstract.com/unstract/unstract_platform/mcp/unstract_platform_mcp_server/)
**n8n 节点** — 轻松融入现有的自动化工作流。[文档 →](https://docs.unstract.com/unstract/unstract_platform/api_deployment/unstract_api_deployment_n8n_custom_node/)
## 🚀 快速开始(约 5 分钟)
### 系统要求与前置条件
- Linux 或 macOS(Intel 或 M 系列)
- Docker 与 Docker Compose
- 至少 8 GB 内存
- Git
### 本地运行
```
# 克隆并启动
git clone https://github.com/Zipstack/unstract.git
cd unstract
./run-platform.sh
```
就这么简单!
- 在浏览器中访问 [http://frontend.unstract.localhost](http://frontend.unstract.localhost)
- 使用用户名:`unstract` 密码:`unstract` 登录
- 开始提取数据!
## 📦 其他部署选项
### Docker Compose
```
# 使用默认 env 配置拉取并运行整个 Unstract 平台。
./run-platform.sh
# 使用特定的 version tag 拉取并运行 docker 容器。
./run-platform.sh -v v0.1.0
# 通过拉取最新可用版本来升级现有的 Unstract 平台设置。
./run-platform.sh -u
# 通过拉取特定版本来升级现有的 Unstract 平台设置。
./run-platform.sh -u -v v0.2.0
# 将本地构建的 docker 镜像打上特定的 version tag。
./run-platform.sh -b -v v0.1.0
# 从工作分支在本地构建 docker 镜像,并打上 `current` version tag。
./run-platform.sh -b -v current
# 显示帮助信息。
./run-platform.sh -h
# 仅进行环境文件的设置。
./run-platform.sh -e
# 仅使用特定的 version tag 拉取 docker 镜像。
./run-platform.sh -p -v v0.1.0
# 仅通过在本地构建来拉取带有特定 version tag 的 docker 镜像。
./run-platform.sh -p -b -v v0.1.0
# 使用从工作分支在本地构建并打上 `current` version tag 的 docker 镜像,升级现有的 Unstract 平台设置。
./run-platform.sh -u -b -v current
# 以 detached 模式拉取并运行 docker 容器。
./run-platform.sh -d -v v0.1.0
```
## 🔐 备份加密密钥
将 `backend/.env` 或 `platform-service/.env` 中的 `ENCRYPTION_KEY` 值复制到一个安全的位置。
## 🏗️ Unstract 架构
```
┌────────────────────────────────────────────────────────────┐
│ Unstract │
├─────────────┬─────────────┬─────────────┬──────────────────┤
│ Frontend │ Backend │ Worker │ Platform Service │
│ (React) │ (Django) │ (Celery) │ (FastAPI) │
├─────────────┴─────────────┴─────────────┴──────────────────┤
│ Cache (Redis) │
├────────────────────────────────────────────────────────────┤
│ Message Queue (RabbitMQ) │
├────────────────────────────────────────────────────────────┤
│ Database (PostgreSQL) │
├────────────────────────────────────────────────────────────┤
│ LLM Adapters │ Vector DBs │ Text Extractors │
│ (OpenAI, etc.) │ (Qdrant, etc.) │ (LLMWhisperer) │
└────────────────────────────────────────────────────────────┘
```
另请参阅[架构](docs/ARCHITECTURE.md)。
## 📄 文档文件格式
| 类别 | 格式 |
|----------|---------|
| 文档 | PDF, DOCX, DOC, ODT, TXT, CSV, JSON |
| 电子表格 | XLSX, XLS, ODS |
| 演示文稿 | PPTX, PPT, ODP |
| 图像 | PNG, JPG, JPEG, TIFF, BMP, GIF, WEBP |
## 🔌 连接器与适配器
### LLM 提供商
| 提供商 | 状态 | 提供商 | 状态 |
|----------|--------|----------|--------|
| OpenAI | ✅ | Azure OpenAI | ✅ |
| OpenAI 兼容 | ✅ | Anthropic Claude | ✅ |
| AWS Bedrock | ✅ | Google Gemini | ✅ |
| Ollama(本地) | ✅ | Mistral AI | ✅ |
| Anyscale | ✅ | | |
### 向量数据库
| 提供商 | 状态 | 提供商 | 状态 |
|----------|--------|----------|--------|
| Qdrant | ✅ | Pinecone | ✅ |
| Weaviate | ✅ | PostgreSQL | ✅ |
| Milvus | ✅ | | |
### 文本提取器
| 提供商 | 状态 |
|----------|--------|
| LLMWhisperer | ✅ |
| Unstructured.io | ✅ |
| LlamaIndex Parse | ✅ |
### ETL 数据源与目标
**数据源:** AWS S3、MinIO、Google Cloud Storage、Azure Blob、Google Drive、Dropbox、SFTP
**目标:** Snowflake、Amazon Redshift、Google BigQuery、PostgreSQL、MySQL、MariaDB、SQL Server、Oracle
[完整连接器列表](https://docs.unstract.com/unstract/unstract_platform/setup_accounts/whats_needed)
## 🛠️ 开发
### 更改默认凭据
请按照[这些步骤](backend/README.md#authentication)更改默认的用户名和密码。
### 本地开发
```
# 安装 pre-commit hooks
./dev-env-cli.sh -p
# 运行 pre-commit 检查
./dev-env-cli.sh -r
```
[本地开发指南](https://docs.unstract.com/unstract/unstract_platform/user_guides/run_platform)
## 🏢 按行业划分的用例
[金融与银行 →](https://unstract.com/finance-automation/) | [保险 →](https://unstract.com/insurance-automation/) | [医疗保健 →](https://unstract.com/healthcare-automation/) | [所得税 →](https://unstract.com/ai-income-tax-forms-data-extraction/)
## ☁️ 云与企业版
适用于需要托管基础设施、高级准确性功能或合规认证的团队。
- ✅ **LLMChallenge** — 双 LLM 验证
- ✅ **SinglePass 与摘要提取** — 降低 LLM token 成本
- ✅ **Human-in-the-Loop** — 带有文档高亮显示的审核界面
- ✅ **SSO 与企业级 RBAC** — SAML/OIDC 集成,支持细粒度的基于角色的访问控制
- ✅ **符合 SOC 2、HIPAA、ISO 27001、GDPR** — 经过第三方审计的安全认证
- ✅ **具有 SLA 的优先支持** — 专属支持团队,提供响应时间保证
## 📚 实用手册
- [Unstract + PostgreSQL + DeepSeek](https://unstract.com/blog/open-source-document-data-extraction-with-unstract-deepseek/)
- [Unstract + n8n](https://unstract.com/blog/unstract-n8n/)
- [Unstract + Snowflake](https://unstract.com/blog/process-unstructured-data-with-unstract-snowflake/)
- [Unstract + BigQuery](https://unstract.com/blog/process-unstructured-data-with-unstract-bigquery/)
- [Unstract + Crew.AI](https://unstract.com/blog/agentic-document-extraction-processing-with-unstract-crew-ai/)
- [Unstract + PydanticAI](https://unstract.com/blog/building-real-world-ai-agents-with-pydanticai-and-unstract/)
- [Unstract MCP Server](https://unstract.com/blog/unstract-mcp-server/)
## 📊 关于分析的说明
Unstract 集成了 Posthog 以追踪最少量的使用情况分析。可以通过在前端的 `.env` 文件中设置 `REACT_APP_ENABLE_POSTHOG=false` 来禁用此功能。
## 📜 许可证
Unstract 采用 [AGPL-3.0 许可证](LICENSE)发布。
标签:API, DLL 劫持, ETL, JavaCC, 大语言模型, 搜索引擎查询, 数据提取, 测试用例, 请求拦截, 逆向工具, 非结构化数据