#!/usr/bin/env python3 """Validate the recorded observations, including known extraction failures. A successful verifier means the evidence is consistent. It does not mean every extraction case passed. Use run.py to execute the extractor again. """ from hashlib import sha256 import json from pathlib import Path ROOT = Path(__file__).resolve().parent report = json.loads((ROOT / "artifacts/results.json").read_text()) cases = {item["case_id"]: item for item in report["results"]} for name, metadata in report["fixtures"].items(): assert sha256((ROOT / "artifacts" / name).read_bytes()).hexdigest() == metadata["sha256"] assert cases["digital-ruled-default"]["raw_exact_match"] is True multi = cases["multipage-ruled-default"] assert multi["raw_exact_match"] is True assert len(multi["observed_pages"]) == 2 assert multi["explicit_stitching"]["exact_match"] is True borderless = cases["borderless-default-lines"] assert borderless["raw_exact_match"] is False assert borderless["observed_pages"][0]["tables"] == [] text = cases["borderless-text-strategies"] assert text["normalized_exact_match"] is False assert text["normalized_tables_by_page"][0][0][0] == ["Item", "Quantity", "Unit"] assert text["expected_tables_by_page"][0][0][0] == ["Item", "Quantity", "Unit price"] rotated = cases["rotated-90-default"] assert rotated["observed_pages"][0]["rotation"] == 90 assert rotated["raw_exact_match"] is False assert len(rotated["observed_pages"][0]["tables"][0]) == 3 assert len(rotated["observed_pages"][0]["tables"][0][0]) == 4 image_only = cases["image-only-without-ocr"] assert image_only["raw_exact_match"] is False assert image_only["observed_pages"][0]["character_count"] == 0 assert image_only["observed_pages"][0]["image_count"] == 1 assert image_only["observed_pages"][0]["tables"] == [] print("Evidence verified: ruled cases match; borderless, rotated and image-only limitations reproduced.")