Extract data from PDF form fields and checkboxes
Applications, onboarding packs, claim forms and intake questionnaires arrive as fillable PDFs, flattened PDFs and scans of paper filled in by hand. PdfParse reads all three and returns each field and checkbox as a typed value, with the page, position and confidence.
Parse a form before you sign up
Drop a filled form or pick the scanned sample form. Page 1 is parsed in full, and the rendered page outlines every field and checkbox it found.
What one call returns
Page one rendered with every block outlined, next to the JSON your code receives.
- Reading text layer
- Detecting layout
- Extracting tables
- Building JSON
Headings, paragraphs, tables and totals detected
Portsmouth, NH 03801
| Description | Qty | Unit | Amount |
|---|---|---|---|
| Oak countertop, 2.4 m | 2 | 640.00 | 1,280.00 |
| Cabinet doors, shaker | 12 | 85.00 | 1,020.00 |
| On site fitting | 1 | 450.00 | 450.00 |
Quote the invoice number with your transfer.
Goods remain ours until paid in full.
Pages 2 and later are parsed after you create an account.
{ "document": { "pages": 2, "parsed_pages": 1, "language": "en" }, "pages": [ { "number": 1, "blocks": [ { "type": "heading", "text": "Invoice", "bbox": [48, 52, 132, 84] }, { "type": "paragraph", "text": "Harbor Street Joinery, 14 Dock Lane, Portsmouth" }, { "type": "key_value", "pairs": { "Invoice no.": "INV-2026-0418", "Issued": "Oct 14, 2026", "Due": "Nov 13, 2026" } }, { "type": "table", "columns": ["Description", "Qty", "Unit", "Amount"], "rows": [ ["Oak countertop, 2.4 m", 2, 640.00, 1280.00], ["Cabinet doors, shaker", 12, 85.00, 1020.00], ["On site fitting", 1, 450.00, 450.00] ] }, { "type": "total", "label": "Total due", "value": 2983.75, "currency": "USD", "confidence": 0.98 } ] } ], "fields": { "invoice_number": { "value": "INV-2026-0418", "confidence": 0.99, "page": 1 }, "total": { "value": 2983.75, "confidence": 0.98, "page": 1 }, "due_date": { "value": "2026-11-13", "confidence": 0.97, "page": 1 } } }
Downloads from the demo include a watermark field and cover page one only.
Page one is parsed in your browser, so your file never reaches our servers.
One demo per day from this network. Create an account to parse more pages.
$ curl https://api.pdfparse.ai/v1/parse \ -H "Authorization: Bearer $PDFPARSE_API_KEY" \ -F file[email protected] \ -F outputs=json,markdown,csv
Three kinds of forms, one output
A fillable PDF stores its values in form widgets. A flattened PDF prints the values into the page and drops the widgets. A scan has no text layer at all. Text libraries handle the first case and miss the other two. PdfParse detects labels, boxes and checkmarks from the page layout, runs OCR where needed, and maps what it finds to the field names you choose.
This schema describes a small business account application. Booleans come back as true or false, and grouped checkboxes can be read into an array.
The result your intake system reads
Every value carries a confidence score and the page it came from. The raw blocks of type form_field and checkbox are also returned in the pages array with their bounding boxes, so you can draw them back onto the page in your review screen.
{
"name": "account_application",
"fields": [
{ "name": "applicant_name", "type": "string", "description": "Full name of the person signing the application" },
{ "name": "business_name", "type": "string", "description": "Registered business name" },
{ "name": "date_of_birth", "type": "date", "description": "Applicant date of birth" },
{ "name": "email", "type": "string", "description": "Contact email written on the form" },
{ "name": "annual_revenue", "type": "money", "description": "Expected annual revenue" },
{ "name": "business_type", "type": "array", "description": "Every checked box in the Business type group" },
{ "name": "accepts_terms", "type": "boolean", "description": "Whether the I accept the terms box is checked" },
{ "name": "signed", "type": "boolean", "description": "Whether the signature line contains a signature" }
]
}
{
"id": "prs_51e7aa",
"status": "completed",
"fields": {
"applicant_name": { "value": "Dana Whitfield", "confidence": 0.95, "page": 1 },
"business_name": { "value": "Whitfield Garden Design", "confidence": 0.94, "page": 1 },
"date_of_birth": { "value": "1988-04-12", "confidence": 0.92, "page": 1 },
"email": { "value": "[email protected]", "confidence": 0.9, "page": 1 },
"annual_revenue": { "value": 180000.00, "confidence": 0.93, "page": 1 },
"business_type": { "value": ["Sole proprietor"], "confidence": 0.97, "page": 1 },
"accepts_terms": { "value": true, "confidence": 0.98, "page": 2 },
"signed": { "value": true, "confidence": 0.91, "page": 2 }
},
"usage": { "pages": 2 }
}
How form intake works with PdfParse
-
1
Your portal or mailbox sends the completed form to POST /v1/parse with the schema id and ocr set to "auto".
-
2
Short forms return in the same response. Long application packs return a job id, and a parse.completed webhook carries the result back.
-
3
Your system checks required fields, validates dates and amounts, and creates the record.
-
4
Forms with a missing signature, an unchecked consent box or a low confidence value go to a review queue that opens on the right page.
-
5
Archives of old paper forms go through batch jobs of up to 500 files per job, so a backlog of thousands of scans becomes a CSV in an afternoon.
Operations teams can run the same flow in the web app. They upload forms, pick the schema and export one CSV row per form for the CRM or the case system.
Forms that trip up other tools
- Handwritten entries in boxes are read with OCR, and characters written in separate cells are joined into one value.
- Checkmarks, crosses, filled circles and partly filled boxes are detected as checked or not checked, each with its own confidence.
- Radio groups where only one answer is allowed return a single value, and groups that allow several return an array.
- Multi page forms with the same label on several pages, such as a date on every page, are told apart by the description in your schema.
- Forms with a table section, such as a list of dependants or previous addresses, return that section as an array of rows.
- Flattened PDFs exported from other systems are treated like scans of printed forms when the widgets are gone.
Plans for form extraction
Custom schemas start on Growth. Dedicated form field and checkbox detection is part of Scale and Enterprise, which most form intake projects use.
| Plan | Yearly billing | Monthly billing | Pages per month | Forms |
|---|---|---|---|---|
| Starter | $24 per month | $49 per month | 2,000 | JSON, Markdown and CSV, OCR for scans |
| Growth | $74 per month | $149 per month | 7,000 | Up to 10 custom schemas, webhooks, batch jobs |
| Scale | $249 per month | $499 per month | 24,000 | Form field and checkbox detection, unlimited schemas, audit log |
| Enterprise | $749 per month | $1,499 per month | 72,000 | SSO, roles, priority support, DPA, EU or US processing region |
Every plan is a subscription and upgrading charges the difference right away. Compare every limit on PDF extraction API pricing and read the parameters in the document parsing API reference.
- Starter 2,000 pages, 1 API key, 1 seat $49 per month $24 per month, $288 billed yearly
- Growth 7,000 pages, 5 API keys, 3 seats $149 per month $74 per month, $888 billed yearly
- Scale 24,000 pages, 20 API keys, 10 seats $499 per month $249 per month, $2,988 billed yearly
- Enterprise 72,000 pages, unlimited API keys with per key limits, 25 seats $1,499 per month $749 per month, $8,988 billed yearly
FAQ
Can PdfParse read fillable and flattened PDF forms
Yes. Fillable forms, flattened PDFs and scans of paper forms all return the same JSON, because fields are detected from the page layout and not only from form widgets.
How are checkboxes returned
A single checkbox returns true or false. A group of checkboxes can return an array of the checked labels. Each value includes a confidence score and its page.
Does it read handwriting in form boxes
Handwritten entries are read with OCR. Clear block capitals read best, and every value carries a confidence score so unclear entries can go to a person.
Which plan do I need for form extraction
Custom schemas start on Growth. Form field and checkbox detection is part of Scale and Enterprise.
Can I keep forms with personal data off your servers
Scale and Enterprise include zero retention mode, which deletes the file and its outputs once the result is returned. Files are never used to train models.
Turn your form backlog into records
Create an account, define your form schema and send the first batch from the Python or Node SDK.