Skip to content

Index table structure and layout-ordered text from xberg extraction#551

Merged
tobocop2 merged 1 commit into
feat/kreuzberg-5from
feat/table-layout-ingest
Jul 18, 2026
Merged

Index table structure and layout-ordered text from xberg extraction#551
tobocop2 merged 1 commit into
feat/kreuzberg-5from
feat/table-layout-ingest

Conversation

@tobocop2

Copy link
Copy Markdown
Owner

Problem

Tables in PDFs are indexed only as flattened text, so row and column meaning is lost to both BM25 and the embedder, and multi-column pages with running headers pollute chunks with interleaved text and repeated boilerplate.

Solution

With table_extraction on, xberg's table structure recognition runs during extraction and each table is indexed as its own chunk carrying the markdown serialization (new chunk type table, covered by the raw search scope), with long tables split header-repeating. With layout_detection on, page text is ordered by detected reading order and the header/footer margin bands are stripped. Both flags are off by default and marked reindex-required; the xberg pin moves to 1.0.0rc29.

Tables in PDFs were only ever indexed as flattened text, so row/column
meaning was lost to both BM25 and the embedder. With table_extraction on,
xberg's table structure recognition runs during extraction and each table
is indexed as its own chunk carrying the markdown serialization (new
chunk_type 'table', covered by the 'raw' search scope), with long tables
split header-repeating. With layout_detection on, page text is ordered by
detected reading order and the running header/footer bands are stripped.
Both flags are off by default and marked reindex-required; the xberg pin
moves to 1.0.0rc29.

bb-9t16 bb-orox
@tobocop2
tobocop2 merged commit b4d0d21 into feat/kreuzberg-5 Jul 18, 2026
7 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant