@xberg-io/opencode-xberg 1.3.7 → 1.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/ai-rulez-bundle.json +52 -0
- package/.opencode/ai-rulez-content.js +167 -0
- package/.opencode/commands/xberg-extract.md +14 -0
- package/.opencode/commands/xberg-ocr.md +14 -0
- package/.opencode/plugins/xberg.js +75 -62
- package/.opencode/skills/xberg/SKILL.md +422 -0
- package/.opencode/skills/xberg/index.md +10 -0
- package/.opencode/skills/xberg/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg/references/configuration.md +587 -0
- package/.opencode/skills/xberg/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg/references/python-api.md +657 -0
- package/.opencode/skills/xberg/references/rust-api.md +412 -0
- package/.opencode/skills/xberg/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-batch-extraction/SKILL.md +170 -0
- package/.opencode/skills/xberg-batch-extraction/index.md +10 -0
- package/.opencode/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-batch-extraction/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-batch-extraction/references/configuration.md +587 -0
- package/.opencode/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-batch-extraction/references/python-api.md +657 -0
- package/.opencode/skills/xberg-batch-extraction/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-chunking/SKILL.md +163 -0
- package/.opencode/skills/xberg-chunking/index.md +10 -0
- package/.opencode/skills/xberg-chunking/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-chunking/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-chunking/references/configuration.md +587 -0
- package/.opencode/skills/xberg-chunking/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-chunking/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-chunking/references/python-api.md +657 -0
- package/.opencode/skills/xberg-chunking/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-chunking/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-extracting-keywords/SKILL.md +170 -0
- package/.opencode/skills/xberg-extracting-keywords/index.md +10 -0
- package/.opencode/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-keywords/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-extracting-keywords/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-keywords/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-extracting-tables/SKILL.md +155 -0
- package/.opencode/skills/xberg-extracting-tables/index.md +10 -0
- package/.opencode/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-tables/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-extracting-tables/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-tables/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-tables/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-extracting-with-ocr/SKILL.md +129 -0
- package/.opencode/skills/xberg-extracting-with-ocr/index.md +10 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
- package/.opencode/skills/xberg-picking-a-format/SKILL.md +104 -0
- package/.opencode/skills/xberg-picking-a-format/index.md +10 -0
- package/.opencode/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
- package/.opencode/skills/xberg-picking-a-format/references/cli-reference.md +462 -0
- package/.opencode/skills/xberg-picking-a-format/references/configuration.md +587 -0
- package/.opencode/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
- package/.opencode/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
- package/.opencode/skills/xberg-picking-a-format/references/python-api.md +657 -0
- package/.opencode/skills/xberg-picking-a-format/references/rust-api.md +412 -0
- package/.opencode/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
- package/.pi/prompts/xberg-extract.md +14 -0
- package/.pi/prompts/xberg-ocr.md +14 -0
- package/.pi/skills/xberg/SKILL.md +422 -0
- package/.pi/skills/xberg/index.md +10 -0
- package/.pi/skills/xberg/references/advanced-features.md +628 -0
- package/.pi/skills/xberg/references/cli-reference.md +462 -0
- package/.pi/skills/xberg/references/configuration.md +587 -0
- package/.pi/skills/xberg/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg/references/other-bindings.md +345 -0
- package/.pi/skills/xberg/references/python-api.md +657 -0
- package/.pi/skills/xberg/references/rust-api.md +412 -0
- package/.pi/skills/xberg/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-batch-extraction/SKILL.md +170 -0
- package/.pi/skills/xberg-batch-extraction/index.md +10 -0
- package/.pi/skills/xberg-batch-extraction/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-batch-extraction/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-batch-extraction/references/configuration.md +587 -0
- package/.pi/skills/xberg-batch-extraction/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-batch-extraction/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-batch-extraction/references/python-api.md +657 -0
- package/.pi/skills/xberg-batch-extraction/references/rust-api.md +412 -0
- package/.pi/skills/xberg-batch-extraction/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-chunking/SKILL.md +163 -0
- package/.pi/skills/xberg-chunking/index.md +10 -0
- package/.pi/skills/xberg-chunking/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-chunking/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-chunking/references/configuration.md +587 -0
- package/.pi/skills/xberg-chunking/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-chunking/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-chunking/references/python-api.md +657 -0
- package/.pi/skills/xberg-chunking/references/rust-api.md +412 -0
- package/.pi/skills/xberg-chunking/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-extracting-keywords/SKILL.md +170 -0
- package/.pi/skills/xberg-extracting-keywords/index.md +10 -0
- package/.pi/skills/xberg-extracting-keywords/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-keywords/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-extracting-keywords/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-keywords/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-keywords/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-keywords/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-keywords/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-keywords/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-extracting-tables/SKILL.md +155 -0
- package/.pi/skills/xberg-extracting-tables/index.md +10 -0
- package/.pi/skills/xberg-extracting-tables/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-tables/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-extracting-tables/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-tables/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-tables/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-tables/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-tables/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-tables/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-extracting-with-ocr/SKILL.md +129 -0
- package/.pi/skills/xberg-extracting-with-ocr/index.md +10 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/configuration.md +587 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/python-api.md +657 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/rust-api.md +412 -0
- package/.pi/skills/xberg-extracting-with-ocr/references/supported-formats.md +252 -0
- package/.pi/skills/xberg-picking-a-format/SKILL.md +104 -0
- package/.pi/skills/xberg-picking-a-format/index.md +10 -0
- package/.pi/skills/xberg-picking-a-format/references/advanced-features.md +628 -0
- package/.pi/skills/xberg-picking-a-format/references/cli-reference.md +462 -0
- package/.pi/skills/xberg-picking-a-format/references/configuration.md +587 -0
- package/.pi/skills/xberg-picking-a-format/references/nodejs-api.md +485 -0
- package/.pi/skills/xberg-picking-a-format/references/other-bindings.md +345 -0
- package/.pi/skills/xberg-picking-a-format/references/python-api.md +657 -0
- package/.pi/skills/xberg-picking-a-format/references/rust-api.md +412 -0
- package/.pi/skills/xberg-picking-a-format/references/supported-formats.md +252 -0
- package/README.md +112 -6
- package/package.json +184 -16
- package/scripts/mcp-launch.sh +189 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Use when extracting from many files at once with shared config, bounded parallelism, per-file overrides, and error recovery. Covers the `batch` command, `--file-configs`, `--max-concurrent`, and output layout.
|
|
3
|
+
name: xberg-batch-extraction
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!--
|
|
7
|
+
AI-RULEZ :: GENERATED FILE — DO NOT EDIT
|
|
8
|
+
Content-Hash: blake3:324433f2b10c7c9cdc1c06b98c1e427c8cb0ca9ccf034d336e28d49706add520
|
|
9
|
+
Source-Hash: blake3:662aa704cf97ad20f02258c9dcd1c73822213a426e27ec7ebc292d3f599fb7c2
|
|
10
|
+
Schema-Version: v1
|
|
11
|
+
-->
|
|
12
|
+
|
|
13
|
+
# Batch extraction
|
|
14
|
+
|
|
15
|
+
Use this when processing a directory or glob of documents in one pass.
|
|
16
|
+
`xberg batch` shares one extraction config across every file, runs
|
|
17
|
+
extractions concurrently, and returns a JSON envelope — failures on
|
|
18
|
+
individual files do not abort the run.
|
|
19
|
+
|
|
20
|
+
## Basic usage
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Glob expands to many paths; results come back in a JSON envelope (default)
|
|
24
|
+
xberg batch *.pdf
|
|
25
|
+
|
|
26
|
+
# Mixed formats, markdown content for LLM ingestion
|
|
27
|
+
xberg batch docs/*.docx --content-format markdown
|
|
28
|
+
|
|
29
|
+
# Recurse with the shell, then extract
|
|
30
|
+
xberg batch $(find ./corpus -name '*.pdf')
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`batch` defaults to `--format json` (vs `--format text` for single
|
|
34
|
+
`extract`). The envelope contains `results`, `total_ms`, `per_file_ms` and, when failures
|
|
35
|
+
occur, `errors`. Each `results` entry is a full extracted document. One input may produce
|
|
36
|
+
multiple documents, so do not pair results with inputs by position. `per_file_ms` is
|
|
37
|
+
aligned with inputs; inspect `errors` for per-input failures.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
xberg batch reports/*.pdf \
|
|
41
|
+
| jq '.results[] | {chars: (.content | length), mime: .mime_type}'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Parallelism
|
|
45
|
+
|
|
46
|
+
`--max-concurrent` caps how many files extract at once. When omitted, the scheduler derives document concurrency from the total thread budget. Lower it on memory-constrained hosts or when OCR/ML
|
|
47
|
+
models are active, since each in-flight extraction holds its own buffers.
|
|
48
|
+
Layout-heavy batches are further limited (1 concurrent extraction for
|
|
49
|
+
all-PDF-layout batches, 2 for mixed layout):
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Cap at 4 concurrent extractions
|
|
53
|
+
xberg batch scans/*.pdf --ocr true --max-concurrent 4
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`--max-threads` additionally caps *total* internal threads (Rayon, ONNX
|
|
57
|
+
intra-op, the batch semaphore) for tightly constrained environments:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
xberg batch *.pdf --max-concurrent 2 --max-threads 4
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Per-file config overrides
|
|
64
|
+
|
|
65
|
+
A single shared config does not always fit. `--file-configs` points at a
|
|
66
|
+
JSON file mapping each path to its own override object, merged on top of
|
|
67
|
+
the shared config for that file only:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"scan.pdf": { "force_ocr": true },
|
|
72
|
+
"report.pdf": { "output_format": "markdown" },
|
|
73
|
+
"data.xlsx": { "output_format": "json" }
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
xberg batch scan.pdf report.pdf data.xlsx --file-configs overrides.json
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Keys are file paths (matching the paths passed on the command line);
|
|
82
|
+
values are per-file extraction config objects in snake_case, the same
|
|
83
|
+
shape as a config file.
|
|
84
|
+
|
|
85
|
+
## Output layout
|
|
86
|
+
|
|
87
|
+
For text/toon output with image extraction, `--output-dir` controls where
|
|
88
|
+
referenced image files (e.g. `image_0.png`) are written; the directory
|
|
89
|
+
must already exist. JSON output embeds image bytes inline and ignores
|
|
90
|
+
`--output-dir`.
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
mkdir -p out/images
|
|
94
|
+
xberg batch slides/*.pptx --extract-images true --output-dir out/images --format text
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Error recovery
|
|
98
|
+
|
|
99
|
+
Batch extraction is fault-tolerant per file: one unreadable or corrupt
|
|
100
|
+
document does not stop the rest. Inspect results for partial content and
|
|
101
|
+
surfaced errors rather than relying on the process exit code alone. Pair
|
|
102
|
+
with `--max-concurrent` to avoid exhausting memory when a few large files
|
|
103
|
+
sit in a big batch.
|
|
104
|
+
|
|
105
|
+
## Shared config
|
|
106
|
+
|
|
107
|
+
Every `extract` flag also applies to `batch` (OCR, chunking, layout,
|
|
108
|
+
content format, etc.) and is shared across all files unless a
|
|
109
|
+
`--file-configs` entry overrides it:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
xberg batch invoices/*.pdf \
|
|
113
|
+
--layout --layout-table-model slanet_wireless \
|
|
114
|
+
--content-format markdown --max-concurrent 8
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
A config file works too and auto-discovers from the cwd upward:
|
|
118
|
+
|
|
119
|
+
```toml
|
|
120
|
+
output_format = "markdown"
|
|
121
|
+
|
|
122
|
+
[ocr]
|
|
123
|
+
backend = "tesseract"
|
|
124
|
+
language = "eng"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
xberg batch corpus/*.pdf --config xberg.toml
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Programmatic access
|
|
132
|
+
|
|
133
|
+
From Python, `extract_batch` takes a list of `ExtractInput`s and returns one
|
|
134
|
+
envelope whose `results` array holds a document per input:
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
from xberg import ExtractInput, extract_batch, ExtractionConfig
|
|
138
|
+
|
|
139
|
+
config = ExtractionConfig(output_format="markdown")
|
|
140
|
+
|
|
141
|
+
inputs = [ExtractInput(uri=p) for p in ["a.pdf", "b.docx", "c.xlsx"]]
|
|
142
|
+
output = await extract_batch(inputs, config)
|
|
143
|
+
|
|
144
|
+
for doc in output.results:
|
|
145
|
+
print(len(doc.content))
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Per-input overrides go on `ExtractInput.config` (a `FileExtractionConfig`).
|
|
149
|
+
Node.js mirrors this with `extractBatch`; Rust uses `extract_batch(inputs, &config)`.
|
|
150
|
+
See `references/python-api.md`, `references/nodejs-api.md`, and
|
|
151
|
+
`references/rust-api.md`.
|
|
152
|
+
|
|
153
|
+
## MCP
|
|
154
|
+
|
|
155
|
+
When the `xberg` MCP server is registered, prefer the
|
|
156
|
+
`extract_batch` tool over shelling out — it takes an array of input objects
|
|
157
|
+
and a config object and returns structured results directly.
|
|
158
|
+
|
|
159
|
+
## Common pitfalls
|
|
160
|
+
|
|
161
|
+
- **Default format differs** — `batch` defaults to `--format json`,
|
|
162
|
+
`extract` to `--format text`. Set `--format` explicitly if a script
|
|
163
|
+
depends on one shape.
|
|
164
|
+
- **`--output-dir` must exist** — the CLI does not create it.
|
|
165
|
+
- **Memory blowups** — large batches with OCR/layout active may need an explicit
|
|
166
|
+
`--max-concurrent` ceiling.
|
|
167
|
+
- **`--file-configs` path keys** — must match the paths as passed on the
|
|
168
|
+
command line, not absolute-resolved variants.
|
|
169
|
+
|
|
170
|
+
See `references/cli-reference.md` for the full `batch` flag set.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
AI-RULEZ :: GENERATED FILE — DO NOT EDIT
|
|
3
|
+
Content-Hash: blake3:16520a5ae77366107136a609dfa4d2479fdc16bc276035e0fef00ae71cfc13ca
|
|
4
|
+
Source-Hash: blake3:662aa704cf97ad20f02258c9dcd1c73822213a426e27ec7ebc292d3f599fb7c2
|
|
5
|
+
Schema-Version: v1
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
# Concepts
|
|
9
|
+
|
|
10
|
+
* [Batch Extraction](SKILL.md) - Use when extracting from many files at once with shared config, bounded parallelism, per-file overrides, and error recovery. Covers the `batch` command, `--file-configs`, `--max-concurrent`, and output layout.
|