À propos du projet
Xberg est un moteur polyglotte d'intelligence documentaire construit autour d'un cœur Rust. Pointez-le vers un PDF, une image scannée, un tableur, un fichier audio, une URL, une archive ou une arborescence de code source et il renvoie du texte propre, des tableaux, des métadonnées et des données structurées. La détection de format, la lecture, l'OCR et l'extraction sont assurés par un seul moteur plutôt qu'assemblés à partir de bibliothèques séparées.
Couverture et capacités
- Formats : le README revendique 107 formats répartis sur 141 extensions de fichiers et 56 alias MIME, couvrant les documents Office (Word, Excel, PowerPoint, OpenDocument, Apple iWork, Hangul HWP/HWPX), le PDF, les livres électroniques (EPUB, FB2), les bases de données (DBF, SQLite, GeoPackage), les images raster et avancées (PNG, JPEG, TIFF, JPEG2000, JBIG2, HEIC/AVIF, SVG), les pistes audio et vidéo (MP3, M4A, WAV, WebM, pistes audio MP4/MPEG), le web et les données structurées (HTML, XML, JSON, YAML, TOML, CSV), les variantes de texte et Markdown (AsciiDoc, CommonMark, MyST, Quarto, Djot, MDX, DocTags, reStructuredText, Org), les e-mails (EML, MSG, PST), les archives (ZIP, TAR, GZ, 7z) et les formats académiques (BibTeX, RIS, EndNote, LaTeX, Typst, JATS, notebooks Jupyter, DocBook, OPML).
- Intelligence du code : structure, imports, symboles et docstrings de 371 langages de programmation via tree-sitter, avec un découpage sensible à la syntaxe destiné aux pipelines RAG.
- OCR : backends Tesseract, PaddleOCR, Candle ou VLM, avec chaînes de repli, scores de confiance et détection automatique de la langue.
- Mise en page et tableaux : des modèles ML de mise en page (PP-DocLayout-V3, RT-DETR) et des modèles de structure de tableaux (TATR, SLANet) reconstruisent l'ordre de lecture et les grilles de cellules.
- Enrichissement : NER, extraction de mots-clés (YAKE/RAKE), résumé, traduction, rédaction des PII, classification de pages, détection de QR, détection de langue et un format de réduction de tokens TOON.
- Embeddings et recherche : embeddings ONNX locaux ou embeddings hébergés par un fournisseur, récupération sparse et à interaction tardive, et reranking par cross-encoder.
- Extraction structurée : JSON piloté par schéma à partir de documents à l'aide de moteurs locaux (Ollama, LM Studio, vLLM) ou de fournisseurs LLM hébergés.
- Sortie : texte brut, Markdown, Djot, HTML, arbre JSON ou Docling DocTags, plus des moteurs de rendu personnalisés.
Interfaces et déploiement
Quinze bindings sont listés : Rust, Python, Node.js, WebAssembly, Java, Go, C#, PHP, Ruby, Elixir, Dart, Kotlin (Android), Swift, Zig et C FFI. Les options de déploiement incluent une API de bibliothèque, une CLI avec 14 commandes (extract, batch, detect, formats, version, cache, tree-sitter, doctor, serve, mcp, api, embed, chunk, completions), un serveur d'API REST via `xberg serve`, un serveur MCP avec 9 outils, 3 prompts et 4 ressources pour Claude Desktop, Cursor et clients similaires, ainsi qu'un packaging Docker et Helm. Le README indique un fonctionnement par défaut sur CPU uniquement, une mise en cache par hash de contenu, un traitement par lots parallèle et des délais d'expiration par fichier.
Remarques
Certaines capacités sont conditionnées par des feature flags Cargo (url-ingestion, transcription, reranker, layout/ORT) ; les paquets précompilés et l'image Docker intègrent un ensemble courant. Le projet se présente comme le successeur de Kreuzberg et est sous licence MIT. Les affirmations de performance et de benchmark figurant dans le README sont celles du projet et ne sont pas vérifiées indépendamment ici.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.