Form Filling
How DeepRead's AI-powered form filling works under the hood
Form Filling
DeepRead's form fill system uses visual AI to detect and fill PDF forms. Unlike traditional form-filling tools that require digital form fields, DeepRead works with any PDF—including scanned documents and forms without embedded field definitions.
Visual field detection
The system uses vision AI to analyze each page of your PDF and detect all fillable areas:
PDF Pages → Vision AI → Detected Fields with Coordinates
For each detected field, the system captures:
- Label: The visible text near the field (e.g., "Full Name:", "Date of Birth")
- Context: What data the field expects (e.g., "applicant's legal name")
- Field type: text, checkbox, dropdown, or signature
- Coordinates: Precise bounding box for text placement
This approach means DeepRead can fill forms that other tools cannot—scanned government forms, handwritten templates, or legacy documents without AcroForm metadata.
Semantic data mapping
After detecting fields, the AI maps your JSON data to the appropriate fields using semantic understanding:
// Your input { "full_name": "Jane Smith", "dob": "1985-03-15", "address": "123 Main Street, New York, NY 10001" }
The mapping handles:
- One-to-many: A single key like
addresscan populate multiple related fields - Value transformation: Values may be formatted to match field expectations
- Confidence scoring: Each mapping includes a confidence level
- Unmapped tracking: Keys without matches are reported in the response
Fill and verify
Once mappings are established, the system:
- Renders the PDF and inserts text at calculated coordinates
- Runs QA using vision AI to verify each filled field
- Repairs any issues (overlapping text, cut-off values, wrong positioning)
- Marks stuck fields when issues can't be resolved automatically
The QA process checks:
- Is the text visible and readable?
- Does text overlap with labels or other fields?
- Is the value in the correct field?
- Does the font size fit the available space?
Job lifecycle
Form fill jobs follow the same lifecycle as processing jobs:
queued → processing → completed
↘ failed
Job states
| State | Description |
|---|---|
queued | Job created, waiting to start |
processing | AI is detecting fields, mapping data, and filling |
completed | Form filled successfully, download URL available |
failed | Unrecoverable error occurred |
Result fields
When a job completes, you receive:
| Field | Description |
|---|---|
filled_form_url | Signed URL to download the filled PDF |
fields_detected | Total form fields found by vision AI |
fields_filled | Fields that received values |
fields_verified | Fields that passed QA checks |
fields_hil_flagged | Fields flagged for human review |
report | Detailed breakdown of mappings and adjustments |
errors | List of any issues encountered |
Best practices
Provide descriptive field keys
Use keys that describe the data semantically. The AI uses these to match fields:
{ "full_name": "John Doe", "date_of_birth": "1990-01-15", "mailing_address": "123 Main St, City, ST 12345" }
Include all data you want filled
The AI only fills fields that have matching data in your input.
Webhooks
Configure a webhook_url when creating a job to receive completion notifications. See the Form Fill API Reference for webhook payload structure.
Limitations
- File size and page limits: Plan-dependent (see Pricing)
- Complex layouts: Forms with unusual layouts may have lower accuracy