Synaps-Image 1.0: text-accuracy toolkit for FLUX 3 Image Klein
Synaps-Image is not a new image model. It is tooling that Synaptivo adds on top of a strong open generator, FLUX 3 Image Klein with its prompt upsampler PUP, both by Black Forest Labs. The tooling makes text inside images more accurate. It is not affiliated with or endorsed by Black Forest Labs.
This repository contains Synaptivo code and configuration only (Apache-2.0). It ships no generator weights: obtain FLUX 3 Image Klein and PUP from Black Forest Labs under their licences (see NOTICE).
What it is
A text-to-image inference pipeline in three steps:
- PUP 9B (
black-forest-labs/flux-3-image-klein-pup, Apache-2.0) rewrites the user prompt into a detailed caption; quoted texts of the prompt are kept verbatim. - FLUX 3 Image Klein (
black-forest-labs/flux-3-image-klein, FLUX Kommunity License) renders it, 1024 px, 16 steps. - PUP-T (Synaptivo) runs only on prompts that ask for text in quotes. A local Qwen3.8-27B reads the visible text. When the reading does not match, the caption is rewritten and up to 2 x 2 new candidates are rendered. The candidate with the best character accuracy wins. Prompts without quoted text get the plain Klein + PUP render.
Steps 1 and 2 are the vendor's own pipeline. The Synaptivo part is the text-repair loop and the routing.
Component pins are in pipeline.json.
Results
Pre-registered confirmation, 193 fresh English prompts with quoted text (43 OneIG-Bench text rendering, 150 TIIF-Bench test), outside every set used to build or tune PUP-T. Baseline is stock Klein + PUP with the same caption and seed. The judges are different models from the verifier: Qwen3-VL-32B for OCR and UniGenBench-32B for overall prompt following. The pass criteria were fixed before any render of this run:
- 1-CER gain of at least +2 pp with the lower end of the 95% CI above 0;
- exact match not below the baseline;
- UniGenBench drop of at most 1 pp.
All three passed.
| metric | Klein + PUP | Synaps-Image 1.0 | difference, 95% CI |
|---|---|---|---|
| text 1-CER | 85.05% | 93.70% | +8.65 pp, +5.63..+11.93 |
| text exact match | 94.54% | 96.27% | +1.73 pp, +0.35..+3.43 |
| UniGenBench-32B | 93.78% | 95.47% | +1.68 pp, +0.26..+3.37 |
Cost on text prompts:
- 130 of 193 prompts stop after the first render (1 render, 1 verifier read).
- 49 prompts take one repair round (3 renders), 14 take two (5 renders); 1.80 renders per prompt on average.
- A verifier read takes 4.4 s on average on one RTX PRO 6000. End-to-end latency was not measured: the confirmation ran stage by stage in batches.
- The final image differs from the stock render on 46 of 193 prompts.
Limits of the claim: English benchmark prompts with quoted text only. Prompts without quoted text are unchanged by construction. Polish and other languages are not measured. There is no evaluation on safety benchmarks.
Reproducibility
The numbers were measured with our research pipeline (Flow-Factory renderer, PUP captions generated in left-padded batches of 16). This package makes the same loop decisions. A GPU check on 6 prompts of the same run compared it with that measurement:
- verifier readings of the same images: identical on 6 of 6;
- Klein renders of the same caption and seed: close but not bit-identical, PSNR 27-51 dB on 10 images (diffusers here, Flow-Factory in the measurement);
- PUP captions: identical on 1 of 6, because greedy decoding diverges between batched and one-at-a-time generation.
Expect results close to, but not equal to, the table above. The parity checks run against our research code and measurement files, which are not part of this repository.
Examples
Selected examples from the confirmation run, not a random sample. Each pair shows the stock Klein + PUP render
(before) and the image Synaps-Image 1.0 chose (after), with the same prompt and seed. All images are AI-generated
with FLUX 3 Image Klein by Black Forest Labs. Details and judge scores are in examples/examples.json.
Use
pip install torch diffusers transformers accelerate huggingface_hub pillow
python -m synaps_image --prompt 'a bakery chalkboard reading "FRESH BREAD 6AM"' --seed 0 --out out.png --trace trace.json
--klein, --pup and --verifier take Hub ids or local directories. The default verifier id is
Qwen/Qwen3.8-27B; check that it matches your copy (we measured with a local bf16 copy of Qwen3.8-27B). The CLI loads
PUP first (18 GB in bf16), frees it, then keeps Klein and the verifier loaded together: measured peak 70 GB of GPU
memory on one RTX PRO 6000.
From Python, in the same order:
from synaps_image import generate, models
from synaps_image.loop import caption_for
upsample, pup = models.load_upsampler('black-forest-labs/flux-3-image-klein-pup')
prompt = 'a sign reading "OPEN"'
caption = caption_for(prompt, upsample)
del upsample, pup
models.release_memory()
render, _ = models.load_renderer('black-forest-labs/flux-3-image-klein')
(read, revise), _ = models.load_verifier('Qwen/Qwen3.8-27B')
result = generate(prompt, 0, upsample=None, caption=caption, render=render, read=read, revise=revise)
result.image.save('out.png')
What did not work (kept for transparency)
- GRPO on a Klein LoRA with a pairwise preference reward: images moved only slightly, judges saw ties, typography dropped 4.8 pp.
- Best-of-4 selection by a checkable reward, then SFT of a Klein LoRA: fresh-text 1-CER -0.7 pp, exact -2.2 pp; the LoRA learns the style of its own samples, not text accuracy.
- GRPO with a checkable reward was rejected before training: 68-76% of groups had zero reward variance.
- An earlier version of PUP-T (rewrite capped at 250 words): 1-CER +10.6 pp on 60 prompts, but overall prompt following dropped 1.25 pp because the cap cut scene details. Version 1.0 keeps the whole caption.
- A general verify-and-refine loop for all prompts: typography +2.7 pp, no gain elsewhere.
- A small prompt rewriter for Z-Image-Turbo: -2.7 pp prompt following on the final holdout.
Licences and obligations
- Synaptivo code in this repository: Apache-2.0 (LICENSE).
- FLUX 3 Image Klein: FLUX Kommunity License v1.0, from Black Forest Labs, not redistributed here.
- Commercial use is allowed only for a Qualifying User (affiliated gross annual revenue under US$5M), who must use content filters or review outputs before distribution and disclose AI generation where the law requires it.
- The Attribution Notice required by that licence is in NOTICE.
- Synaps-Image must not be presented as an official or endorsed Black Forest Labs product.
- Klein outputs were used only for evaluation and to train Klein's own LoRA (not released). They were never used to train or distil any other model.
- PUP 9B and Qwen3.8-27B: Apache-2.0.
This summary is not legal advice; the licence texts govern.
Model tree for Synaptivo/Synaps-Image-1.0
Base model
black-forest-labs/flux-3-image-klein




