{"observation":{"id":"76a18022-79e8-45a6-b3c9-bacd1c8b7330","tool":"landing-ai","tool_name":"Landing AI","criterion":"table-and-record-completeness","criterion_name":"Table & Record Completeness","criterion_definition":"Are all tabular rows (transactions, line items) extracted without merging, duplication, omission, or phantom records?","criterion_evidence_type":"transformation","criterion_rank_role":"decisive","criterion_rank_role_reason":"For document data extraction, missing, merged, duplicated, or phantom rows directly corrupt the structured dataset and break downstream querying. (3 of 3 judges)","scenario":"bank-statement-pdf","scenario_name":"Bank Statement PDF","group_tag":"financial-document-extraction","scenario_description":"A 4-page bank statement PDF with 51 transactions, balances, rewards, and disclaimer text, used to test schema-driven extraction of dense financial tables and multi-page continuity.","modality":"pdf","input_text":null,"input_artifact_refs":[{"alt":null,"url":"https://d3epheqghktydj.cloudfront.net/extract-and-query-structured-data-from-d-bank-statement-pdf-25ec532be6e1.pdf","role":"input","filename":"Bank Statement PDF.pdf"}],"stresses":["Table extraction across 50+ transaction rows","Multi-page continuity with BALANCE FORWARD bridges","Structured metadata vs. free-text transaction descriptions","Numerical accuracy for balances, deposits, withdrawals, and summaries","Nested schema population for account, branch, balances, rewards, and disclaimers"],"verdict":"worked","score":null,"score_total":null,"note":"Preserves the full transaction table as 51 separate statement records, without merging rows or dropping entries.","evidence_state":"verified","source":null,"artifacts":[{"url":"https://d3epheqghktydj.cloudfront.net/research-media-landingai-bank-statement-output-d3ff94f60bcb.json","role":"output","alt":null},{"url":"https://d3epheqghktydj.cloudfront.net/research-media-landing-ai-bank-statement-output-cd56ca6b04d7.json","role":"output","alt":null},{"url":"https://d3epheqghktydj.cloudfront.net/research-media-bank-statement-18-jun-transactions-e1118700a99c.png","role":"input","alt":null},{"url":"https://d3epheqghktydj.cloudfront.net/research-media-landing-ai-bank-statement-18-jun-extract-321aa2936cc6.png","role":"output","alt":null},{"url":"https://d3epheqghktydj.cloudfront.net/research-media-landingai-output-1-d3ff94f60bcb.json","role":"output","alt":null}],"run_id":"ec4d736d-95f9-4c88-884c-e280435f7b7b","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://d3epheqghktydj.cloudfront.net/extract-and-query-structured-data-from-d-bank-statement-pdf-25ec532be6e1.pdf","filename":"Bank Statement PDF.pdf","alt":"Bank Statement PDF","role":"input"}],"modality":"pdf","stresses":["Table extraction across 50+ transaction rows","Multi-page continuity with BALANCE FORWARD bridges","Structured metadata vs. free-text transaction descriptions","Numerical accuracy for balances, deposits, withdrawals, and summaries","Nested schema population for account, branch, balances, rewards, and disclaimers"]},"tool_page_slug":"landing-ai","tool_url":"https://aidemos.com/tools/landing-ai","permalink":"https://aidemos.com/evidence/76a18022-79e8-45a6-b3c9-bacd1c8b7330","api_url":"https://ai.aidemos.com/v1/observations/76a18022-79e8-45a6-b3c9-bacd1c8b7330"},"peers":[{"id":"67ba5c20-1ac1-4cad-9a54-eae062a19854","tool":"datalab","tool_name":"Datalab","verdict":"failed","score":null,"score_total":null,"note":"Can attach a transaction to the wrong date when rows are merged, with an 18 Jun 19 withdrawal appearing under a 19 Jun 19 record in the extracted output.","artifact_count":3,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/80135a758c5a4d2aa2187e8af3f050e8.png?v=1","evidence_url":"https://aidemos.com/evidence/67ba5c20-1ac1-4cad-9a54-eae062a19854"},{"id":"3b66a1fa-5d29-4130-8e37-0c4cdc033160","tool":"extend-ai","tool_name":"Extend AI","verdict":"worked","score":null,"score_total":null,"note":"The extractor keeps transaction rows as separate records, and the report says it captured all 51 transactions without merging adjacent rows.","artifact_count":1,"thumbnail":"https://d3epheqghktydj.cloudfront.net/research-media-extend-ai-extracted-transaction-item-4618ec1646be.png","evidence_url":"https://aidemos.com/evidence/3b66a1fa-5d29-4130-8e37-0c4cdc033160"},{"id":"c329f9a0-4d9f-4f20-8307-5ac615a12391","tool":"llamaparse","tool_name":"LlamaParse","verdict":"worked","score":null,"score_total":null,"note":"Extracts the bank statement's rewards section as structured repeated records, including accountNumber, titleDate, scheme, openingBalance, pointsAccrued, pointsRedeemed, adjustments, and closingBalance.","artifact_count":1,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/85953a3b02bd40a5a4ba50666d72878a.mp4?v=1","evidence_url":"https://aidemos.com/evidence/c329f9a0-4d9f-4f20-8307-5ac615a12391"},{"id":"4ecae670-4417-4bc0-98d5-6f6fe27654e0","tool":"nanonets","tool_name":"Nanonets","verdict":"failed","score":null,"score_total":null,"note":"It undercounts the transaction table, extracting 47 transactions when the statement actually contains 51, so 4 records are missing.","artifact_count":2,"thumbnail":"https://d3epheqghktydj.cloudfront.net/research-media-docstrange-nanonets-transaction-count-7b5312c3e84a.png","evidence_url":"https://aidemos.com/evidence/4ecae670-4417-4bc0-98d5-6f6fe27654e0"},{"id":"d7084667-c138-440e-ae8a-85055f890e01","tool":"reducto","tool_name":"Reducto","verdict":"failed","score":null,"score_total":null,"note":"Does not preserve the repeating transaction table faithfully, returning 53 transaction records for a statement that contains 51 transactions.","artifact_count":3,"thumbnail":"https://d3epheqghktydj.cloudfront.net/research-media-reducto-transactions-5f1507b139e2.png","evidence_url":"https://aidemos.com/evidence/d7084667-c138-440e-ae8a-85055f890e01"},{"id":"a0e9e32e-85ea-493d-959a-ab26271ebc7f","tool":"retab","tool_name":"Retab","verdict":"mixed","score":null,"score_total":null,"note":"Overcounts the transaction table summary: total_transactions is 43, while the report says the expected count is 40 after excluding Balance Forward, tax, and charge entries.","artifact_count":2,"thumbnail":"https://d3epheqghktydj.cloudfront.net/research-media-retab-bank-statement-total-transactions-c378712469f2.png","evidence_url":"https://aidemos.com/evidence/a0e9e32e-85ea-493d-959a-ab26271ebc7f"},{"id":"1355f0ad-f96e-476c-9a0d-ab7e11352c1e","tool":"unstract","tool_name":"Unstract","verdict":"worked","score":null,"score_total":null,"note":"Keeps the transaction table intact across all four pages, with the full 51-row record set present and no merged or dropped rows.","artifact_count":2,"thumbnail":"https://d3epheqghktydj.cloudfront.net/unstract-unstract-bank-statement-output-f0bd422ffa9e.json","evidence_url":"https://aidemos.com/evidence/1355f0ad-f96e-476c-9a0d-ab7e11352c1e"}],"other_criteria":[{"id":"ad17e2c7-e810-4619-96c5-09931380ff90","criterion":"extraction-accuracy","criterion_name":"Extraction Accuracy","rank_role":"decisive","verdict":"worked","score":null,"score_total":null,"note":"Extracts the statement’s top-level values with the correct content and precision, including bank_name \"Standard Chartered\", statement_date \"16 Jul 2019\", currency \"INR\", account number \"42710540422\", opening balance 114453.65, and closing balance 116149.46.","artifact_count":3,"evidence_url":"https://aidemos.com/evidence/ad17e2c7-e810-4619-96c5-09931380ff90"},{"id":"91f210ef-e7ef-4d23-a3c8-badb7719e663","criterion":"schema-adherence","criterion_name":"Schema Adherence","rank_role":"decisive","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the bank statement into the requested nested JSON hierarchy, with distinct statement.metadata, account_holder.address, account, branch, statement_period, and balances objects rather than flat OCR text.","artifact_count":3,"evidence_url":"https://aidemos.com/evidence/91f210ef-e7ef-4d23-a3c8-badb7719e663"},{"id":"9f99b1ec-e13d-49eb-a3c3-0eb907f19ffb","criterion":"semantic-field-enrichment","criterion_name":"Semantic Field Enrichment","rank_role":"decisive","verdict":"failed","score":null,"score_total":null,"note":"Does not preserve source-derived transaction identifiers; it normalizes them into sequential transaction_id values such as \"2\", \"3\", and \"4\", so the embedded IDs in the descriptions cannot be traced back directly.","artifact_count":2,"evidence_url":"https://aidemos.com/evidence/9f99b1ec-e13d-49eb-a3c3-0eb907f19ffb"},{"id":"a2a1f6f5-e278-415c-afcd-a43a2ec3e91b","criterion":"semantic-field-enrichment","criterion_name":"Semantic Field Enrichment","rank_role":"decisive","verdict":"worked","score":null,"score_total":null,"note":"Adds meaningful transaction_type labels to extracted rows, classifying the sample 18 Jun records as Withdrawal, Withdrawal, and Deposit instead of leaving the field as raw OCR text.","artifact_count":1,"evidence_url":"https://aidemos.com/evidence/a2a1f6f5-e278-415c-afcd-a43a2ec3e91b"}],"appears_in":[{"page_type":"ranking","slug":"document-extraction","title":"Best AI Tools for Extracting Structured Data from PDFs and Business Documents","url":"https://aidemos.com/best/document-extraction","binding":"run"},{"page_type":"tool","slug":"unstract","title":null,"url":"https://aidemos.com/tools/unstract","binding":"run"}],"same_scenario":[{"id":"67ba5c20-1ac1-4cad-9a54-eae062a19854","tool":"datalab","tool_name":"Datalab","verdict":"failed","score":null,"score_total":null,"note":"Can attach a transaction to the wrong date when rows are merged, with an 18 Jun 19 withdrawal appearing under a 19 Jun 19 record in the extracted output."},{"id":"3b66a1fa-5d29-4130-8e37-0c4cdc033160","tool":"extend-ai","tool_name":"Extend AI","verdict":"worked","score":null,"score_total":null,"note":"The extractor keeps transaction rows as separate records, and the report says it captured all 51 transactions without merging adjacent rows."},{"id":"c329f9a0-4d9f-4f20-8307-5ac615a12391","tool":"llamaparse","tool_name":"LlamaParse","verdict":"worked","score":null,"score_total":null,"note":"Extracts the bank statement's rewards section as structured repeated records, including accountNumber, titleDate, scheme, openingBalance, pointsAccrued, pointsRedeemed, adjustments, and closingBalance."},{"id":"4ecae670-4417-4bc0-98d5-6f6fe27654e0","tool":"nanonets","tool_name":"Nanonets","verdict":"failed","score":null,"score_total":null,"note":"It undercounts the transaction table, extracting 47 transactions when the statement actually contains 51, so 4 records are missing."},{"id":"d7084667-c138-440e-ae8a-85055f890e01","tool":"reducto","tool_name":"Reducto","verdict":"failed","score":null,"score_total":null,"note":"Does not preserve the repeating transaction table faithfully, returning 53 transaction records for a statement that contains 51 transactions."},{"id":"a0e9e32e-85ea-493d-959a-ab26271ebc7f","tool":"retab","tool_name":"Retab","verdict":"mixed","score":null,"score_total":null,"note":"Overcounts the transaction table summary: total_transactions is 43, while the report says the expected count is 40 after excluding Balance Forward, tax, and charge entries."},{"id":"1355f0ad-f96e-476c-9a0d-ab7e11352c1e","tool":"unstract","tool_name":"Unstract","verdict":"worked","score":null,"score_total":null,"note":"Keeps the transaction table intact across all four pages, with the full 51-row record set present and no merged or dropped rows."}]}