Evidence · first-party tested/Best AI Tools for Extracting Structured Data from PDFs and Business Documents
Does not preserve the schema-defined property order, so consumers that rely on key order need an extra formatting pass.
What was measured
Structural Clean Output
Is the JSON directly consumable by a downstream AI pipeline or system without requiring a structural transformation layer?
context, not decisivetransformation
Directly consumable JSON is valuable for workflow convenience, but it is a delivery/integration concern rather than the core measure of extraction quality itself. (3 of 3 judges)
What was given, what came back
Test input: Invoice PDF · pdf · group: financial-document-extraction
Input — what we sent


Input not captured
This run recorded no prompt or input file for the test, so we cannot show you what produced the result below. Capture gaps are tracked, not hidden.
A 2-page broadcast advertising invoice PDF with 8 line items, complex time/day fields, large dollar amounts, and compliance text, used to test hierarchical line-item extraction and financial validation.
Why this input is hard
- · Nested line-item hierarchy extraction
- · Multi-page line-item continuity across a page break
- · Large dollar amount precision and total validation
- · Parsing time slots, day patterns, and air dates
- · Extraction of alphanumeric ad IDs and reference codes
- · Structured metadata mapping for advertiser, station, billing, and remit sections
- · Political advertising and FCC compliance text recognition
Output — unretouched
No output artifact
The verdict rests on the tester's written observation alone — no file was captured for this cell.
Also checked on this input — same tool, 6 other criteria
Extraction Accuracy◐ MixedRetains the source label in payment_terms, returning Payment Terms 30 Days instead of only the requested value, so a cleanup step is needed.Extraction Accuracy✓ WorkedExtracts key invoice metadata values as typed fields, including invoice_number 4064621-1, invoice_date 2012-10-28, estimate_number 2968, and order_number 4064621.Extraction Accuracy✓ WorkedCarries the financial summary through consistently, including agency_commission 4462.5, aired_spots 8, gross_total 29750, and net_amount_due 25287.5.Schema Adherence✓ WorkedBuilds the requested invoice hierarchy with separate invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary objects instead of a flat OCR dump.Semantic Field Enrichment✓ WorkedDerives scheduling fields beyond raw OCR, including day_of_week Su and days_pattern ------S for a line item, along with air_time, time_slot, and ad_id.Table & Record Completeness✓ WorkedReconstructs all 8 advertising line items as separate records without duplication or omission.
Provenance
- Observation
- b78d37af-33a7-4f25-91f5-6a7c39e2f334
- Evidence run
- ec4d736d-95f9-4c88-884c-e280435f7b7b
- Study
- Extract and query structured data from documents using natural language
- Research task
- 86b9y25e5
- Tested at
- not recorded
- Source
- first-party
- Evidence state
- verified
- Proof shown
- input only
- Cost / latency
- not captured
- Repeat run
- not captured
- Tester
- not captured
The last three rows are honest blanks, not placeholders — our capture has no field for them yet.
Query this
get_evidence({
tool: "retab",
scenario: "financial-document-extraction"
})MCP · mcp.aidemos.com/api/mcp
Free with attribution.
Same input, same check — 2 other tools
measured on Structural Clean Output
Datalab◐ MixedThe generated JSON is structurally valid but not order-stable: line_items appears before other top-level sections that were defined earlier in the supplied schema.Extend AI✗ FailedIt reorders several schema sections relative to the supplied schema, so the output is not consistently in the authored field order.
This evidence is published in
Real inputs and real outputs, no retouching · every cell queryable via API & MCP · aidemos.com