Evidence · first-party tested/Best AI Tools for Extracting Structured Data from PDFs and Business Documents
Populates derived line-item fields such as day_of_week "M", days_pattern "MTWT", time_slot "430a-5a", and ad_id "NRCCW1071005" on line item 1.
What was measured
Semantic Field Enrichment
Are derived fields — transaction_type, transaction_id, cheque_number, day patterns, ad codes — correctly classified or extracted beyond raw OCR?
decisive for this rankingtransformation
This ranking is not just about copying OCR text; it also depends on whether the tool can correctly infer or classify document-specific fields needed for useful structured output. (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


Also checked on this input — same tool, 4 other criteria
Extraction Accuracy✓ WorkedGets the invoice totals and metadata numerically right, including aired_spots 8, gross_total 29750, agency_commission 4462.5, net_amount_due 25287.5, and payment_terms "30 Days".Extraction Accuracy◐ MixedLeaves several station-level fields null even though the station is identified, with call_letters "KMSP" populated but address, city, state, postal_code, main_phone, and billing_phone all null.Schema Adherence✓ WorkedReconstructs the requested invoice hierarchy in structured JSON, filling invoice_metadata, advertiser, station, line_items, and summary objects instead of returning a flat extraction.Table & Record Completeness✓ WorkedExtracts all 8 advertising line items as separate records, preserving the row count and scheduling structure instead of collapsing the table.
Provenance
- Observation
- 16a432ba-f975-4195-9525-e97b93220074
- 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 + output shown
- 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: "landing-ai",
scenario: "financial-document-extraction"
})MCP · mcp.aidemos.com/api/mcp
Free with attribution.
Same input, same check — 7 other tools
measured on Semantic Field Enrichment
Datalab✓ WorkedCorrectly extracts derived scheduling fields on line 2, including day_of_week Su, time_slot 9a-10a, air_time 9:38 AM, and ad_id NRCCWI071005.Extend AI✓ WorkedIt derives non-OCR line-item fields such as `day_of_week`, `days_pattern`, `time_slot`, and `air_time`.LlamaParse✓ WorkedCorrectly derives scheduling metadata in line items, including day_of_week, time_slot, flight_period_start/end, frequency, and days_pattern such as "---T---".Nanonets◐ MixedIt leaves line 8 without derived scheduling fields such as flight_period_start, flight_period_end, frequency, and days_pattern, even though comparable rows populate them.Reducto✓ WorkedSurfaces derived line-item metadata as structured fields, including frequency = 1x with citation support.Retab✓ 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.Unstract✓ WorkedExtracts the compact days_pattern field correctly as the actual single broadcast-day letter.
This evidence is published in
Real inputs and real outputs, no retouching · every cell queryable via API & MCP · aidemos.com