Retab
What is Retab?
Retab solves all the major challenges in document processing with Large Language Models:
- Universal Document Preprocessing: Convert any file type (PDFs, Excel, emails, etc.) into LLM-ready format without writing custom parsers
- Structured, Schema-driven Extraction: Get consistent, reliable outputs using schema-based prompt engineering
- Processors: Publish a live, stable, shareable document processor.
- Automations: Create document processing workflows that can be triggered by events (mailbox, upload link, endpoint, outlook plugin).
- Optimizations: Identify the most used processors and help you finetune models to reduce costs and improve performance
We are offering you all the software-defined primitives to build your own document processing solutions. We see it as Stripe for document processing.
Our goal is to make the process of analyzing documents and unstructured data as easy and transparent as possible.
A new, lighter paradigm Large Language Models collapse entire layers of legacy OCR pipelines into a single, elegant abstraction. When a model can read, reason, and structure text natively, we no longer need brittle heuristics, handcrafted parsers, or heavyweight ETL jobs. Instead, we can expose a small, principled API: "give me the document, tell me the schema, and get back structured truth." Complexity evaporates, reliability rises, speed follows, and costs fall—because every component you remove is one that can no longer break. LLM‑first design lets us focus less on plumbing and more on the questions we actually want answered.
Many people haven't yet realized how powerful LLMs have become at document processing tasks - we're here to help unlock these capabilities.
Go further
Code examples
You can check our Github repository to see code examples: python examples and jupyter notebooks.
Workflow Spec
Use client.workflows.spec to validate, plan, apply, and export declarative workflow YAML.
from retab import Retab
client = Retab()
validation = client.workflows.spec.validate(yaml_definition)
plan = client.workflows.spec.plan(yaml_definition)
result = client.workflows.spec.apply(yaml_definition)
exported = client.workflows.spec.get(result.workflow_id)
A declarative spec uses apiVersion: workflows.retab.com/v1alpha2 and explicit edge handles:
edges:
- from:
block: start_document-node
handle: output-file-0
to:
block: extract-node
handle: input-file-source_doc
Workflow Artifacts
Workflow steps expose artifact as a stable {operation, id} pointer. Use
client.workflows.artifacts to fetch the persisted record behind that pointer,
including review evaluations, conditional matches, function outputs, and API-call
attempts. Review decisions live on the review queue APIs; artifact records are
for inspecting why a branch or gate fired.
import time
run = client.workflows.runs.create(
workflow_id="workflow_abc123",
documents={"start_document-node": "invoice.pdf"},
)
while run.lifecycle.status not in {"completed", "error", "failed", "cancelled"}:
time.sleep(1)
run = client.workflows.runs.get(run.id)
steps = client.workflows.steps.list(run_id=run.id)
review_step = next((step for step in steps if step.block_id == "review-node"), None)
if review_step is not None:
step = client.workflows.steps.get(review_step.step_id, run_id=run.id)
all_artifacts = client.workflows.artifacts.list(run.id)
Community
Let's create the future of document processing together!
Join our discord community to share tips, discuss best practices, and showcase what you build. Or just tweet at us.
We can't wait to see how you'll use Retab.
Roadmap
We share our roadmap publicly on Github
Among the features we're working on:
- Node.js SDK
- Schema optimization autopilot
- Sources API
Metadata
Release files for retab 0.0.159
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| retab-0.0.159.tar.gz | 168.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| retab-0.0.159-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 334.5 kB
Release files / retab-0.0.159.tar.gz
| Download URL | retab-0.0.159.tar.gz |
|---|---|
| Size | 168.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
87001c8922109244e8c307125d82b4bdf8416b9727c426b74635d19bd4e91b5b
|
|
BLAKE2b-256 checksum How to use checksums |
7bec87c0653a478715232b9618a6e92b6992d347186605bad06214c963c8bd9c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / retab-0.0.159-py3-none-any.whl
| Download URL | retab-0.0.159-py3-none-any.whl |
|---|---|
| Size | 166.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
91c015f187cd06b74fa27f254ecfcdb6dcb133fc7ed848abb5eef155634d9aff
|
|
BLAKE2b-256 checksum How to use checksums |
d8a5a10cf3b749a45b32811cf6179a115902dbfc2b4b65e942d9ee2b7796eb64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|