Skip to content
Agentmart
Submit a tool
This entry duplicates xberg-extracting-tables, which is the one we list in search.

xberg-extracting-tables

Use when extracting tabular data from PDFs, spreadsheets, or images.

Skill by xberg-io

IndexedMIT★ 9,441
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/xberg-io-xberg-extracting-tables-e6bd7d

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use when extracting tabular data from PDFs, spreadsheets, or images. Covers layout-aware table detection, table model selection, output formats (markdown / JSON cells), and known limits.

Use cases: documents, data

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions: not checked yet.

What's inside

Skill name
xberg-extracting-tables
Description
Use when extracting tabular data from PDFs, spreadsheets, or images. Covers layout-aware table detection, table model selection, output formats (markdown / JSON cells), and known limits.
License
MIT
Instructions
152 lines in SKILL.md · view on GitHub

Files (10)

  • SKILL.md
  • index.md
  • advanced-features.md · references/
  • cli-reference.md · references/
  • configuration.md · references/
  • nodejs-api.md · references/
  • other-bindings.md · references/
  • python-api.md · references/
  • rust-api.md · references/
  • supported-formats.md · references/

SKILL.md (first lines)

<!--
AI-RULEZ :: GENERATED FILE — DO NOT EDIT
Content-Hash: blake3:80d26904ff70da39df4ee2b35bcfc06a186b30c0d2566cf4b60832cd42e475ef
Source-Hash: blake3:934f7e3903a85762c6a94f533fc47d534e94d3274b6a2cd147fa8bda13a6b03a
Schema-Version: v1
-->

# Extracting tables

Use this when the user wants structured tabular data — financial
statements, scientific tables, invoices, spreadsheet-style PDFs. Xberg
detects tables via a layout model (RT-DETR v2) and reconstructs cell
structure with a configurable table model.

## Basic usage

```bash
# Markdown tables embedded in the content stream
xberg extract report.pdf --layout --content-format markdown

# Structured JSON output, tables appear under result.tables
xberg extract report.pdf --layout --format json
```

`--layout` turns on layout-aware extraction; without it, tables fall back
to plain text reflow and you lose cell boundaries.

## Output shapes

Two surfaces, picked via `--format` (CLI shape) and `--content-format`
(content rendering):

- **Markdown tables in `content`** — `--content-format markdown`. Tables
  appear inline as `| col | col |` blocks. Good for LLM ingestion.
- **Structured `tables` array** — `--format json`. Each entry has
  `cells[][]` (rows × cols), `markdown` (pre-rendered), `page_number`,
  `bounding_box`. Use this when downstream code needs exact cell access.
  (`bounding_box` is omitted when no position data is available.)

Both are populated at once when `--layout` is on. The `tables` array is
always structured; the `content` stream switches representation.

```bash
xberg extract financials.pdf --layout --format json \
  | jq '.result.tables[] | {page: .page_number, rows: (.cells | length)}'
```

## Table models

`--layout-table-model` picks the reconstruction backend:

| Model              | Best for                                              | Notes                                       |
| ------------------ | ----------------------------------------------------- | ------------------------------------------- |
| `tatr`             | dense complex tables (academic, financial)            | **Default.** Heaviest, highest accuracy.    |
| `slanet_auto`      | dispatches per-table to wired/wireless                | Good when table styles are mixed.           |
| `slanet_wired`     | tables with visible borders                           | Faster than tatr.                           |
| `slanet_wireless`  | tables without borders (whitespace-separated)         | For invoices, simple grids.                 |
| `slanet_plus`      | hybrid wired / wireless                               | Lighter than `slanet_auto`.                 |
| `disabled`         | layout detection only, no table structure             | Use to skip table model cost.               |

```bash
xberg extract bank-statement.pdf \
  --layout --layout-table-model tatr --content-format markdown
```

Drop `--layout-confidence` when the layout model misses tables (default
threshold ~0.5):

```bash
xberg extract noisy-scan.pdf --layout --layout-confidence 0.3
```

## Spreadsheets

`.xlsx`, `.ods`, `.csv`, `.tsv` are extracted by dedicated parsers — no
layout model needed. Each sheet becomes a markdown table (or structured
table) automatically:

```bash
xberg extract workbook.xlsx --content-format markdown
xberg extract data.csv --format json
```

Pass `--no-cache=true` only when iterating on the same file with different
configs.

## Config file alternative

```toml
# `output_format` in config files equals `--content-format` on the CLI.
output_format = "markdown"

[layout]
confidence_threshold = 0.5
table_model = "tatr"
```

Then:

```bash
xberg extract report.pdf --format json
```

## Programmatic access

From Python, structured tables live on the document in the result envelope
(`result.results[0].tables`):

```python
from xberg import ExtractInput, extract, ExtractionConfig, LayoutDetectionConfig

config = ExtractionConfig(
    layout=LayoutDetectionConfig(table_model="tatr"),
    output_format="markdown",
)
result = await extract(ExtractInput(uri="report.pdf"), config)
for table in result.results[0].tables:
    print(table.markdown)        # rendered markdown
    print(table.cells[0][0])     # cell access

From xberg-io/xberg, MIT.

More from xberg-io/xberg

Signals

Stars
9,441
Forks
600
Open issues
7
Last commit (this folder)
Oct 23, 2026 (5 days ago)
Last release
Oct 13, 2026 (15 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Same skill elsewhere

Copies of this SKILL.md published by others; search shows only one of them.

More from xberg-io

Cite this page

xberg-extracting-tables skill. Agent Mart. https://agentmart.dev/skills/xberg-io-xberg-extracting-tables-e6bd7d (last updated 2026-10-24)