Kreuzberg v4.5, Docling 레이아웃 모델을 Rust 파이프라인으로 가속

r/LocalLLaMA 게시물은 크롤링 시점 기준 50점과 21개 댓글을 기록했다. 작성자가 공개한 내용에 따르면 Kreuzberg는 MIT 라이선스의 open-source document intelligence 프레임워크로, Rust로 작성됐고 Python, TypeScript/Node.js, PHP, Ruby, Java, C#, Go, Elixir, R, C, WASM을 포함해 12개 언어 바인딩을 제공한다. 88개 이상의 포맷에서 text, structure, metadata를 추출하고 OCR과 embeddings까지 처리하는 것이 기본 포지션이다.

v4.5의 핵심 변화는 문서를 단순 text extraction 대상이 아니라 layout과 table을 가진 구조화 객체로 다루기 시작했다는 점이다. 게시물은 Docling의 RT-DETR v2("Docling Heron") 모델을 통합했고, 이를 Rust-native pipeline으로 감쌌다고 설명한다. 표가 있는 페이지에서는 탐지된 영역을 잘라 TATR(Table Transformer)를 돌리고, 그 결과를 PDF text position과 매칭해 markdown table을 복원한다.

작성자가 제시한 benchmark는 꽤 구체적이다. academic papers, government/legal docs, invoices, OCR scans, edge cases를 포함한 171개 PDF에서 Kreuzberg는 Structure F1 42.1%, Text F1 88.9%, 평균 처리 시간 1,032 ms/doc을 기록했다. 비교 대상으로 제시된 Docling은 각각 41.7%, 86.7%, 2,894 ms/doc이다. 게시물 표현대로라면 quality는 비슷하거나 조금 높고, 속도는 평균 2.8배 정도 빠른 셈이다.

세부 구현도 실무 지향적이다. text layer가 있는 PDF는 pdfium으로 문자 단위 위치와 font metadata를 보존하며 읽고, text layer가 없으면 Tesseract OCR로 자동 fallback한다. PDF/A나 accessibility 문서처럼 tagged structure tree가 있으면 원래 paragraph boundary와 heading hierarchy를 활용한다. 또 broken font CMap 때문에 생기는 "co mputer" 같은 문제를 page-level respacing으로 고쳐 테스트 문서에서 garbled lines를 406개에서 0개로 줄였다고 밝힌다. PaddleOCR v2 기반 multilingual OCR과 extraction result caching도 이번 릴리스의 일부다.

언어 바인딩: 12개

지원 포맷: 88+

benchmark: 171 PDF, 1,032 ms/doc, Structure F1 42.1%, Text F1 88.9%

이 릴리스가 의미 있는 이유는 document AI 파이프라인이 이제 단순 OCR 경쟁을 넘어, layout understanding, table recovery, multilingual fallback, runtime efficiency를 한 번에 요구받고 있기 때문이다. Kreuzberg는 그 요구를 Python 중심 생태계 밖에서, Rust와 native binding 전략으로 풀려 한다. 기존에 Docling을 이미 쓰는 팀이라면 게시물의 주장처럼 "같은 모델 품질에 더 빠른 엔진"이 실제로 재현되는지 비교 검증해 볼 만한 업데이트다.