Dentro un singolo rilascio c’è molto più di una libreria per leggere documenti. Con Xberg v1, il progetto Kreuzberg cambia pelle e si propone come un motore completo di content intelligence: un framework Rust che prende qualsiasi input – dai PDF ai video, passando per sitemap e rendering JavaScript – e lo prepara per l’elaborazione a valle, che si tratti di un LLM locale, di una pipeline di retrieval o di un’app mobile. Il dato tecnico dirompente è che tutto questo può girare interamente on-premise, senza chiamate a servizi cloud, e persino dentro un browser via WASM.

La spina dorsale è un backend PDF puro Rust (pdf_oxide), che elimina la dipendenza nativa da pdfium. A questo si aggancia una pipeline consapevole del layout: la ricostruzione dell’ordine di lettura usa modelli ONNX (PP-DocLayoutV3/RT-DETR) e un riordinamento dei blocchi simile all’approccio di Docling. La rilevazione di pagine scansionate avviene per pagina con OCR selettivo, e vengono gestiti campi modulo AcroForm/XFA e intestazioni basate su outline. Il comparto OCR vede l’arrivo di un backend PaddleOCR nativo (PP-OCRv6 in tre taglie) accanto a Tesseract, e uno stack Candle completamente in Rust per TrOCR, GLM-OCR, GOT-OCR, DeepSeek-OCR e PaddleOCR-VL, senza bisogno di ONNX Runtime o Tesseract nativo. Per gli scenari più vincolati, un percorso di inference tramite tract rende possibile l’esecuzione su WASM e Android senza ONNX.

Non è solo una questione di formati (101 tipi di documento, 367 di codice e dati, trascrizione audio/video via Whisper ONNX). C’è un layer di intelligenza testuale che include named-entity recognition (GLiNER2) eseguibile in locale nel browser, estrazione strutturata per LLM con chunking, citazioni, cache e politiche configurabili di fallback visivo, e blocchi di retrieval come sparse embedding (SPLADE), ColBERT e reranking cross-encoder. Ai margini, funzioni di redazione reversibile, summarization, traduzione, captioning, rilevazione QR e confronto tra documenti completano un kit che finora era disperso tra librerie Python scollegate.

Ciò che qui interessa AI-RADAR non è il catalogo delle feature, ma lo spostamento strutturale che Xberg rappresenta. In un ecosistema dove i documenti sono l’innesco principale per i casi d’uso enterprise dei LLM, la preparazione dei dati è rimasta a lungo l’anello debole che forza un passaggio cloud, spesso con API per OCR ed estrazione esposte a terze parti. Xberg v1 rende praticabile un’architettura in cui l’intera catena – dalla scansione di un PDF fino al contesto da passare a un LLM self-hosted – rimane entro i confini del datacenter del cliente.

Chi ci guadagna sono gli ambienti regolati, gli studi legali, le banche e le pubbliche amministrazioni che oggi spendono in servizi di document intelligence con metriche di qualità spesso opache e con rischi di residenza dei dati. Chi invece perde centralità sono i provider di API di document parsing che basano il pricing su volume di pagine e su un lock-in funzionale. I numeri del benchmark, per quanto limitati a PDF e immagini, lo raccontano: su PDF nativi, il composite quality di Xberg è 0,958 contro lo 0,837 di docling e lo 0,448 di pymupdf4llm; sul fronte struttura e fedeltà di lettura (SF1), la forbice è altrettanto ampia – 0,949 per Xberg, 0,612 per docling. Non sono percentuali, sono differenze architetturali dettate da un motore pensato per essere performante e non solo comodo da chiamare.

C’è un’implicazione di terzo ordine meno visibile. La scelta di Rust come base unica, con binding che coprono quindici linguaggi (dagli ultimi Dart/Flutter, Swift, Kotlin/Android e Zig), segnala che il progetto è pensato per diventare un componente infrastrutturale standard, integrabile non solo in backend ma anche in applicazioni mobile e in flussi edge. La presenza di un inference path puramente Rust (Candle) e dell’alternativa tract per WASM e Android suggerisce un orizzonte in cui l’inference light – NER, OCR, persino piccoli VL modelli – avviene interamente on-device, azzerando ulteriori rischi di esfiltrazione.

La mossa più sottile è l’integrazione tra ingestion e retrieval: avere SPLADE, ColBERT e cross-encoder accanto all’estrazione strutturata trasforma il framework da semplice parser a primo stadio di una RAG pipeline che parte dal documento e arriva al chunk arricchito, senza salti di stack. Per chi valuta deployment on-premise di LLM, questo riduce la complessità di integrazione e riporta sotto controllo l’intero TCO della fase di preprocessing, storicamente sottovalutata nei conti del self-hosting.

Xberg v1 non è un aggiornamento incrementale. È il segnale che l’intelligence documentale può funzionare come un modulo di sistema: portabile, senza licenze server, con prestazioni misurate e riproducibili. La roadmap dichiarata (miglioramento dell’OCR su immagini per la v1.1) punta a chiudere l’ultimo gap. Kreuzberg resta in LTS fino a fine anno per chi ha bisogno di stabilità, ma la direzione è tracciata.