Structured Extraction
Typed output from any media.
Extract structured data from documents, images, audio, and video using LLMs and Pydantic schemas.
$ uv add openextract
$ openextract report.pdf \
--schema mypkg:Invoice \
--model xai:grok-4.3
{ "total": 1240.00, "currency": "USD", ... }
Zero Config
One function call, or a reusable session. Bring a schema, media, and a model string.
Multi-Media
Documents, images, audio, and video with smart routing.
Any LLM
OpenAI, Anthropic, Google, Bedrock, xAI, Groq, Mistral, OpenRouter, Ollama, and more via pydantic-ai.
Type Safe
Pydantic schemas ensure validated, typed output every time.
How it works
Schema in, typed data out
Define a BaseModel, call extract(), get validated output.
Define a schema
Describe the shape you want with a Pydantic model.
Point at any media
Documents, images, audio, or video via path, URL, bytes, or a session.
Get typed output
Validated against your schema. No parsing, no regex.
from pydantic import BaseModel
from openextract import extract
class Report(BaseModel):
title: str
findings: list[str]
severity: int
result = extract(
schema=Report,
model="xai:grok-4.3",
input_file="https://example.com/report.pdf",
instructions="Extract findings",
)
What’s new
In v0.13.0
The latest PyPI release: v0.13.0.
Parse-then-extract
openextract[pdf] parses PDFs locally so citation boxes stay parser-backed. The model never invents spans.
Windowed long-PDF extract
Long PDFs split under a 12k-character / 1-page budget so each model call fits GLM-class context. Citations are collected from every window before reduce.
Local grayscale render
Empty-text / scanned PDFs render to compact grayscale page images locally and are never uploaded for OpenRouter document-parse.
Also in v0.13.0: more reliable OpenRouter usage capture, ExtractBench window-pool slack and leftover-window merge on pool timeout. v0.12.0 shipped opt-in field citations.
Documentation
Guides and contracts
Start with the guide. Coding agents should use the agent contract or llms.txt.
Guide
Install, inputs, styles, sessions, batch, errors, and CLI — the how-to.
For agents
Which API to generate, input pitfalls, exceptions, and TestModel fixtures.
API reference
Public functions, sessions, input/result contracts, and common arguments.
CLI contracts
Stdout, stderr, exit codes, retries, styles, and batch partial failures.
Providers
Capability matrix, extras, credentials, and verified vs expected media support.
Troubleshooting
Missing extras, URL fetch, schema failures, retries, and batch API choice.
Works with any media
PDF, DOCX, PNG, JPG, MP3, MP4, and 20+ formats