Open this page with pdf to json installed — the button shows up wherever a pdf can be read.
One click and the run finishes: every line item, the vat and the total due land in the popup.
Another shape of paper: dates and a running balance. Let the ai build a schema for it and keep it.
A floating button in the bottom right corner — an embedded pdf is captured like one opened in a tab.
The button appears and the run starts exactly as it would from the popup. It cannot reach a result: all three pages are empty — not a single /Contents object — so recognition answers ocr_empty. For an end-to-end run take invoice.pdf above.
.pdf
The button is still there. An address cannot decide this — a pdf announces itself with a Content-Type header, not with its last four letters.
The button is there, and the whole address travels to the worker — query kept, fragment dropped.
No button on either, even after you hover them. The popup accepts an image by hand, but capture on a page is about pdfs.
The button is there and the file reaches the backend, where POST /api/v1/jobs answers 422 with pdf_unreadable and the extension translates it. No job is created and no attempt is spent: the structure is read before an attempt is reserved.
MAX_FILE_SIZE_MB
Refused by size before any byte is sent to the backend. The limit comes from GET /health, it is not hardcoded.
localhost
The button is there like everywhere else. Site access is asked once for all sites, not per origin, so this case differs from its neighbours only by address.
The same floating button in the bottom right corner, over chrome's built-in viewer.