[{"data":1,"prerenderedAt":444},["ShallowReactive",2],{"repo-tree":3,"repo-\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Fknown-issues\u002Fdocling-table-reading-order\u002Freadme":283},[4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,69,72,75,78,81,84,86,88,90,93,96,99,102,105,108,111,114,117,120,123,125,127,129,131,133,135,138,141,143,146,149,152,155,158,161,164,167,169,172,175,178,180,183,186,189,192,195,198,201,203,206,209,212,215,218,221,224,227,230,233,236,239,242,245,248,251,254,257,260,263,266,269,272,275,278,281],{"path":5,"title":6},"\u002Fagents\u002Fbackend-code-style","Backend Conventions",{"path":8,"title":9},"\u002Fagents\u002Fdatabase","Database",{"path":11,"title":12},"\u002Fagents\u002Fportal-code-style","Portal Conventions",{"path":14,"title":15},"\u002Fagents\u002Ftranslation","Translation",{"path":17,"title":18},"\u002Fconventions\u002Fbackend-coding","Backend coding conventions",{"path":20,"title":21},"\u002Fconventions\u002Ffrontend-coding","Frontend coding conventions",{"path":23,"title":24},"\u002Fdevelopment-process","Development process",{"path":26,"title":27},"\u002Flearning-api-preview-hetzner-setup","Learning API Preview on Hetzner + Cloudflare",{"path":29,"title":30},"\u002Flearning-api-preview-vm-plan","Learning API Preview VM Plan",{"path":32,"title":33},"\u002Fmonorepo-structure","Monorepo structure",{"path":35,"title":36},"\u002Foperations","Operations — bugs and support",{"path":38,"title":39},"\u002Fpostmortems\u002F2026-03-16_onboarding-currency-regression","Onboarding Zod transform silently broken — web signups assigned wrong checkout currency",{"path":41,"title":42},"\u002Fpostmortems\u002Freadme","Postmortems",{"path":44,"title":45},"\u002Fpostmortems\u002F_template","TEMPLATE",{"path":47,"title":48},"\u002Fpostmortems\u002Fposthog-comparison","Postmortem practice — comparison with PostHog",{"path":50,"title":51},"\u002Fpreview-environment-plan","Preview Environment Plan",{"path":53,"title":54},"\u002Fprinciples","Engineering principles",{"path":56,"title":57},"\u002Fworking-with-ai","Working with AI",{"path":59,"title":60},"\u002F.claude\u002Fskills\u002Feval-playground\u002Fskill","Eval Playground — Co-development Skill",{"path":62,"title":63},"\u002F.claude\u002Fskills\u002Ffigma-diff-section\u002Fskill","Figma Diff Section Pipeline",{"path":65,"title":66},"\u002Fagents","AGENTS.md",{"path":68,"title":66},"\u002Fclaude",{"path":70,"title":71},"\u002Freadme","Studyflash",{"path":73,"title":74},"\u002Fapps\u002Fcore-api\u002Fagents","Core API (apps\u002Fcore-api)",{"path":76,"title":77},"\u002Fapps\u002Fcore-api\u002Freadme","README",{"path":79,"title":80},"\u002Fapps\u002Femail-previews\u002Fagents","Email Previews (apps\u002Femail-previews)",{"path":82,"title":83},"\u002Fapps\u002Flanding-page\u002Fagents","Landing Page (apps\u002Flanding-page)",{"path":85,"title":83},"\u002Fapps\u002Flanding-page\u002Fclaude",{"path":87,"title":66},"\u002Fapps\u002Flearning-api\u002Fagents",{"path":89,"title":77},"\u002Fapps\u002Flearning-api\u002Freadme",{"path":91,"title":92},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Feval_metrics_design","Surface-Specific Eval Metrics Design",{"path":94,"title":95},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Ftest_set","Quiz Eval Test Set",{"path":97,"title":98},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Ffrontend\u002Freadme","React + TypeScript + Vite",{"path":100,"title":101},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Fknown-issues\u002Fcontent-pillar-shallow-coverage\u002Freadme","Content pillar misses subtopics in dense documents",{"path":103,"title":104},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Fknown-issues\u002Fdocling-empty-section-headers\u002Freadme","Empty section headers dropped by docling chunker",{"path":106,"title":107},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Fknown-issues\u002Fdocling-table-reading-order\u002Freadme","Table\u002Fbox layout causes wrong reading order",{"path":109,"title":110},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Fmetrics\u002Freadme","Quiz eval metrics — canonical rubrics",{"path":112,"title":113},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Freports\u002F2026-04-12-quiz-summary-feedback-current-state","Quiz and Summary Feedback Current State",{"path":115,"title":116},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Freports\u002F2026-04-24-quiz-eval-metrics","Quiz Evaluation Metrics",{"path":118,"title":119},"\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Freports\u002F2026-05-01-quiz-eval-current-state","Quiz Eval Current State",{"path":121,"title":122},"\u002Fapps\u002Flearning-api\u002Fmonitoring\u002Freadme","Monitoring Stack",{"path":124,"title":77},"\u002Fapps\u002Flearning-api\u002Fshared\u002Freadme",{"path":126,"title":77},"\u002Fapps\u002Flearning-api\u002Fworkers\u002Flearning_agents\u002Fflashcard_agent\u002Freadme",{"path":128,"title":77},"\u002Fapps\u002Flearning-api\u002Fworkers\u002Flearning_agents\u002Fingestion_agent\u002Freadme",{"path":130,"title":77},"\u002Fapps\u002Flearning-api\u002Fworkers\u002Flearning_agents\u002Fquiz_agent\u002Freadme",{"path":132,"title":77},"\u002Fapps\u002Flearning-api\u002Fworkers\u002Flearning_agents\u002Fsummary_agent\u002Freadme",{"path":134,"title":77},"\u002Fapps\u002Flearning-api\u002Fworkers\u002Fparser\u002Freadme",{"path":136,"title":137},"\u002Fapps\u002Fmarketing-emails-preview\u002Fagents","Marketing Emails Preview (apps\u002Fmarketing-emails-preview)",{"path":139,"title":140},"\u002Fapps\u002Fmobile-app\u002Fagents","StudyFlash Mobile App - Claude Code Configuration",{"path":142,"title":140},"\u002Fapps\u002Fmobile-app\u002Fclaude",{"path":144,"title":145},"\u002Fapps\u002Fmountain-max\u002Fagents","Mountain Max (apps\u002Fmountain-max)",{"path":147,"title":148},"\u002Fapps\u002Fmountain-max\u002Fgame\u002Freadme","Mountain Max Game",{"path":150,"title":151},"\u002Fapps\u002Fportal\u002Fagents","Portal (apps\u002Fportal)",{"path":153,"title":154},"\u002Fapps\u002Fportal\u002Freadme","Nuxt Minimal Starter",{"path":156,"title":157},"\u002Fapps\u002Fportal\u002Fapp\u002Fcomposables\u002Ffiles\u002Freadme","File Upload Composables",{"path":159,"title":160},"\u002Fapps\u002Fportal\u002Fdocs\u002Flibrary-routing","Library Routing Documentation",{"path":162,"title":163},"\u002Fapps\u002Fsupabase\u002Fagents","Supabase (apps\u002Fsupabase)",{"path":165,"title":166},"\u002Fapps\u002Fwrapped\u002Fagents","Wrapped (apps\u002Fwrapped)",{"path":168,"title":98},"\u002Fapps\u002Fwrapped\u002Freadme",{"path":170,"title":171},"\u002Finfra\u002Freadme","infra\u002F",{"path":173,"title":174},"\u002Finfra\u002Fdns\u002Freadme","DNS Infrastructure",{"path":176,"title":177},"\u002Finfra\u002Fdokploy\u002Freadme","studyflash-dokploy",{"path":179,"title":77},"\u002Finfra\u002Fdokploy\u002Fsdk\u002Fnodejs\u002Freadme",{"path":181,"title":182},"\u002Finfra\u002Finfisical\u002Freadme","Infisical Infrastructure",{"path":184,"title":185},"\u002Finfra\u002Flearning-api\u002Freadme","Pulumi GCP TypeScript Template",{"path":187,"title":188},"\u002Finfra\u002Fopenreplay\u002Freadme","OpenReplay on Hetzner",{"path":190,"title":191},"\u002Finfra\u002Fscripts\u002Freadme","infra\u002Fscripts\u002F",{"path":193,"title":194},"\u002Finfra\u002Fturborepo-cache\u002Freadme","Turborepo Remote Cache Infrastructure",{"path":196,"title":197},"\u002Finternal\u002Fchatwoot\u002Freadme","Chatwoot Infrastructure",{"path":199,"title":200},"\u002Finternal\u002Fchatwoot\u002Fprovider\u002Freadme","studyflash-chatwoot-provider",{"path":202,"title":77},"\u002Finternal\u002Fchatwoot\u002Fprovider\u002Fsdk\u002Fnodejs\u002Freadme",{"path":204,"title":205},"\u002Finternal\u002Fdocs\u002Freadme","internal\u002Fdocs",{"path":207,"title":208},"\u002Finternal\u002Fsupport-bot\u002Fclaude","Support Bot (Maximilian)",{"path":210,"title":211},"\u002Finternal\u002Fsupport-bot\u002Freadme","Studyflash Customer Support Bot (Maximilian)",{"path":213,"title":214},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Faccount_issues","Account Issues",{"path":216,"title":217},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fbilling_invoice","Billing Invoice",{"path":219,"title":220},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fcontent_upload","Content Upload",{"path":222,"title":223},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fdata_loss","Data Loss",{"path":225,"title":226},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fflashcard_issues","Flashcard Issues",{"path":228,"title":229},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fgarbage","Garbage",{"path":231,"title":232},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fgeneral_how_to","General How To",{"path":234,"title":235},"\u002Finternal\u002Fsupport-bot\u002Fkb","Knowledge Base Index",{"path":237,"title":238},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Flanguage_issues","Language Issues",{"path":240,"title":241},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fmindmap_issues","Mindmap Issues",{"path":243,"title":244},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fmisunderstanding","Misunderstanding",{"path":246,"title":247},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fmock_exam_issues","Mock Exam Issues",{"path":249,"title":250},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fpodcast_issues","Podcast Issues",{"path":252,"title":253},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fquiz_issues","Quiz Issues",{"path":255,"title":256},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Frefund_request","Refund Request",{"path":258,"title":259},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fsubscription_cancellation","Subscription Cancellation",{"path":261,"title":262},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fsubscription_info","Subscription Info",{"path":264,"title":265},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fsummary_issues","Summary Issues",{"path":267,"title":268},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Ftechnical_errors","Technical Errors",{"path":270,"title":271},"\u002Finternal\u002Fsupport-bot\u002Fkb\u002Fvideo_issues","Video Issues",{"path":273,"title":274},"\u002Fpackages\u002Fcommon\u002Fdocs\u002Fearly-access-features","Declarative Early Access Features",{"path":276,"title":277},"\u002Fpackages\u002Fcommon\u002Fscripts\u002Freadme","Common Package Scripts",{"path":279,"title":280},"\u002Fpackages\u002Fdevtools\u002Ffigma-plugins\u002Freadme","Figma plugins",{"path":282,"title":77},"\u002Fpackages\u002Fpulumi-infisical\u002Freadme",{"id":284,"title":107,"body":285,"description":436,"extension":437,"lastReviewed":438,"meta":439,"navigation":440,"owner":438,"path":106,"seo":441,"status":438,"stem":442,"tags":438,"__hash__":443},"repo\u002Fapps\u002Flearning-api\u002Fevals-playground\u002Fknown-issues\u002Fdocling-table-reading-order\u002FREADME.md",{"type":286,"value":287,"toc":422},"minimark",[288,292,327,332,335,339,344,347,358,366,372,375,379,385,389,392,396,399,403],[289,290,107],"h1",{"id":291},"tablebox-layout-causes-wrong-reading-order",[293,294,295,299,300,303,304,311,314,315,318,319,322,323,326],"p",{},[296,297,298],"strong",{},"GitHub issue",": #1863\n",[296,301,302],{},"PDF",": ",[305,306,310],"a",{"href":307,"rel":308},"https:\u002F\u002Fhxueibngmyemxbjvqmph.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Feval-known-issues\u002Fdocling-table-reading-order\u002Funderstanding-llms.pdf",[309],"nofollow","understanding-llms.pdf",[296,312,313],{},"Status",": Open\n",[296,316,317],{},"Categories",": parsing, chunking, content-pillars\n",[296,320,321],{},"Deck name",": 05-how-llms-work\n",[296,324,325],{},"Document type",": Academic paper (arXiv preprint, Elsevier format)",[328,329,331],"h2",{"id":330},"problem","Problem",[293,333,334],{},"When a PDF has an ARTICLE INFO \u002F ABSTRACT side-by-side table on page 1, docling reads the left column (ARTICLE INFO) first, jumps down past the table to the Introduction, then comes back up to read the right column (Abstract). This produces chunks where the Introduction appears before the Abstract.",[328,336,338],{"id":337},"evidence","Evidence",[340,341,343],"h3",{"id":342},"pdf-visual","PDF visual",[293,345,346],{},"Page 1 is single-column with a two-cell table near the top:",[348,349,354],"pre",{"className":350,"code":352,"language":353},[351],"language-text","┌─────────────────────────────────────────┐\n│  Title + Authors                        │\n├───────────────────┬─────────────────────┤\n│  ARTICLE INFO     │  ABSTRACT           │\n│  Keywords: LLMs   │  The introduction   │\n│  Training         │  of ChatGPT has...  │\n│  Inference        │                     │\n│  Survey           │                     │\n├───────────────────┴─────────────────────┤\n│  1. Introduction                        │\n│  Language modeling (LM) is a...         │\n└─────────────────────────────────────────┘\n","text",[355,356,352],"code",{"__ignoreMap":357},"",[340,359,361,362,365],{"id":360},"docling-json-reading-order-texts-with-bbox-y-coordinates","Docling JSON reading order (",[355,363,364],{},"texts[]"," with bbox y-coordinates)",[348,367,370],{"className":368,"code":369,"language":353},[351],"[12] p.1  y=500  section_header  \"ARTICLE INFO\"\n[13] p.1  y=480  text            \"Keywords : Large Language Models Training Inference Survey\"\n[14] p.1  y=348  section_header  \"1. Introduction\"          ← jumps below the table\n[15] p.1  y=330  text            \"Language modeling (LM) is a fundamental...\"\n[16] p.1  y=175  text            \"The Transformer architecture is exceptionally...\"\n[17] p.1  y=86   footnote        \"Corresponding author ORCID(s):\"\n[18] p.1  y=499  section_header  \"ABSTRACT\"                 ← jumps back UP to table\n[19] p.1  y=480  text            \"The introduction of ChatGPT has led to...\"\n",[355,371,369],{"__ignoreMap":357},[293,373,374],{},"Items 14-17 (Introduction) appear before item 18 (ABSTRACT) even though the Abstract is physically above the Introduction on the page.",[340,376,378],{"id":377},"docling-chunks-output","Docling chunks output",[348,380,383],{"className":381,"code":382,"language":353},[351],"chunk 0:\n  headings: ['Understanding LLMs: A Comprehensive Overview from Training to Inference']\n  text: 'Yiheng Liu a , Hao He a , Tianle Han a ...'  (title + authors)\n\nchunk 1:\n  headings: ['ARTICLE INFO']\n  text: 'Keywords : Large Language Models Training Inference Survey'\n\nchunk 2:\n  headings: ['1. Introduction']\n  text: 'Language modeling (LM) is a fundamental approach...'  ← before Abstract\n\nchunk 3:\n  headings: ['ABSTRACT']\n  text: 'The introduction of ChatGPT has led to a significant increase...'  ← after Introduction\n",[355,384,382],{"__ignoreMap":357},[340,386,388],{"id":387},"markdown-output","Markdown output",[293,390,391],{},"Same misordering — Introduction at char ~800, Abstract at char ~3224.",[328,393,395],{"id":394},"root-cause","Root cause",[293,397,398],{},"Docling's layout analysis reads the ARTICLE INFO \u002F ABSTRACT table as two separate columns rather than a single table row. It processes the left column, exits the table downward into the Introduction section, then returns to read the right column.",[328,400,402],{"id":401},"impact","Impact",[404,405,406,410,413,416,419],"ul",{},[407,408,409],"li",{},"Content pillars may group Abstract text with Introduction content",[407,411,412],{},"Topic structure reflects wrong document order",[407,414,415],{},"Summaries may conflate Introduction and Abstract",[407,417,418],{},"Common in Elsevier preprint format, arXiv papers with this layout",[407,420,421],{},"Affects any PDF with side-by-side sections in a table\u002Fbox",{"title":357,"searchDepth":423,"depth":423,"links":424},2,[425,426,434,435],{"id":330,"depth":423,"text":331},{"id":337,"depth":423,"text":338,"children":427},[428,430,432,433],{"id":342,"depth":429,"text":343},3,{"id":360,"depth":429,"text":431},"Docling JSON reading order (texts[] with bbox y-coordinates)",{"id":377,"depth":429,"text":378},{"id":387,"depth":429,"text":388},{"id":394,"depth":423,"text":395},{"id":401,"depth":423,"text":402},"GitHub issue: #1863\nPDF: understanding-llms.pdfStatus: Open\nCategories: parsing, chunking, content-pillars\nDeck name: 05-how-llms-work\nDocument type: Academic paper (arXiv preprint, Elsevier format)","md",null,{},true,{"title":107,"description":436},"apps\u002Flearning-api\u002Fevals-playground\u002Fknown-issues\u002Fdocling-table-reading-order\u002FREADME","E3vN2NgF4c-yRajIIrZjh42lw_hWMszcujN2ncrJUPI",1779007962950]