#!/usr/bin/env python3 """ Quick OCR test — verify the ONNX engine works on sample images. Usage: python tools/test_quick.py # test all images in working_space/input/ python tools/test_quick.py path/to/image.png # test single image """ import sys import time from pathlib import Path from PIL import Image sys.path.insert(0, str(Path(__file__).parent.parent)) from ocr.engine_onnx import OcrEngineOnnx def test_image(engine: OcrEngineOnnx, path: Path) -> bool: """Run OCR on one image and print results.""" img = Image.open(path) t0 = time.perf_counter() result = engine.recognize_pil(img) elapsed = (time.perf_counter() - t0) * 1000 status = "OK" if result.text.strip() else "EMPTY" text_short = result.text.replace("\n", " | ")[:80] print(f" [{status}] {path.name:30s} {elapsed:6.0f}ms " f"L={len(result.lines):2d} C={result.average_confidence:.0%} " f'"{text_short}"') return bool(result.text.strip()) def main(): if len(sys.argv) > 1: paths = [Path(p) for p in sys.argv[1:]] else: input_dir = Path("working_space/input") if not input_dir.exists(): print(f"No images found. Place .png files in {input_dir}") return paths = sorted(input_dir.glob("*.png")) if not paths: print("No images to test.") return print(f"Testing {len(paths)} image(s)...\n") engine = OcrEngineOnnx() ok = sum(test_image(engine, p) for p in paths) print(f"\n Result: {ok}/{len(paths)} images produced text") if __name__ == "__main__": main()