"""Inspect local PDF page text without network requests or model calls."""

import argparse
import json
from pathlib import Path

from pypdf import PdfReader


def inspect_pdf(path):
    reader = PdfReader(Path(path))
    if reader.is_encrypted:
        raise ValueError("Encrypted PDF: inspect an authorized unlocked copy.")
    pages = []
    for number, page in enumerate(reader.pages, start=1):
        text = page.extract_text() or ""
        pages.append({
            "physical_page": number,
            "extracted_characters": len(text.strip()),
            "text_preview": text.strip()[:160],
        })
    return {
        "filename": Path(path).name,
        "physical_pages": len(reader.pages),
        "pages": pages,
        "note": "Zero extracted characters does not prove a page is blank. No OCR performed.",
    }


def main():
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("pdf", type=Path)
    args = parser.parse_args()
    try:
        result = inspect_pdf(args.pdf)
    except (OSError, ValueError) as error:
        parser.error(str(error))
    print(json.dumps(result, ensure_ascii=False, indent=2))


if __name__ == "__main__":
    main()
