Unstract 非结构化数据提取平台
用 LLM 将 PDF、图片等非结构化文档转化为结构化 JSON,可部署为 API 或 ETL 流水线。
- Star 数
- ★ 7.3k
- 最近更新
- 3 天前
- License
- AGPL-3.0
- 主语言
- Python
- FA 评分
- 44/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 费用
- 有免费版,另有付费云服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 金融团队自动从发票、银行对账单中提取数据到数据库。
- 不适合
- 需要完全离线、不调用任何云端 LLM 的团队
- 只有 8GB 以下内存或无法运行 Docker 的机器
- 需要开箱即用的 SSO、人工复核与 SLA 保障的团队
这个 Agent 能做什么,适合哪些场景?
Unstract 是一个开源平台,利用 LLM 从文档中提取结构化 JSON。它提供 Prompt Studio 用自然语言定义提取模式,支持通过 REST API 部署,也能作为 ETL 流水线处理文件夹中的文档并加载到数据仓库。平台包含 React 前端、Django 后端、Celery 工作进程和 FastAPI 平台服务,依赖 PostgreSQL、Redis 和 RabbitMQ。它内置多种 LLM、向量数据库和文本提取器适配器(如 OpenAI、Anthropic、Qdrant、LLMWhisperer),并支持 MCP 服务器和 n8n 节点集成。采用 AGPL-3.0 许可证,可通过 Docker 快速部署。
Unstract 通过一个完整的平台执行文档提取:用户通过前端 Prompt Studio 用自然语言定义提取模式(如字段、格式);系统调用所选 LLM 处理器(OpenAI、Anthropic、Bedrock 等)对上传的 PDF、图片等文件进行解析;提取结果以 JSON 格式返回。部署方式包括 API 部署(通过 REST API 发送文档,返回 JSON)和 ETL 流水线(从 AWS S3、SFTP 等源拉取文档,处理后加载到 Snowflake、BigQuery 等目的地)。还提供 MCP 服务器供 Claude 等 AI 代理连接,以及 n8n 节点用于自动化流程。后端组件包括 Django API、Celery worker 和 FastAPI 平台服务,并支持文本提取器(如 LLMWhisperer、Unstructured.io)进行 OCR 和文本预处理。
- 金融团队自动从发票、银行对账单中提取数据到数据库。
- 保险理赔部门从 PDF 理赔单中提取结构化信息。
- 医疗机构处理患者表格和医疗记录。
- KYC/合规人员从证件中提取身份信息。
- 数据工程师构建 ETL 流水线,将大量非结构化文件导入数据仓库。
- AI 开发者通过 MCP 服务器让 Claude 等助手直接读取文档并结构化输出。
如何安装或部署这个 Agent?
- 系统要求:Linux 或 macOS,Docker 和 Docker Compose,至少 8GB 内存,Git。
- 克隆仓库并启动:
git clone https://github.com/Zipstack/unstract.git
cd unstract
./run-platform.sh- 访问 http://frontend.unstract.localhost,使用默认账号
unstract/unstract登录。
可通过脚本参数指定版本、构建镜像、更新等,例如 ./run-platform.sh -v v0.1.0 或 -u 升级。
如何使用这个 Agent?
- 登录后,使用 Prompt Studio 创建提取项目,用自然语言定义要提取的字段和格式。
- 在 API Deployment 中,通过 REST API 发送文档,接收 JSON 响应。
- 或配置 ETL Pipeline,设置源和目标(如 S3 到 Snowflake),自动处理文档。
- 可选:配置 MCP 服务器,让 AI 代理通过模型上下文协议调用;或集成 n8n 节点到自动化工作流。
- 适配器配置:在平台设置中配置 LLM 提供商(如 OpenAI)和向量数据库。
这个 Agent 有哪些优点和局限?
- 无代码提取模式定义,通过 Prompt Studio 用自然语言即可创建,降低开发成本。
- 支持多 LLM 提供商(OpenAI、Anthropic、Bedrock、Ollama 等),可自由切换,避免供应商锁定。
- 提供 API、ETL、MCP Server、n8n 节点多种部署集成方式,灵活适配不同工作流。
- 支持多种文档格式(PDF、DOCX、图片、表格等),覆盖常见非结构化数据。
- 可自托管,通过 Docker 一键部署,数据隐私可控。
- 依赖 Docker 环境和至少 8GB 内存,资源需求较高。
- 默认凭据(unstract/unstract)存在安全风险,需及时修改。
- 部分高级功能(如人类审查、SSO)为商业版功能,开源版可能限制。
- LLM API 调用会产生 token 成本,且大规模处理可能增加费用。
- 社区和支持依赖开源社区,相比商业产品可能缺少保障。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Unstract 非结构化数据提取平台 当前 | 44 · 缺口较多 | 自托管服务免费版 + 付费版 | ★ 7.3k | 3 天前 | Python | OpenAI API · Claude API |
| webclaw 网页提取引擎 | 66 · 存在缺口 | 命令行工具免费版 + 付费版 | ★ 2.4k | 26 天前 | Rust | Codex · Claude Code · OpenAI API · Claude API |
| Xquik X 数据 API | 74 · 存在缺口 | 云服务 / SaaS付费 | ★ 214 | 今天 | JavaScript | Codex · Claude Code |
| Bright Data MCP | 64 · 存在缺口 | MCP 服务器免费版 + 付费版 | ★ 2.7k | 今天 | JavaScript | Claude Code · Claude.ai |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示:README 提到加密密钥用于加密适配器凭据,测试验证了元数据加密存储(adapter_metadata_b),表明对敏感数据处理有基本考虑。但缺少用户确认机制、数据流透明性描述有限、依赖安全仅通过 CI 和 lint 间接体现,外部影响(如 Posthog 分析)有提及但未深入,回滚机制未提及,来源归属仅通过 README 中的 Zipstack 品牌,但发布者未验证。扣分原因:用户确认缺失,数据流透明性不足,依赖安全证据薄弱,外部影响描述不完整,回滚缺失,来源归属仅基于品牌。
证据显示:项目有详细的 CI 测试流程(单元、集成、端到端),测试文件覆盖关键路径,表明内部一致性较好。但依赖可用性仅通过 Docker 镜像和外部服务(如 LLM 提供商)间接体现,失败消息未在文档中明确说明。扣分原因:依赖可用性证据不足,失败消息文档缺失。
证据显示:README 明确目标受众(金融、保险、医疗等),提供多种部署方式(本地、Docker、云),支持多种 LLM 提供商和向量数据库,环境适配良好。但触发精度(如 API 端点、ETL 触发条件)未详细说明,能力边界(如支持的文档类型、限制)部分提及但不完整。扣分原因:触发精度描述不足,能力边界不完整。
证据显示:README 结构清晰,提供安装说明(run-platform.sh),有示例和 cookbook,许可证为 AGPL-3.0,维护责任通过贡献指南和社区渠道体现。但命名稳定性未明确,已知限制未单独列出,版本变更日志未提供。扣分原因:命名稳定性未说明,已知限制缺失,版本变更日志缺失。
证据显示:输出为结构化 JSON,可直接用于数据库,边际价值通过对比表体现,但成本效益未量化,仅提及企业版功能。扣分原因:成本效益缺乏具体数据。
证据显示:README 中的声明(如支持格式、提供商)有文档链接,但未提供独立验证来源,事实与推断未明确区分。扣分原因:声明可追溯性有限,交叉验证不足,事实与推断分离不清晰。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 发布者身份未验证,应谨慎对待品牌声明。
- 默认凭据(用户名/密码 unstract/unstract)存在安全风险,部署后应立即更改。
- Posthog 分析默认启用,需确认是否符合隐私要求。
- 加密密钥管理不当可能导致适配器凭据丢失。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
What's Changed * UN-4176 [FIX] Cut idle PG-queue polling to one autocommit claim per cycle by @muhammad-ali-e in https://github.com/Zipstack/unstract/pull/2349 Full Changelog: https://github.com/Zipstack/unstract/compare/v0.193.0...v0.193.1在 GitHub 查看 ↗ -
发布说明摘录
What's Changed * UN-3494 [FEAT] Email users and groups through PGQueue by @kirtimanmishrazipstack in https://github.com/Zipstack/unstract/pull/2224 Full Changelog: https://github.com/Zipstack/unstract/compare/v0.192.14...v0.193.0在 GitHub 查看 ↗ -
发布说明摘录
What's Changed * UN-1412 [FIX] Mirror API deployment execute errors into message.error by @Deepak-Kesavan in https://github.com/Zipstack/unstract/pull/2334 * UN-4069 [FIX] Cap array rendering in DisplayPromptResult to prevent page crash on dense agentic tables by @harini-venkataraman in https://github.com/Zipstack/unstract/pull/2335 * UN-4069 [FIX] Fix socket timeout, page crash, and upload limits for large Prompt Studio outputs by @harini-venkataraman in https://github.com/Zipstack/unstract/pull/2336 Full Changelog: https://github.com/Zipstack/unstract/compare/v0.192.13...v0.192.14在 GitHub 查看 ↗