{"observation":{"id":"87b13324-a0ba-424d-ae9f-8da3844ab650","tool":"unstract","tool_name":"Unstract","criterion":"schema-adherence","criterion_name":"Schema Adherence","criterion_definition":"Does the output follow the supplied JSON schema hierarchy exactly, with correct nesting, field names, and data types?","criterion_evidence_type":"transformation","criterion_rank_role":"decisive","criterion_rank_role_reason":"If the tool does not follow the supplied JSON schema exactly, the extracted data cannot be reliably used for structured querying or downstream automation. (3 of 3 judges)","scenario":"invoice-pdf","scenario_name":"Invoice PDF","group_tag":"business-document-extraction","scenario_description":"A two-page broadcast advertising invoice PDF with nested header metadata, billing and remit addresses, and eight line items spanning a page break. It was used to stress hierarchical line-item extraction, amount precision, time/day parsing, code extraction, and summary validation.","modality":"pdf","input_text":null,"input_artifact_refs":[{"alt":null,"url":"https://cdn.futuresmart.ai/public/aidemos/e0e9f678bcde4e29a492a11927fc38f7.pdf?v=1","role":"input","filename":"Invoice PDF.pdf"}],"stresses":["Nested line-item hierarchy extraction","Multi-page continuity across a page break","Precision on large dollar amounts and totals","Parsing complex time slots and day patterns","Extraction of Ad IDs and reconciliation codes","Mapping structured metadata sections correctly","Financial summary validation","Handling political advertising compliance text"],"verdict":"worked","score":null,"score_total":null,"note":"Populates the invoice extraction into the requested hierarchy, separating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary fields.","evidence_state":"verified","source":null,"artifacts":[{"url":"https://cdn.futuresmart.ai/public/aidemos/cb167e3d358042c28f510cff62220d39.png?v=1","role":"input","alt":null},{"url":"https://d3epheqghktydj.cloudfront.net/research-media-unstract-invoice-output-e53f3477db06.json","role":"output","alt":null},{"url":"https://d3epheqghktydj.cloudfront.net/research-media-unstract-invoice-output-707a051c2b7c.json","role":"output","alt":null}],"run_id":"a061b9e7-a9c5-443d-a171-b296aaf51b8c","study_title":"Extract and query structured data from documents using natural language","study_kind":"generation","research_task":"86b9y25e5","tested_at":null,"completeness":"input-and-output","input":{"state":"files","text":null,"files":[{"url":"https://cdn.futuresmart.ai/public/aidemos/e0e9f678bcde4e29a492a11927fc38f7.pdf?v=1","filename":"Invoice PDF.pdf","alt":"Invoice PDF","role":"input"}],"modality":"pdf","stresses":["Nested line-item hierarchy extraction","Multi-page continuity across a page break","Precision on large dollar amounts and totals","Parsing complex time slots and day patterns","Extraction of Ad IDs and reconciliation codes","Mapping structured metadata sections correctly","Financial summary validation","Handling political advertising compliance text"]},"tool_page_slug":"unstract","tool_url":"https://aidemos.com/tools/unstract","permalink":"https://aidemos.com/evidence/87b13324-a0ba-424d-ae9f-8da3844ab650","api_url":"https://ai.aidemos.com/v1/observations/87b13324-a0ba-424d-ae9f-8da3844ab650"},"peers":[{"id":"bdb8a9b6-f2fe-4f93-a1ae-1f0261437067","tool":"datalab","tool_name":"Datalab","verdict":"worked","score":null,"score_total":null,"note":"The invoice workflow can emit nested schema-shaped JSON with separate invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary objects rather than flat OCR text.","artifact_count":1,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/e05afc14d51f4f23bae1e9a22929fccd.mp4?v=1","evidence_url":"https://aidemos.com/evidence/bdb8a9b6-f2fe-4f93-a1ae-1f0261437067"},{"id":"d73f718e-a9a9-4284-b33e-de2e4ed6da9b","tool":"extend-ai","tool_name":"Extend AI","verdict":"worked","score":null,"score_total":null,"note":"The tool reconstructs the invoice hierarchy into nested JSON with invoice_metadata, advertiser, station, summary, and line_items objects rather than returning raw OCR.","artifact_count":5,"thumbnail":"https://d3epheqghktydj.cloudfront.net/research-media-invoice-schema-order-85baff3c493d.png","evidence_url":"https://aidemos.com/evidence/d73f718e-a9a9-4284-b33e-de2e4ed6da9b"},{"id":"a1af2980-0fa9-4aa3-910d-7dcdb0e75178","tool":"landing-ai","tool_name":"Landing AI","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the invoice hierarchy into invoice_metadata, advertiser, station, billing_address, remit_address, flight_dates, line_items, and summary objects rather than returning flat OCR text.","artifact_count":4,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/19c0891ec10d462fbb4ae3555f7ed5f3.mp4?v=1","evidence_url":"https://aidemos.com/evidence/a1af2980-0fa9-4aa3-910d-7dcdb0e75178"},{"id":"43e0f8e1-a013-4335-a8e9-0e66bcff72cd","tool":"llamaparse","tool_name":"LlamaParse","verdict":"worked","score":null,"score_total":null,"note":"The invoice output follows the supplied hierarchy closely, returning nested invoice_metadata, advertiser, station, line_items, and summary objects instead of a flat text dump.","artifact_count":3,"thumbnail":"https://d3epheqghktydj.cloudfront.net/research-media-llamaparse-invoice-metadata-af804b493598.png","evidence_url":"https://aidemos.com/evidence/43e0f8e1-a013-4335-a8e9-0e66bcff72cd"},{"id":"4a0ab0b3-2f6a-4dc0-8387-09bc3462ac42","tool":"nanonets","tool_name":"Nanonets","verdict":"worked","score":null,"score_total":null,"note":"Preserves the requested invoice hierarchy, populating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary as separate JSON objects rather than flattening the page.","artifact_count":3,"thumbnail":"https://d3epheqghktydj.cloudfront.net/research-media-docstrange-nanonets-invoice-output-9dc0f476da4c.json","evidence_url":"https://aidemos.com/evidence/4a0ab0b3-2f6a-4dc0-8387-09bc3462ac42"},{"id":"bac4e4b0-48cf-4fdb-8df4-8dac86413cab","tool":"reducto","tool_name":"Reducto","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the requested nested invoice JSON rather than flattening the document, populating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary sections.","artifact_count":3,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/1b328999a9744f8782faf8d8632db00c.mp4?v=1","evidence_url":"https://aidemos.com/evidence/bac4e4b0-48cf-4fdb-8df4-8dac86413cab"},{"id":"1aade406-f689-48ea-92b7-1b2089eae31b","tool":"retab","tool_name":"Retab","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the invoice schema into nested invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary sections rather than returning a flat document dump.","artifact_count":2,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/4819c75428154465a5eff0ce7f23f251.mp4?v=1","evidence_url":"https://aidemos.com/evidence/1aade406-f689-48ea-92b7-1b2089eae31b"}],"other_criteria":[{"id":"970f5805-6ece-482e-8607-5baa9895ea16","criterion":"extraction-accuracy","criterion_name":"Extraction Accuracy","rank_role":"decisive","verdict":"worked","score":null,"score_total":null,"note":"Captures the invoice header fields and financial totals exactly, including invoice_number 4064621-1 and the printed gross_total 29,750.00, agency_commission 4,462.50, and net_amount_due 25,287.50.","artifact_count":3,"evidence_url":"https://aidemos.com/evidence/970f5805-6ece-482e-8607-5baa9895ea16"},{"id":"bcc9f94f-bf0e-4b9c-b0e7-15f7884ef516","criterion":"semantic-field-enrichment","criterion_name":"Semantic Field Enrichment","rank_role":"decisive","verdict":"struggled","score":null,"score_total":null,"note":"Mis-reproduces the fixed-width day_of_week scheduling mask, with examples like MTWT- for source MTWT--- and F- - for source ----F--; the report says days_pattern is the more reliable field.","artifact_count":1,"evidence_url":"https://aidemos.com/evidence/bcc9f94f-bf0e-4b9c-b0e7-15f7884ef516"},{"id":"d025ae3c-59d0-423e-b723-7bfdbdfd3f34","criterion":"table-record-completeness","criterion_name":"Table & Record Completeness","rank_role":"decisive","verdict":"worked","score":null,"score_total":null,"note":"Extracts the line-item table without losing the row that crosses the page break; line 8 is returned in full with no duplication or data loss.","artifact_count":3,"evidence_url":"https://aidemos.com/evidence/d025ae3c-59d0-423e-b723-7bfdbdfd3f34"}],"appears_in":[{"page_type":"ranking","slug":"document-extraction","title":"Best AI Tools for Extracting Structured Data from Business Documents","url":"https://aidemos.com/best/document-extraction","binding":"run"},{"page_type":"tool","slug":"docsumo","title":null,"url":"https://aidemos.com/tools/docsumo","binding":"run"}],"same_scenario":[{"id":"bdb8a9b6-f2fe-4f93-a1ae-1f0261437067","tool":"datalab","tool_name":"Datalab","verdict":"worked","score":null,"score_total":null,"note":"The invoice workflow can emit nested schema-shaped JSON with separate invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary objects rather than flat OCR text."},{"id":"d73f718e-a9a9-4284-b33e-de2e4ed6da9b","tool":"extend-ai","tool_name":"Extend AI","verdict":"worked","score":null,"score_total":null,"note":"The tool reconstructs the invoice hierarchy into nested JSON with invoice_metadata, advertiser, station, summary, and line_items objects rather than returning raw OCR."},{"id":"a1af2980-0fa9-4aa3-910d-7dcdb0e75178","tool":"landing-ai","tool_name":"Landing AI","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the invoice hierarchy into invoice_metadata, advertiser, station, billing_address, remit_address, flight_dates, line_items, and summary objects rather than returning flat OCR text."},{"id":"43e0f8e1-a013-4335-a8e9-0e66bcff72cd","tool":"llamaparse","tool_name":"LlamaParse","verdict":"worked","score":null,"score_total":null,"note":"The invoice output follows the supplied hierarchy closely, returning nested invoice_metadata, advertiser, station, line_items, and summary objects instead of a flat text dump."},{"id":"4a0ab0b3-2f6a-4dc0-8387-09bc3462ac42","tool":"nanonets","tool_name":"Nanonets","verdict":"worked","score":null,"score_total":null,"note":"Preserves the requested invoice hierarchy, populating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary as separate JSON objects rather than flattening the page."},{"id":"bac4e4b0-48cf-4fdb-8df4-8dac86413cab","tool":"reducto","tool_name":"Reducto","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the requested nested invoice JSON rather than flattening the document, populating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary sections."},{"id":"1aade406-f689-48ea-92b7-1b2089eae31b","tool":"retab","tool_name":"Retab","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the invoice schema into nested invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary sections rather than returning a flat document dump."}]}