import sys from typing import Literal, Optional from pydantic import BaseModel from velrim import Client, Document class Invoice(BaseModel): invoice_number: str total: float currency: Literal["USD", "EUR"] po_number: Optional[str] = None def extract_invoice(path: str): with Client() as client: # reads VELRIM_API_KEY result = client.extract(document=Document.from_path(path), schema=Invoice) # The default None folds omission and explicit null together in parsed. # Keep fields to distinguish their extraction states. return result if __name__ == "__main__": if len(sys.argv) != 2: raise SystemExit("Usage: python invoice.py invoice.pdf") result = extract_invoice(sys.argv[1]) print({"request_id": result.meta.request_id, "billed_pages": result.meta.billed_pages})