Skip to main content

batch-extraction

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.

Datos de origen

Repositorio
xberg-io/xberg
Última actividad en el origen
10 de octubre de 2026 a las 18:17
Idioma detectado de SKILL.md
inglés
Estrellas
9400
Forks
590

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
batch-extraction
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.
<!-- AI-RULEZ :: GENERATED FILE — DO NOT EDIT Content-Hash: blake3:3a70b47dd77fcd3f37e83bed3d32b1ad1ea9d6c1642ae8e0ff7b09b55939858a Source-Hash: blake3:3fca38eb564d0ed9c9194d070fd8dec96de727edc92e82954cb4b9af52cddbaf Schema-Version: v1 --> # Batch extraction Use this when processing a directory or glob of documents in one pass. `xberg batch` shares one extraction config across every file, runs extractions concurrently, and returns one structured array — failures on individual files do not abort the run. ## Basic usage ```bash # Glob expands to many paths; results come back as a JSON array (default) xberg batch *.pdf # Mixed formats, markdown content for LLM ingestion xberg batch docs/*.docx --content-format markdown # Recurse with the shell, then extract xberg batch $(find ./corpus -name '*.pdf') ``` `batch` defaults to `--format json` (vs `--format text` for single `extract`). Each array entry is a full extraction result, so downstream code can index by position into the input path list. ```bash xberg batch reports/*.pdf \ | jq '.[] | {chars: (.content | length), mime: .mime_type}' ``` ## Parallelism `--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 models are active, since each in-flight extraction holds its own buffers. Layout-heavy batches are further limited (1 concurrent extraction for all-PDF-layout batches, 2 for mixed layout): ```bash # Cap at 4 concurrent extractions xberg batch scans/*.pdf --ocr true --max-concurrent 4 ``` `--max-threads` additionally caps *total* internal threads (Rayon, ONNX intra-op, the batch semaphore) for tightly constrained environments: ```bash xberg batch *.pdf --max-concurrent 2 --max-threads 4 ``` ## Per-file config overrides A single shared config does not always fit. `--file-configs` points at a JSON file mapping each path to its own override object, merged on top of the shared config for that file only: ```json { "scan.pdf": { "force_ocr": true }, "report.pdf": { "output_format": "markdown" }, "data.xlsx": { "output_format": "json" } } ``` ```bash xberg batch scan.pdf report.pdf data.xlsx --file-configs overrides.json ``` Keys are file paths (matching the paths passed on the command line); values are per-file extraction config objects in snake_case, the same shape as a config file. ## Output layout For text/toon output with image extraction, `--output-dir` controls where referenced image files (e.g. `image_0.png`) are written; the directory must already exist. JSON output embeds image bytes inline and ignores `--output-dir`. ```bash mkdir -p out/images xberg batch slides/*.pptx --extract-images true --output-dir out/images --format text ``` ## Error recovery Batch extraction is fault-tolerant per file: one unreadable or corrupt document does not stop the rest. Inspect results for partial content and surfaced errors rather than relying on the process exit code alone. Pair with `--max-concurrent` to avoid exhausting memory when a few large files sit in a big batch. ## Shared config Every `extract` flag also applies to `batch` (OCR, chunking, layout, content format, etc.) and is shared across all files unless a `--file-configs` entry overrides it: ```bash xberg batch invoices/*.pdf \ --layout --layout-table-model slanet_wireless \ --content-format markdown --max-concurrent 8 ``` A config file works too and auto-discovers from the cwd upward: ```toml output_format = "markdown" [ocr] backend = "tesseract" language = "eng" ``` ```bash xberg batch corpus/*.pdf --config xberg.toml ``` ## Programmatic access From Python, `extract_batch` takes a list of `ExtractInput`s and returns one envelope whose `results` array holds a document per input: ```python from xberg import ExtractInput, extract_batch, ExtractionConfig config = ExtractionConfig(output_format="markdown") inputs = [ExtractInput(uri=p) for p in ["a.pdf", "b.docx", "c.xlsx"]] output = await extract_batch(inputs, config) for doc in output.results: print(len(doc.content)) ``` Per-input overrides go on `ExtractInput.config` (a `FileExtractionConfig`). Node.js mirrors this with `extractBatch`; Rust uses `extract_batch(inputs, &config)`. See `references/python-api.md`, `references/nodejs-api.md`, and `references/rust-api.md` in the sibling `xberg` skill. ## MCP When the `xberg` MCP server is registered, prefer the `extract_batch` tool over shelling out — it takes an array of input objects and a config object and returns structured results directly. ## Common pitfalls - **Default format differs** — `batch` defaults to `--format json`, `extract` to `--format text`. Set `--format` explicitly if a script depends on one shape. - **`--output-dir` must exist** — the CLI does not create it. - **Memory blowups** — large batches with OCR/layout active may need an explicit `--max-concurrent` ceiling. - **`--file-configs` path keys** — must match the paths as passed on the command line, not absolute-resolved variants. See `references/cli-reference.md` for the full `batch` flag set.
Ver en GitHub