Synthetically Engineered Evaluation Data
Synthetically Engineered Evaluation Data (SEED) is an AI-powered synthetic document generation pipeline. It turns a JSON schema into a realistic PDF document, validates it through multi-stage critique loops, and emits a paired ground-truth JSON label. The result is benchmark data for Intelligent Document Processing (IDP) systems: OCR, Key Information Extraction (KIE), and document classification.
Every document is entirely fictional. Names, addresses, and financial figures are invented, and each PDF is rendered from freshly generated HTML/CSS (or ReportLab) code, so there are no real documents or templates copied into the output.
The pipeline is built on the Strands Agents SDK and calls foundation models through Amazon Bedrock.
Quickstart
Install from PyPI — the default renderer is pure Python, so there is nothing else to set up:
pip install seed-data
Configure AWS Bedrock credentials, then generate a document from either the command line or the Python API. Both produce the same artifacts.
From the command line:
export AWS_PROFILE=your-profile-name
# Copy the built-in schemas into a local, editable folder
seed-data clone-schema-library ./schemas
# Generate an invoice PDF + ground-truth JSON into ./output
seed-data --schema-dir ./schemas/invoice --output ./output
From Python:
from seed_data import Generator, ModelConfig
gen = Generator(models=ModelConfig(doc="gpt-oss", critic="haiku"), threshold=5)
doc = gen.generate("invoice", scenario="Midwest food-distributor invoice")
print(doc.pdf_path) # the rendered PDF
print(doc.data) # ground-truth JSON label (dict)
Either path writes three paired artifacts into the output directory — the ground-truth JSON label, the HTML the renderer used, and the final PDF:
output/
├── data/<id>.json # ground-truth data / label
├── generation_scripts/<id>.html # render source
└── pdfs/<id>.pdf # final document
Browse the schema library on GitHub: awslabs/…/schemas.
How It Works
Each document flows through a chain of agents. Generation stages produce content and rendering; critic stages review the output and can reject it, sending the pipeline back for another attempt (bounded by --max-attempts). Augmentation stages are optional and run only with --augment.
graph LR
A[data_generator] --> B[data_critic]
B -->|reject| A
B --> C[doc_generator]
C --> D[doc_critic]
D -->|reject| C
D --> E[augmentor]
E --> F[aug_critic]
F -->|reject| E
The data generator produces JSON data from the schema, the data critic validates it against the schema and domain rules, the doc generator writes HTML/CSS and renders a PDF, and the doc critic uses a vision model to evaluate layout, typography, truncation, and math. With --augment, the augmentor applies aging effects via augraphy and the aug critic checks that the result is still legible.
Batch and packet runs wrap this single-document pipeline. A batch runs N scenarios in parallel from one diversity brief. A packet coordinates several different document types that share context (same person, address, and dates) and merges them into one multi-document PDF.
Key Use Case: Evaluation Data for IDP and KIE
Benchmarking a document understanding system requires paired data: an input document and the exact ground truth it should extract. Collecting real documents is slow, and real documents carry PII and redistribution constraints. SEED generates the pair directly: a schema defines the structure, the pipeline invents realistic fictional data, renders it to a PDF, critiques the render, and saves the source data JSON as the ground-truth labels. Add image augmentation to simulate scanning and faxing artifacts, and you have a controllable, reproducible evaluation set.
-
Getting Started
Install SEED, configure AWS Bedrock credentials, and generate your first document and batch.
-
Guides
Create a document type, run batches, build multi-document packets, and control per-document variation.
-
Advanced
Available models and model-agnostic design, PDF renderers, and image augmentation.
-
API Reference
The
GeneratorPython API,Schema, typed results, and module-level docs for packets, critique, tools, and utilities.