diff options
| author | main <main@swarm.moe> | 2026-05-23 19:37:10 -0400 |
|---|---|---|
| committer | main <main@swarm.moe> | 2026-05-23 19:37:10 -0400 |
| commit | 15ff7061b08aaa946525964f3c559df4da19824f (patch) | |
| tree | 4fbf4e43ef47f2a66e81ee61edd8f9e2f8a61255 /noo-harvest/scripts/paper_prepare.py | |
| parent | d79b19e61aed0eaa9d695cc418b955da0c85e9aa (diff) | |
| download | skills-15ff7061b08aaa946525964f3c559df4da19824f.zip | |
Scrub parked WIP skills from main
Diffstat (limited to 'noo-harvest/scripts/paper_prepare.py')
| -rw-r--r-- | noo-harvest/scripts/paper_prepare.py | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/noo-harvest/scripts/paper_prepare.py b/noo-harvest/scripts/paper_prepare.py deleted file mode 100644 index 3dc8329..0000000 --- a/noo-harvest/scripts/paper_prepare.py +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env -S uv run --script -# /// script -# requires-python = "==3.13.*" -# dependencies = [] -# /// - -from __future__ import annotations - -import argparse -import os -import subprocess -import sys -from pathlib import Path - - -def parse_args() -> argparse.Namespace: - parser = argparse.ArgumentParser( - description="Run the noo-harvest paper extraction and phase-2 verification pipeline." - ) - parser.add_argument("input_pdf") - parser.add_argument("output_dir") - parser.add_argument("--model-path", help="Explicit local DeepSeek-OCR-2 snapshot for paper_ocr.py") - parser.add_argument("--ocr-python", help="Explicit Python interpreter for the OCR runtime") - parser.add_argument("--pages", help="Comma-separated 1-based pages and ranges, e.g. 1,3-5") - parser.add_argument( - "--extract-only", - action="store_true", - help="Run OCR extraction only; do not invoke phase-2 verification", - ) - parser.add_argument( - "--verify-only", - action="store_true", - help="Run phase-2 verification from an existing extracted/document.blocks.json", - ) - parser.add_argument( - "--force-extract", - action="store_true", - help="Rerun OCR extraction even if extracted/document.blocks.json already exists", - ) - return parser.parse_args() - - -def run_step(argv: list[str], *, cwd: Path | None = None) -> None: - subprocess.run(argv, check=True, cwd=cwd) - - -def discover_ocr_python(explicit: str | None) -> str: - candidates: list[Path] = [] - if explicit: - candidates.append(Path(explicit).expanduser()) - - env_python = os.environ.get("NOO_HARVEST_OCR_PYTHON") - if env_python: - candidates.append(Path(env_python).expanduser()) - - repo_root = Path(__file__).resolve().parents[2] - candidates.append(repo_root / ".tmp/deepseek-ocr2/.venv/bin/python") - - for candidate in candidates: - if candidate.is_file(): - return str(candidate) - - return sys.executable - - -def main() -> int: - args = parse_args() - if args.extract_only and args.verify_only: - raise SystemExit("--extract-only and --verify-only are mutually exclusive") - - script_root = Path(__file__).resolve().parent - trusted_root = script_root.parents[1] - input_pdf = Path(args.input_pdf).expanduser().resolve() - output_dir = Path(args.output_dir).expanduser().resolve() - extracted_dir = output_dir / "extracted" - verified_dir = output_dir / "verified" - document_path = extracted_dir / "document.blocks.json" - ocr_python = discover_ocr_python(args.ocr_python) - - if not args.verify_only and (args.force_extract or not document_path.is_file()): - ocr_cmd = [ocr_python, str(script_root / "paper_ocr.py"), str(input_pdf), str(extracted_dir)] - if args.model_path: - ocr_cmd.extend(["--model-path", args.model_path]) - if args.pages: - ocr_cmd.extend(["--pages", args.pages]) - run_step(ocr_cmd, cwd=trusted_root) - elif not document_path.is_file(): - raise SystemExit(f"missing extracted ledger at {document_path}; rerun without --verify-only") - - if args.extract_only: - return 0 - - verify_cmd = [sys.executable, str(script_root / "paper_verify.py"), str(extracted_dir), str(verified_dir)] - if args.pages: - verify_cmd.extend(["--pages", args.pages]) - run_step(verify_cmd, cwd=trusted_root) - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) |