启动后需访问 http://frontend.unstract.localhost,默认账号密码均为 unstract;务必提前备份 backend/.env 或 platform-service/.env 中的 ENCRYPTION_KEY,丢失后已配置的 adapter 凭据将无法解密;前端默认启用 Posthog 统计,可在前端 .env 中设 REACT_APP_ENABLE_POSTHOG=false 关闭

unstract
ZipstackAGPL-3.0活跃维护把 PDF、扫描件等非结构化文档通过 LLM 抽取成结构化 JSON,可直接接入 API 和 ETL 流水线,省去手工写解析规则。
LLM-Driven Extraction of Unstructured Data — Built for API Deployments & ETL Pipeline Workflows
git clone https://github.com/Zipstack/unstract.git
cd unstract
./run-platform.shREADME 未说明 GPU 或显存要求,仅要求 Linux 或 macOS(Intel 或 M 系列)、Docker 与 Docker Compose、至少 8 GB 内存
用 LLM 把 PDF、扫描件等非结构化文档抽成结构化 JSON,可直接部署为 API 或 ETL 流水线
把 PDF、扫描件等非结构化文档通过 LLM 抽取成结构化 JSON,可直接接入 API 和 ETL 流水线,省去手工写解析规则。
核心能力
- 用自然语言 Prompt 定义抽取 schema,无需写正则或模板
- 通过 REST API 上传文档直接返回 JSON
- 支持从文件夹拉取文档处理后加载到数仓的 ETL 流水线
- 可接入 OpenAI、Anthropic、Bedrock、Ollama 等任意 LLM 提供方
- 提供 MCP Server 与 n8n 节点接入 AI Agent 和自动化流程
容易踩的坑
- v0.203.0最新正式版2026-11-06 · 2026-11-06 08:30 UTC
What's Changed
- UN-4587 [DEPS] Bump nltk to 3.10.4 to fix critical pickle RCE advisories by @jaseemjaskp in https://github.com/Zipstack/unstract/pull/2424
- UN-4299 [FEAT] v1 design tokens, themes and style isolation (P0-T04) by @praveen-formido in https://github.com/Zipstack/unstract/pull/2399
- UN-4492 [FEAT] Image output mode: honour 'Pages to extract' and label pages with document page numbers by @praveen-formido in https://github.com/Zipstack/unstract/pull/2371
- UN-4427 [FEAT] Remove the legacy 90-page / 14 MiB image-mode bound by @praveen-formido in https://github.com/Zipstack/unstract/pull/2385
- UN-4616 [FIX] Leave the page for logout so its redirects complete by @athul-rs in https://github.com/Zipstack/unstract/pull/2430
- UN-4360 [FEAT] Show API key usage, expiry and rotation grace period in the key APIs by @johnyrahul in https://github.com/Zipstack/unstract/pull/2411
- UN-4522 [MISC] Sync the release tooling with the cloud cleanup by @chandrasekharan-zipstack in https://github.com/Zipstack/unstract/pull/2427
- UN-4435 [FIX] Enable highlight automatically for HITL confidence rules by @chandrasekharan-zipstack in https://github.com/Zipstack/unstract/pull/2401
- UN-4502 [FEAT] Add the v1 PDF loader, document hook and viewer states by @muhammad-ali-e in https://github.com/Zipstack/unstract/pull/2404
- [FIX] Fix small defects found in the SonarCloud backlog triage by @ritwik-g in https://github.com/Zipstack/unstract/pull/2384
- UN-4503 [FEAT] Add the v1 DocumentViewer for PDFs, images and text, with highlights, toolbar and zoom by @muhammad-ali-e in https://github.com/Zipstack/unstract/pull/2405
- UN-4329 [FEAT] Add the v1 unit-test harness and the frontend-v1-unit rig group by @Deepak-Kesavan in https://github.com/Zipstack/unstract/pull/2429
- UN-4361 [FEAT] Add v1 toasts, inline alerts, progress and skeletons behind one notification entry point by @johnyrahul in https://github.com/Zipstack/unstract/pull/2426
- UN-4522 [MISC] Release tooling: patch a released line, fail loudly; skip product tests for .github/.claude by @chandrasekharan-zipstack in https://github.com/Zipstack/unstract/pull/2431
- UN-3783 [FIX] Stop publishing the runner's port on the host by @ritwik-g in https://github.com/Zipstack/unstract/pull/2442
- UN-4069 [FIX] Wire agentic table highlight and extraction_priority through to API deployments by @harini-venkataraman in https://github.com/Zipstack/unstract/pull/2448
- [FIX] Block SSRF to private addresses from the x2text Unstructured adapter by @ritwik-g in https://github.com/Zipstack/unstract/pull/2397
Full Changelog: https://github.com/Zipstack/unstract/compare/v0.202.0...v0.203.0
- v0.202.02026-11-03 · 2026-11-03 13:38 UTC
查看更新说明
What's Changed
- UN-4427 [FEAT] Image output mode: per-model image limits instead of the 90-page / 14 MB caps by @praveen-formido in https://github.com/Zipstack/unstract/pull/2341
- [MISC] Log tracebacks in exception handlers that swallow errors by @ritwik-g in https://github.com/Zipstack/unstract/pull/2383
- [FIX] Fix SonarCloud reliability findings in frontend CSS, TopNavBar and x2text by @ritwik-g in https://github.com/Zipstack/unstract/pull/2393
- [FIX] Stop leaking DB, cache and storage details in API errors by @ritwik-g in https://github.com/Zipstack/unstract/pull/2400
- UN-4522 [MISC] Release branching V2: port release-line workflows by @chandrasekharan-zipstack in https://github.com/Zipstack/unstract/pull/2381
- UN-4069 [FIX] Pass extraction_priority to agentic table executor in workflow runs by @harini-venkataraman in https://github.com/Zipstack/unstract/pull/2403
Full Changelog: https://github.com/Zipstack/unstract/compare/v0.201.0...v0.202.0
- v0.201.02026-11-03 · 2026-11-03 06:35 UTC
查看更新说明
What's Changed
- UN-4270 [FEAT] v1 scaffold, strict TypeScript and import boundary by @jaseemjaskp in https://github.com/Zipstack/unstract/pull/2380
- UN-4575 [DEPS] Bump Pillow to 13.0.0 to fix CVE-2026-96639 by @jaseemjaskp in https://github.com/Zipstack/unstract/pull/2422
Full Changelog: https://github.com/Zipstack/unstract/compare/v0.200.0...v0.201.0
- v0.200.02026-11-01 · 2026-11-01 19:32 UTC
查看更新说明
What's Changed
- UN-4565 [FEAT] Switch organization by signing in again when the identity provider picks it by @athul-rs in https://github.com/Zipstack/unstract/pull/2418
Full Changelog: https://github.com/Zipstack/unstract/compare/v0.199.1...v0.200.0
- v0.199.12026-10-30 · 2026-10-30 09:56 UTC
查看更新说明
What's Changed
- UN-4514 [FIX] Cut per-document workflow-execution fetches and stop loading every file-execution row on each one by @muhammad-ali-e in https://github.com/Zipstack/unstract/pull/2377
- UN-4457 [FIX] Back off when the log stream consumer cannot reach Redis by @ritwik-g in https://github.com/Zipstack/unstract/pull/2347
- UN-4553 [FIX] Hide API keys and webhook auth keys by default; copy keys without revealing by @ritwik-g in https://github.com/Zipstack/unstract/pull/2398
- UN-4480 [DOCS] Platform audit README: cloud clone, Agentic Studio adapters and onboarding are now recorded by @ritwik-g in https://github.com/Zipstack/unstract/pull/2368
Full Changelog: https://github.com/Zipstack/unstract/compare/v0.199.0...v0.199.1
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
What is Unstract?
Unstract uses LLMs to extract structured JSON from documents — PDFs, images, scans, you name it. Define what you want to extract using natural language prompts, and deploy as an API or ETL pipeline.
Built for teams in finance, insurance, healthcare, KYC/compliance, and much more.
Current State vs. Unstract
| Task | Without Unstract | With Unstract |
|---|---|---|
| Schema definition | Write regex, build templates per vendor | Write a prompt once, handles variations |
| New document type | Days of development | Minutes in Prompt Studio |
| LLM integration | Build your own pipeline | Plug in any provider (OpenAI, Anthropic, Bedrock, Ollama) |
| Deployment | Custom infrastructure | ./run-platform.sh or managed cloud |
| Output | Unstructured text blobs | Clean JSON, ready for your database |
⭐ If Unstract helps you, star this repo!
✨ Key Features
Prompt Studio — Define document extraction schemas with natural language. Docs →

