Evidence · first-party tested/Best AI Tools for Extracting Structured Data from PDFs and Business Documents
It extracts all 8 advertising line items as separate records without row merging or duplication.
What was measured
Table & Record Completeness
Are all tabular rows (transactions, line items) extracted without merging, duplication, omission, or phantom records?
decisive for this rankingtransformation
For document data extraction, missing, merged, duplicated, or phantom rows directly corrupt the structured dataset and break downstream querying. (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, 5 other criteria
Extraction Accuracy✓ WorkedIt extracts invoice metadata and financial totals accurately, including 8 aired spots, gross_total 29750, agency_commission 4462.5, net_amount_due 25287.5, and payment_terms "30 Days".Extraction Accuracy◐ MixedIt concatenates program-description text without a separator, so labels such as "Political Issue Rates" are appended directly onto the show title in fields like "Fox 9 AM News at 4:30amPolitical Issue Rates".Schema Adherence✓ WorkedIt preserves the invoice hierarchy exactly as requested, filling dedicated objects for invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary.Semantic Field Enrichment◐ 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.Semantic Field Enrichment✓ WorkedThe tool correctly enriches ordinary invoice rows with derived scheduling fields such as time_slot, day_of_week, flight_period_start/end, frequency, and days_pattern on line items like line 4.
Provenance
- Observation
- 513d08f7-b8e4-41ad-ad57-d1d53f2bd1ed
- 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
- output 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: "nanonets",
scenario: "financial-document-extraction"
})MCP · mcp.aidemos.com/api/mcp
Free with attribution.
Same input, same check — 7 other tools
measured on Table & Record Completeness
Datalab✓ WorkedKeeps all 8 advertising spots as separate line-item records, with the JSON tree showing indices 0 through 7 and no adjacent-row merging.Extend AI✓ WorkedIt extracts all eight invoice line items as separate rows, preserving description, airtime, rate, flight period, reference number, and campaign IDs without merging records.Landing AI✓ WorkedExtracts all 8 advertising line items as separate records, preserving the row count and scheduling structure instead of collapsing the table.LlamaParse✓ WorkedExtracts the invoice line_items table as 8 separate records (indices 0 through 7) without merging adjacent rows.Reducto✓ WorkedKeeps all 8 invoice line items as separate structured rows without merging adjacent entries.Retab✓ WorkedReconstructs all 8 advertising line items as separate records without duplication or omission.Unstract✓ WorkedCarries a line item cleanly across the page break without duplicating or losing the row, showing page-break continuity in the line_items array.
This evidence is published in
Real inputs and real outputs, no retouching · every cell queryable via API & MCP · aidemos.com