Skip to main content

Crate xberg

Crate xberg 

Source
Expand description

Xberg - High-Performance Document Intelligence Library

Xberg is a Rust-first document extraction library with language-agnostic plugin support. It provides fast, accurate extraction from PDFs, images, Office documents, emails, and more.

§Quick Start

use xberg::{extract, ExtractInput, ExtractionConfig};

let config = ExtractionConfig::default();
let output = extract(ExtractInput::from_uri("document.pdf"), &config).await?;
println!("Extracted: {}", output.results[0].content);

§Architecture

  • Core Module (core): Main extraction orchestration, MIME detection, config loading
  • Plugin System: Language-agnostic plugin architecture
  • Extractors: Format-specific extraction (PDF, images, Office docs, email, etc.)
  • OCR: Multiple OCR backend support (Tesseract, PaddleOCR, VLM)

§Features

  • Fast parallel processing with async/await
  • Priority-based extractor selection
  • Comprehensive MIME type detection (141 file extensions)
  • Configurable caching and quality processing
  • Cross-language plugin support (Python, Node.js planned)

Re-exports§

pub use error::Result;
pub use error::XbergError;
pub use core::extract::extract;
pub use core::extract::extract_batch;
pub use core::config::AccelerationConfig;
pub use core::config::BedrockConfig;
pub use core::config::CallMode;
pub use core::config::CaptioningConfig;
pub use core::config::ChunkClassificationConfig;
pub use core::config::ChunkClassificationDefinition;
pub use core::config::ChunkSizing;
pub use core::config::ChunkerType;
pub use core::config::ChunkingConfig;
pub use core::config::ConcurrencyConfig;
pub use core::config::ContentFilterConfig;
pub use core::config::CredentialProviderConfig;
pub use core::config::CsvConfig;
pub use core::config::EmailConfig;
pub use core::config::EmbeddingConfig;
pub use core::config::EmbeddingModelType;
pub use core::config::ExecutionProviderType;
pub use core::config::ExtractInput;
pub use core::config::ExtractInputKind;
pub use core::config::ExtractionConfig;
pub use core::config::ExtractionErrorItem;
pub use core::config::ExtractionResult;
pub use core::config::ExtractionSummary;
pub use core::config::FileExtractionConfig;
pub use core::config::GeoJsonExtractionConfig;
pub use core::config::ImageExtractionConfig;
pub use core::config::JupyterCellRendering;
pub use core::config::LanguageDetectionConfig;
pub use core::config::LlmBudgetConfig;
pub use core::config::LlmCacheConfig;
pub use core::config::LlmConfig;
pub use core::config::LlmProviderConfig;
pub use core::config::LlmRateLimitConfig;
pub use core::config::MergeMode;
pub use core::config::MimeDetectionPolicy;
pub use core::config::NerBackendKind;
pub use core::config::NerConfig;
pub use core::config::OcrConfig;
pub use core::config::OutputFormat;
pub use core::config::PageClassificationConfig;
pub use core::config::PageConfig;
pub use core::config::PostProcessorConfig;
pub use core::config::RedactionConfig;
pub use core::config::RedactionPattern;
pub use core::config::RedactionTerm;
pub use core::config::RerankerConfig;
pub use core::config::RerankerHead;
pub use core::config::RerankerModelType;
pub use core::config::StructuredExtractionConfig;
pub use core::config::SummarizationConfig;
pub use core::config::TableChunkingMode;
pub use core::config::TokenReductionOptions;
pub use core::config::TranslationConfig;
pub use core::config::UrlExtractionConfig;
pub use core::config::UrlExtractionMode;
pub use core::config::LateInteractionConfig;
pub use core::config::LateInteractionModelType;
pub use core::config::SparseEmbeddingConfig;
pub use core::config::SparseEmbeddingModelType;
pub use extractors::security::SecurityLimits;
pub use cache::CacheStats;
pub use core::config::OcrPipelineConfig;
pub use core::config::OcrPipelineStage;
pub use core::config::OcrQualityThresholds;
pub use core::config::OcrStrategy;
pub use core::config::VlmFallbackPolicy;
pub use core::mime::SUPPORTED_EXTENSION_COUNT;
pub use core::mime::SUPPORTED_FORMAT_COUNT;
pub use core::mime::SupportedFormat;
pub use core::mime::detect_mime_type_from_bytes;
pub use core::mime::get_extensions_for_mime;
pub use core::mime::list_supported_formats;
pub use doctor::DoctorCheck;
pub use doctor::DoctorReport;
pub use doctor::ProbeStatus;
pub use doctor::doctor;
pub use plugins::clear_document_extractors;
pub use plugins::clear_embedding_backends;
pub use plugins::clear_ocr_backends;
pub use plugins::clear_post_processors;
pub use plugins::clear_renderers;
pub use plugins::clear_reranker_backends;
pub use plugins::clear_tokenizer_backends;
pub use plugins::clear_validators;
pub use plugins::list_document_extractors;
pub use plugins::list_embedding_backends;
pub use plugins::list_ocr_backends;
pub use plugins::list_post_processors;
pub use plugins::list_renderers;
pub use plugins::list_reranker_backends;
pub use plugins::list_tokenizer_backends;
pub use plugins::list_validators;
pub use plugins::register_document_extractor;
pub use plugins::register_embedding_backend;
pub use plugins::register_ocr_backend;
pub use plugins::register_post_processor;
pub use plugins::register_renderer;
pub use plugins::register_reranker_backend;
pub use plugins::register_tokenizer_backend;
pub use plugins::register_validator;
pub use plugins::unregister_document_extractor;
pub use plugins::unregister_embedding_backend;
pub use plugins::unregister_ocr_backend;
pub use plugins::unregister_post_processor;
pub use plugins::unregister_renderer;
pub use plugins::unregister_reranker_backend;
pub use plugins::unregister_tokenizer_backend;
pub use plugins::unregister_validator;
pub use plugins::ConfidenceSemantics;
pub use plugins::DocumentExtractor;
pub use plugins::EmbeddingBackend;
pub use plugins::InternalDocumentExtractor;
pub use plugins::OcrBackend;
pub use plugins::OcrBackendType;
pub use plugins::PageOrientationHandling;
pub use plugins::Plugin;
pub use plugins::PostProcessor;
pub use plugins::ProcessingStage;
pub use plugins::Renderer;
pub use plugins::RerankerBackend;
pub use plugins::TokenizerBackend;
pub use plugins::Validator;
pub use enrich::enrich;
pub use enrich::EnrichedResult;
pub use enrich::EnrichmentConfig;
pub use types::*;