API Deployment — Send a document over REST API, get JSON back. Docs →

ETL Pipeline — Pull documents from a folder, process them, load to your warehouse. Docs →
MCP Server — Connect to AI agents (Claude, etc.) via Model Context Protocol. Docs →
n8n Node — Drop into existing automation workflows. Docs →
🚀 Quickstart (~5 mins)
System Requirements & Prerequisites
- Linux or macOS (Intel or M-series)
- Docker & Docker Compose
- 8 GB RAM minimum
- Git
Run Locally
# Clone and start
git clone https://github.com/Zipstack/unstract.git
cd unstract
./run-platform.sh
That's it!
- Visit http://frontend.unstract.localhost in your browser
- Login with username:
unstractpassword:unstract - Start extracting data!
📦 Other Deployment Options
Docker Compose
# Pull and run entire Unstract platform with default env config.
./run-platform.sh
# Pull and run docker containers with a specific version tag.
./run-platform.sh -v v0.1.0
# Upgrade existing Unstract platform setup by pulling the latest available version.
./run-platform.sh -u
# Upgrade existing Unstract platform setup by pulling a specific version.
./run-platform.sh -u -v v0.2.0
# Build docker images locally as a specific version tag.
./run-platform.sh -b -v v0.1.0
# Build docker images locally from working branch as `current` version tag.
./run-platform.sh -b -v current
# Display the help information.
./run-platform.sh -h
# Only do setup of environment files.
./run-platform.sh -e
# Only do docker images pull with a specific version tag.
./run-platform.sh -p -v v0.1.0
# Only do docker images pull by building locally with a specific version tag.
./run-platform.sh -p -b -v v0.1.0
# Upgrade existing Unstract platform setup with docker images built locally from working branch as `current` version tag.
./run-platform.sh -u -b -v current
# Pull and run docker containers in detached mode.
./run-platform.sh -d -v v0.1.0
🔐 Backup Encryption Key
[!WARNING] This key encrypts adapter credentials — losing it makes existing adapters inaccessible!
Copy the value of ENCRYPTION_KEY from backend/.env or platform-service/.env to a secure location.
🏗️ Unstract Architecture
┌────────────────────────────────────────────────────────────┐
│ 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) │
└────────────────────────────────────────────────────────────┘
Also see architecture.
📄 Document File Formats
| Category | Formats |
|---|---|
| Documents | PDF, DOCX, DOC, ODT, TXT, CSV, JSON |
| Spreadsheets | XLSX, XLS, ODS |
| Presentations | PPTX, PPT, ODP |
| Images | PNG, JPG, JPEG, TIFF, BMP, GIF, WEBP |
🔌 Connectors & Adapters
LLM Providers
| Provider | Status | Provider | Status |
|---|---|---|---|
| OpenAI | ✅ | Azure OpenAI | ✅ |
| OpenAI Compatible | ✅ | Anthropic Claude | ✅ |
| AWS Bedrock | ✅ | Google Gemini | ✅ |
| Ollama (local) | ✅ | Mistral AI | ✅ |
| Anyscale | ✅ |
Vector Databases
| Provider | Status | Provider | Status |
|---|---|---|---|
| Qdrant | ✅ | Pinecone | ✅ |
| Weaviate | ✅ | PostgreSQL | ✅ |
| Milvus | ✅ |
Text Extractors
| Provider | Status |
|---|---|
| LLMWhisperer | ✅ |
| Unstructured.io | ✅ |
| LlamaIndex Parse | ✅ |
ETL Sources & Destinations
Sources: AWS S3, MinIO, Google Cloud Storage, Azure Blob, Google Drive, Dropbox, SFTP
Destinations: Snowflake, Amazon Redshift, Google BigQuery, PostgreSQL, MySQL, MariaDB, SQL Server, Oracle
🛠️ Development
Change Default Credentials
Follow these steps to change the default username and password.
Local Development
# Install pre-commit hooks
./dev-env-cli.sh -p
# Run pre-commit checks
./dev-env-cli.sh -r
🏢 Use Cases by Industry
Finance & Banking → | Insurance → | Healthcare → | Income Tax →
☁️ Cloud & Enterprise
For teams that need managed infrastructure, advanced accuracy features, or compliance certifications.
- ✅ LLMChallenge — dual-LLM verification
- ✅ SinglePass & Summarized Extraction — reduce LLM token costs
- ✅ Human-in-the-Loop — review interface with document highlighting
- ✅ SSO & Enterprise RBAC — SAML/OIDC integration with granular role-based access control
- ✅ SOC 2, HIPAA, ISO 27001, GDPR Compliant — third-party audited security certifications
- ✅ Priority Support with SLA — dedicated support team with response time guarantees
📚 Cookbooks
- Unstract + PostgreSQL + DeepSeek
- Unstract + n8n
- Unstract + Snowflake
- Unstract + BigQuery
- Unstract + Crew.AI
- Unstract + PydanticAI
- Unstract MCP Server
🤝 Contributing
We welcome contributions! The easiest way to start:
- Pick an issue tagged
good first issue - Submit a PR
Report Bug → | Request Feature →
👋 Community
Join the LLM-powered document automation community:
📊 A Note on Analytics
Unstract integrates Posthog to track minimal usage analytics. Disable by setting REACT_APP_ENABLE_POSTHOG=false in the frontend's .env file.
📜 License
Unstract is released under the AGPL-3.0 License.
