Documentation
AssayPDF docs
Everything you need to install, run, and reproduce the GWG 2022 benchmark. Sourced live from the assay-pdf engine repo — edits there appear here within minutes.
Getting started
Overview
[](https://github.com/thinkneverland/assay-pdf/actions/workflows/ci.yml) [](https://www.python.org/downloads/) [](LICENSE) [](https://gwg.org/technical-specifications/gwg-2022-specifications/)
Installing AssayPDF
Prerequisites for AssayPDF: Python with uv, system binaries (ghostscript, qpdf, mupdf-tools, exiftool, imagemagick, verapdf), and optional preflight engines for benchmarking.
Usage walkthrough
End-to-end walkthrough: fetch vendor assets, generate the deterministic PDF corpus, benchmark a preflight engine, render reports, and validate against verapdf.
Architecture
How AssayPDF's spec layer, generator, harness, scorer, and reports fit together — from spec ingestion through deterministic PDF generation to per-engine accuracy reports.
Reference
CLI reference
Per-command flags, exit codes, engine identifiers, and variant kebab names for every assay subcommand: fetch, ingest, generate, benchmark, report, and validate.
Methodology
How AssayPDF scores a preflight engine: confusion-matrix counts per rule and variant, rule-map translation, misattribution penalties, and reproducibility guarantees.
Reproducing AssayPDF
Step-by-step guide to running AssayPDF end-to-end on your machine, generating the corpus, running engine benchmarks, and reproducing a published accuracy score.
Troubleshooting
Common errors when running assay commands and how to fix them: missing engines, verapdf failures, checksum mismatches, unknown variant kebabs, and empty score reports.
Known quirks
Documented edge cases and surprising behaviors: verapdf JDK warnings, pikepdf XMP messages, ICC profile fallbacks, stub negatives, and architecture-specific determinism.