Modules§

cache
Generic cache implementation with lock poisoning recovery.
cancellation
Cancellation token for extraction operations.
core
Core extraction orchestration module.
doctor
Environment diagnostics: probe configured backends and report what will actually execute on this host.
engine
Rust-only extraction engine.
enrich
Unified post-extraction enrichment: classification, chunk classification, NER and captioning in a single composable call. Transcription is not an enrichment stage — it runs at extraction time via core::config::ExtractionConfig. Active post-extraction enrichment pipeline for an ExtractedDocument.
error
Error types for Xberg.
extraction
Format-specific document extraction implementations and office metadata types.
extractors
Built-in document extractors.
plugins
Plugin system for extending Xberg functionality.
rendering
Unified rendering of document content to output formats.
telemetry
Telemetry and observability for xberg.
text
Text post-processing: NER, summarisation, redaction, token reduction, and translation.
types
Core types for document extraction.
utils
Text utility functions for quality processing and string manipulation.

Structs§

LateInteractionMatch
Stub match type for builds without the late-interaction-presets feature.
LateInteractionPreset
Stub preset type for builds without the late-interaction-presets feature.
MultiVectorEmbedding
Stub multi-vector result type for builds without the late-interaction-presets feature.
RerankedDocument
Stub result document type for builds without reranker-presets.
SparseEmbedding
Stub result type for builds without the sparse-embedding-presets feature.
SparseEmbeddingPreset
Stub preset type for builds without the sparse-embedding-presets feature.

Functions§

detect_mime_type
Detect the MIME type of a file at the given path.