xberg-io/xberg
Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with CLI, REST API, and MCP server.
Xberg – 다국어 문서 지능 엔진
무엇인가요 – Xberg는 PDF, Office 문서, 이미지, 오디오, 아카이브, 소스 코드, 웹 페이지 등 다양한 파일을 깨끗하고 구조화된 텍스트로 변환하는 오픈소스 라이브러리 및 CLI입니다. 포맷 감지, OCR, 레이아웃 분석, 테이블 재구성, 코드 파싱, 그리고 선택적 LLM 기반 확장(요약, NER, 임베딩, 스키마 기반 JSON 추출)을 통합합니다. 핵심은 Rust로 작성되었으며, 15개 언어 바인딩(Python, Node, Go, Java, C#, Ruby, PHP, Elixir, Dart, Swift, Kotlin, Zig, C FFI 등)을 제공하며 라이브러리, 명령줄 도구, REST API, 또는 AI 코딩 어시스턴트용 "MCP" 서버로 실행할 수 있습니다.
주요 기능 (README에 설명됨)
| 기능 | 제공되는 기능 |
|---|---|
| 광범위한 포맷 지원 | PDF, Office, 전자책, 이미지, 오디오, 아카이브, 이메일, 코드, 과학 파일 등 141개 확장자를 포함한 107개 문서 포맷. |
| 웹 인제스티언 | 단일 URL을 가져오거나, 보조 엔진인 crawlberg를 통해 사이트 크롤링. |
| 오디오/비디오 전사 | Whisper-ONNX 모델(tiny → large-v3)을 사용해 MP3, WAV, MP4, WebM 등을 텍스트로 변환. |
| 재귀적 아카이브 추출 | 중첩된 .zip, .tar, .gz, .7z를 안전한 제한(지-보름 보호, 깊이 제한)으로 처리. |
| OCR 백엔드 | Tesseract, PaddleOCR, Candle, 또는 VLM 기반 OCR; 언어 자동 감지, 신뢰도 점수 반환, 플러그인을 통한 확장 가능. |
| 레이아웃 및 테이블 재구성 | ML 모델(PP-DocLayout-V3, RT-DETR)로 읽기 순서 추정; 테이블 모델(TATR, SLANet)로 깨끗한 마크다운 테이블 생성. |
| 코드 인텔리전스 | Tree-sitter 기반 371개 프로그래밍 언어 파싱 – 함수, 클래스, 임포트, 문서 문자열 등; RAG 파이프라인에 유용. |
| 임베딩 및 검색 | 로컬 ONNX 임베딩 또는 liter-llm을 통해 165개 제공자 API 지원; 스파스, 지연 상호작용, 크로스엔코더 재랭킹 지원. |
| 확장 기능 | 내장 NER, 키워드 추출(YAKE/RAKE), 요약, 번역, 기밀 정보 마스킹, 페이지 분류, QR 탐지, 언어 감지, 토큰 축소. |
| 스키마 기반 JSON 추출 | 로컬 LLM(Ollama, LM Studio, vLLM) 또는 호스팅된 LLM을 호출해 수동 프롬프트 없이 구조화된 JSON 생성. |
| 다양한 출력 형식 | 플레인 텍스트, 마크다운, Djot, HTML, JSON 트리, Docling DocTags; 사용자 정의 렌더러 등록 가능. |
| 배포 유연성 | Rust crate, Python/Node 등 패키지, Docker 이미지, Helm 차트, 또는 내장 REST API(xberg serve)로 사용 가능. GPU는 핵심에는 필요 없음; 전사 또는 LLM 기반 단계에만 GPU 옵션. |
사용 방법
| 진입점 | 일반적인 명령어/코드 스니펫 |
|---|---|
| CLI | xberg extract file.pdf (14개의 서브명령어: extract, batch, detect, formats, serve, mcp, …). Homebrew 또는 Scoop으로 설치. |
| Python | pip install xberg → from xberg import extract; output = extract("doc.pdf") |
| Rust | cargo add xberg → let out = xberg::extract(...).await?; |
| Node.js | npm install @xberg-io/xberg → await xberg.extract('doc.pdf') |
| Docker | docker run ghcr.io/xberg-io/xberg serve --port 8000 – 단일 POST 엔드포인트를 노출해 JSON 또는 마크다운 반환. |
| MCP 서버 | xberg mcp --transport stdio – Claude, Cursor, Gemini 등 AI 코딩 어시스턴트가 직접 호출할 수 있는 프로토콜 제공. |
누가 도움을 받을 수 있나요?
- RAG 파이프라인을 구축하는 개발자 – 다양한 데이터 소스에서 빠르고 신뢰할 수 있는 텍스트 추출과 선택적 임베딩 필요.
- 대규모 문서 아카이브를 보유한 기업 – 여러 포맷 전용 도구의 조각난 시스템을 단일 엔진으로 대체 가능.
- AI 기반 코딩 도구 – MCP 모드를 통해 Claude나 Cursor 같은 에이전트가 Xberg를 호출해 실시간 문서 파싱 가능.
- 재현 가능한 전처리가 필요한 연구자 – 결정론적 Rust 코어, 광범위한 포맷 목록, 다국어 CI 테스트.
빠른 시작 예제 (Rust)
use xberg::{extract, ExtractInput, ExtractionConfig};
#[tokio::main]
async fn main() -> xberg::Result<()> {
let cfg = ExtractionConfig::default();
let out = extract(ExtractInput::from_uri("document.pdf"), &cfg).await?;
println!("{}", out.results[0].content);
Ok(())
}
Python, Node, Go 등에서도 유사한 흐름이 존재하며, 유사한 단일 줄 헬퍼가 제공됩니다.
더 많은 정보 찾기
- 문서: https://docs.xberg.io (설치 가이드, CLI 참조, API 문서)
- 벤치마크: https://xberg.io/benchmarks (가장 빠른 오픈소스 PDF → 마크다운 변환 주장)
- 커뮤니티: Discord, Hugging Face 조직, Claude, Cursor, Gemini 등용 플러그인 마켓플레이스.
결론: Xberg는 포맷 처리, OCR, 레이아웃 분석, 코드 파싱, 선택적 LLM 기반 확장 기능을 하나의 빠르고 강력한 Rust 코어 아래 통합한 프로덕션 수준의 다국어 문서 지능 툴킷입니다. AI 인프라스트럭처 분야에 적합하며, 특히 검색 증강 생성(RAG) 및 다양한 소스에서 깨끗하고 구조화된 텍스트가 필요한 모든 워크플로우에 적합합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트