Download scripts/generate_verification_suite.py from InternsProgressUpdate/Venket: direct link, hf CLI and curl.
- Browser
- Download file 2.78 kB
-
https://huggingface.co/InternsProgressUpdate/Venket/resolve/main/scripts/generate_verification_suite.py
- Command line
-
hf download hf://InternsProgressUpdate/Venket/scripts/generate_verification_suite.py
-
curl -L -o generate_verification_suite.py https://huggingface.co/InternsProgressUpdate/Venket/resolve/main/scripts/generate_verification_suite.py
2.78 kB
| #!/usr/bin/env python | |
| """Generate a labeled sample batch covering all 12 verification test-case types. | |
| For each ``case_type`` in ``src.verification.case_types.CASE_TABLE`` (1a | |
| through 5b), generates a couple of samples via ``GeneratorContext`` directly | |
| (bypassing ``DatasetGenerator`` since each case needs its own config | |
| override), writes the rendered PNGs + metadata JSONs to | |
| ``output/verification_suite/``, and prints a verdict/reject_code summary | |
| table. | |
| Usage: | |
| python scripts/generate_verification_suite.py [--per-case N] | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| import json | |
| import sys | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).resolve().parents[1])) | |
| from src.config.loader import load_config | |
| from src.generator import GeneratorContext | |
| from src.metadata.metadata_exporter import MetadataExporter | |
| from src.utils.image_io import save_image_rgb | |
| from src.verification.case_types import CASE_TABLE | |
| ROOT = Path(__file__).resolve().parents[1] | |
| OUT_DIR = ROOT / "output" / "verification_suite" | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(description=__doc__) | |
| parser.add_argument("--per-case", type=int, default=2, help="Samples to generate per case type.") | |
| parser.add_argument("--seed", type=int, default=4242, help="Master seed.") | |
| args = parser.parse_args() | |
| OUT_DIR.mkdir(parents=True, exist_ok=True) | |
| exporter = MetadataExporter() | |
| summary_rows = [] | |
| sample_index = 1 | |
| for code in CASE_TABLE: | |
| config = load_config( | |
| config_path=str(ROOT / "configs" / "examples" / "verification_cases.yaml"), | |
| overrides=[f"quality.case_type={code}", f"seed={args.seed}"], | |
| ) | |
| ctx = GeneratorContext(config) | |
| for _ in range(args.per_case): | |
| sample_id = f"case_{sample_index:03d}" | |
| metadata, final_image, _ = ctx.run_sample(sample_index) | |
| metadata["document_id"] = sample_id | |
| save_image_rgb(OUT_DIR / f"{sample_id}.png", final_image) | |
| exporter.export(metadata, OUT_DIR / f"{sample_id}.json") | |
| v = metadata["verification"] | |
| summary_rows.append({ | |
| "sample_id": sample_id, "case_type": code, "template": metadata["template"], | |
| "box_id": v["target_box_id"], "verdict": v["verdict"], "reject_code": v["reject_code"], | |
| }) | |
| print(f"[{sample_id}] case_type={code:<3} template={metadata['template']:<12} " | |
| f"box={v['target_box_id']:<5} -> {v['verdict']:<7} {v['reject_code'] or '-'}") | |
| sample_index += 1 | |
| (OUT_DIR / "summary.json").write_text(json.dumps(summary_rows, indent=2), encoding="utf-8") | |
| print(f"\nWrote {len(summary_rows)} samples to {OUT_DIR}") | |
| if __name__ == "__main__": | |
| main() | |