Airsc is free for everyone. If it helps you, support it with $2–$20.

Support
MCP serverSafeData & analyticsSome setup

unstract

Zipstack · Zipstack/unstract

An LLM-driven platform that extracts structured JSON data from unstructured documents like PDFs, offering an MCP server for AI agent integration.

LLM-Driven Extraction of Unstructured Data — Built for API Deployments & ETL Pipeline Workflows

7.3k stars719License: AGPL-3.0Updated 8 days ago0 opens

Preview

▍

What you can do with it

  • Extract specific financial figures and details from scanned invoices or contracts into structured JSON.
  • Automate the processing of application forms or KYC documents by extracting key information using an AI agent.
  • Convert large volumes of unstructured text reports into clean, queryable data for analysis.

Safety check

Safe

No risky patterns found in the files we scanned.

Automated scan of the repo files. Always review code you run.

From the README

Unstract Turn Unstructured Documents into Structured Data

Documentation |
Enterprise




















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

TaskWithout UnstractWith Unstract
Schema definitionWrite regex, build templates per vendorWrite a prompt once, handles variations
New document typeDays of developmentMinutes in Prompt Studio
LLM integrationBuild your own pipelinePlug in any provider (OpenAI, Anthropic, Bedrock, Ollama)
DeploymentCustom infrastructure./run-platform.sh or managed cloud
OutputUnstructured text blobsClean 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!

📦 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

CategoryFormats
DocumentsPDF, DOCX, DOC, ODT, TXT, CSV, JSON
SpreadsheetsXLSX, XLS, ODS
PresentationsPPTX, PPT, ODP
ImagesPNG, JPG, JPEG, TIFF, BMP, GIF, WEBP

🔌 Connectors & Adapters

LLM Providers

ProviderStatusProviderStatus
OpenAI✅Azure OpenAI✅
OpenAI Compatible✅Anthropic Claude✅
AWS Bedrock✅Google Gemini✅
Ollama (local)✅Mistral AI✅
Anyscale✅

Vector Databases

ProviderStatusProviderStatus
Qdrant✅Pinecone✅
Weaviate✅PostgreSQL✅
Milvus✅

Text Extractors

ProviderStatus
LLMWhisperer✅
Unstructured.io✅
LlamaIndex Parse✅

ETL Sources & Destinations

Sources: AWS S3, MinIO, Google Cloud Storage, Azure Blob, Google

View source on GitHub