nutrient-extraction-samples | Self-contained demos for the Nutrient Data Extraction API — grounded extraction with per-field citations, bounding boxes, and confidence scores.
nutrient-extraction-samples
Nutrient Extraction Samples
Most document AI returns values.<br>This returns values and proof.
Hover any extracted field. The highlight lands on the exact pixels it came from.
Every extracted value carries a bounding box , a confidence score , and a page index . When a value looks wrong you don’t go hunting through the document — you hover the field and see precisely where the model looked. A highlight in the wrong place is a visible audit trail.
// Send a schema. Get back values with provenance.<br>"procedure_code": "99213", // the value<br>"bbox": { "x": 412, "y": 288, "width": 74, "height": 18 }, // where it came from<br>"confidence": 0.95, // how sure the model was<br>"pageIndex": 0 // which page
Open a live demo →<br>Run it yourself<br>Give it to an agent
Five documents, five hard problems
Each demo is a Python script that calls the API and generates a self-contained HTML file. The generated output is committed — open any of them in a browser with no signup, no key, and no install.
### CMS-1500 Health Insurance Claim<br>`demos/grounded_extraction/` · Data Extraction
Table row extraction across a dense printed grid. The form uses a dropout-red ink grid that scanners typically destroy — procedure codes, diagnosis codes, billing amounts, and provider fields come back correct, each highlighted in the exact table cell it came from.
**[Open demo →](https://pspdfkit.github.io/nutrient-extraction-samples/demos/grounded_extraction/output/index.html)**
### Indiana State Birth Record<br>`demos/birth_record_extraction/` · Data Extraction
Signature block detection on a mixed handwritten/printed document. The schema separates the *printed name* from the adjacent *cursive signature* — two visually adjacent fields that trip up most models. Includes a before/after tuning comparison showing how schema description specificity fixes extraction errors.
**[Open demo →](https://pspdfkit.github.io/nutrient-extraction-samples/demos/birth_record_extraction/output/index.html)**
### Making Home Affordable — RMA<br>`demos/rma_extraction/` · Data Extraction
Value isolation in a dense 3-column financial table. Monthly Income, Total Assets, and Total Expenses sit side by side with nearly identical labels. The tuning story shows a vague schema description pulling the wrong column, and a precise one fixing it — with the highlight visually confirming the correction.
**[Open demo →](https://pspdfkit.github.io/nutrient-extraction-samples/demos/rma_extraction/output/index.html)**
### CA SC-100 Small Claims<br>`demos/sc100_extraction/` · Data Extraction
Full narrative extraction from a free-text legal field. `incident_reason` captures a complete multi-sentence plaintiff explanation across multiple lines, grounded with a single box covering the whole area. Also shows cross-page extraction: five fields from three different pages.
**[Open demo →](https://pspdfkit.github.io/nutrient-extraction-samples/demos/sc100_extraction/output/index.html)**
### Small Residential Income Property Appraisal Report<br>`demos/parse_citations/` · Parse API
The document decomposed into semantic blocks — paragraphs, section headers, tables — each with spatial coordinates. This is the RAG citation case: every block in the sidebar links back to its exact location, so a retrieval pipeline can cite its source precisely. Reach for Parse when you need structure-aware chunking rather than field-level extraction.
**[Open demo →](https://pspdfkit.github.io/nutrient-extraction-samples/demos/parse_citations/output/index.html)**
Vertical<br>Demo
Healthcare billing<br>CMS-1500
Government / vital records<br>Indiana Birth Record
Mortgage / housing assistance<br>Making Home Affordable RMA
Legal / civil court<br>CA SC-100 Small Claims
Real estate / lending<br>Appraisal Report (Form 72)
Screenshots — the hover interaction in each demo
<br><br><br><br>
Run it yourself
Just want to look? Every output/index.html is committed — open one in a browser and you’re done. To regenerate against your own documents:
# 1. Python 3.10+<br>pip install -r requirements.txt
# 2. Replay...