Every figure, table and caption, mapped.
Drop a paper. paperparse returns each figure as a hi-res crop with its caption — sub-panels and their sub-captions included — every table transcribed to markdown, and the body as clean markdown. Then it checks its own work and flags anything it can't verify.
Three passes, one clean map.
Body text and figures are extracted by the tools each is best at, then a validation stage reconciles the two so nothing ships silently wrong.
Mistral reads the text
The full body is transcribed to markdown — headings, tables and math preserved — and every figure legend is captured wherever it physically sits.
Gemini finds figures & tables
Each complete figure is detected as one region, re-rendered at 300 dpi and paired with its caption; with sub-panels on, every labelled panel is cropped and its sub-caption sliced. Tables are detected the same way and transcribed cell-by-cell to Markdown — uncertainties (even asymmetric error bars) preserved verbatim.
It checks its own work
Off-page captions are relocated by label, a missed figure is re-detected and recovered, and anything still unresolved is flagged — never dropped in silence.
Or call it as an API.
The same engine behind this page is an authenticated HTTP service on Cloud Run. Send a PDF, get back the figure/caption map plus signed URLs for every crop.
Send Authorization: Bearer denario_live_…
— a key from denario-web. Issue and revoke there; nothing to redeploy.
# parse a paper — figures, tables & equations auto-detected
curl -X POST "$URL/parse-file" \
-H "Authorization: Bearer $DENARIO_API_KEY" \
-F "file=@paper.pdf"
# or the bundled client
export DENARIO_API_KEY=denario_live_…
python server/client.py paper.pdf --out results
The authoritative map: every figure's page,
label, caption, crop path and panels — plus a validation block recording repairs and warnings.