TL;DR

LiteParse là parser tài liệu open-source (Apache 2.0) do LlamaIndex mở mã nguồn ngày 19/3/2026. Nó là CLI và thư viện TypeScript-native, parse PDF / Office / ảnh entirely local trên Node.js — không VLM, không LLM, không API key, không GPU. Bí mật là thuật toán grid projection dài ~1.650 dòng TS: chiếu mọi text item lên một grid monospace, giữ nguyên cột, bảng và indentation để LLM đọc trực tiếp như ASCII art. Latency tính bằng mili-giây thay vì giây như VLM cloud.

LiteParse grid projection algorithm hero

Có gì mới

LlamaIndex vốn nổi tiếng với LlamaParse — dịch vụ cloud parse PDF chất lượng cao nhưng tính phí theo trang. LiteParse chính là core text-extraction engine từng powering một phần LlamaParse, nay được tách ra và mở mã nguồn miễn phí.

  • CLI: npm i -g @llamaindex/liteparse rồi lit parse document.pdf. Có cả Homebrew và Python wrapper.
  • Output đa modal: ngoài text spatial, sinh kèm bounding box và screenshot từng trang để agent có thể fallback sang VLM khi cần.
  • OCR built-in: Tesseract.js bundled, parallel hoá theo CPU core, zero setup. Có HTTP API spec để cắm EasyOCR / PaddleOCR cho độ chính xác cao hơn.
  • Pipeline đa định dạng: PDF native (PDF.js), Office docs convert qua LibreOffice, ảnh qua ImageMagick.
  • MCP server cài thẳng vào Cursor / Claude / Codex như coding agent skill.

Tại sao đáng quan tâm

Ingest tài liệu đang là bottleneck lớn nhất của pipeline RAG. Trước LiteParse, dev thường phải chọn giữa hai cực:

  • Heuristic nhanh nhưng phá layout (pypdf, pdfplumber): nối text theo reading order, làm nát bảng và đa cột.
  • VLM / cloud chính xác nhưng chậm và đắt (LlamaParse cloud, AWS Textract, DeepSeek OCR V2): đo bằng giây/trang, cần GPU hoặc API key, dữ liệu rời máy.

LiteParse chen vào khoảng giữa: nhanh như heuristic, free như heuristic, nhưng giữ được spatial layout — đủ để LLM hiểu tables, multi-column docs, indentation. Với agent cần "quét" vài chục PDF mỗi câu hỏi, latency 100ms vs 10s là khác biệt giữa "dùng được" và "không thể dùng".

Bên trong thuật toán Grid Projection

Đây là phần thú vị nhất. Thay vì cố hiểu document (đây là bảng, kia là cột), grid projection chỉ cố tái tạo nơi text xuất hiện. 6 bước:

  1. Coordinates → lines. Gom text theo Y với Y_SORT_TOLERANCE dựa trên median text height. Sort trái-phải. Chèn dòng trống khi gap dọc vượt line spacing thông thường.
  2. Anchor extraction. Quét X coordinate, làm tròn về quarter-unit (50.12 và 50.38 đều thành 50.25). Trích ba loại anchor: Left (margin paragraph), Right (số căn phải), Center (tiêu đề canh giữa). Lọc bằng Delta filtering (xoá anchor đơn lẻ) và Intercept filtering (xoá anchor cắt nhầm content).
  3. Snap classification. Mỗi item snap vào anchor của nó. Conflict (item match nhiều anchor) → chọn anchor có nhiều item khác cùng share nhất. Hoà → ưu tiên Left > Right > Center.
  4. Flowing-text escape hatch. Trước khi project, kiểm tra: nếu block có ≤4 anchor VÀ phần lớn dòng span >50% chiều rộng trang → đó là paragraph chảy, render bằng space-join thuần để khỏi vỡ word wrap.
  5. Grid projection. Cột cơ sở = round(pdfX / medianCharWidth). Render theo thứ tự Floating → Left → Right → Center. Mỗi item tạo ra Forward Anchor truyền constraint xuống các dòng dưới — header bảng snap cột 13 sẽ ép các dòng data bên dưới snap đúng cột 13. Vị trí cuối cùng = max của ba constraint: target position, line maximum, forward anchor.
  6. Post-processing. Block trên 80% whitespace → halve gap (tiết kiệm token cho LLM). Cắt margin trống. Xoá null character và trailing whitespace.

Cả pipeline tổng cộng ~1.650 dòng TypeScript. Toàn bộ logic mô tả trong deep-dive blog của Logan Markewich.

So sánh với các parser khác

ToolSpeedLayoutCostLocal
pypdf / pdfplumbermsPhá đa cột & bảngFree
Markitdown / Doclingchậm hơnConvert sang markdown, dễ vỡFree
LlamaParse cloud / AWS Textractgiây + networkTốt nhất$/trang
VLM local (DeepSeek OCR V2)giây/trangTốt nhấtGPU
LiteParsemsGiữ spatial cột & bảngFree

LlamaIndex tự build LLM-as-judge eval dataset (vì OlmOCR và các benchmark OCR truyền thống phạt output spatial-text không-markdown). Kết quả tóm tắt: "improved accuracy in page-based QA, with top-tier parsing latency for large documents" so với PyPDF, PyMuPDF, Markitdown. Số liệu tuyệt đối (ms/trang, %) chưa public.

Quan trọng: LiteParse và VLM bổ sung cho nhau, không cạnh tranh. Pattern khuyến nghị là dùng LiteParse làm first pass nhanh, rồi route trang nào ambiguous sang VLM dùng screenshot mà LiteParse đã sinh sẵn.

Use cases

  • RAG ingestion fast-mode cho batch report, contract, spec — phần lớn document "sạch".
  • AI agent & coding skill: cài như Agent Skill qua skills CLI hoặc copy SKILL.md. Repo ship sẵn AGENTS.mdCLAUDE.md hướng dẫn coding agent dùng.
  • Two-stage multimodal: agent đọc text nhanh, gặp bảng phức tạp / chart → ném screenshot sang GPT-4o hoặc Claude.
  • Bảng spatial: không convert sang Markdown (dễ vỡ ở nested table). LLM hiện đại đọc trực tiếp ASCII grid được vì train trên rất nhiều code và ASCII art.
  • Multi-column papers: giữ nguyên cột thay vì nối tuần tự trái-phải.
  • MCP integration: URL MCP server cắm thẳng Cursor / Claude / Codex.
  • Privacy-sensitive: invoice, hợp đồng pháp lý — data không rời máy.

Giới hạn & pricing

LiteParse không phải là document intelligence platform đầy đủ. Nó cố tình bỏ qua:

  • Semantic layout analysis (header vs footnote vs caption).
  • Output structured Markdown / JSON schema / table-to-CSV.
  • Handwritten form, scientific paper dày phương trình, scanned doc xuống cấp nặng, nested table phức tạp.

Yêu cầu môi trường: Node.js ≥18. LibreOffice để xử lý Office docs. ImageMagick để xử lý ảnh. Trên Windows, thư mục LibreOffice CLI (C:\Program Files\LibreOffice\program) phải có trên PATH.

OCR fallback: Tesseract.js mặc định, parallel theo CPU. Offline air-gap: set TESSDATA_PREFIX trỏ tới folder .traineddata. Cần độ chính xác cao hơn → cắm EasyOCR / PaddleOCR qua HTTP API spec (OCR_API_SPEC.md).

License: Apache 2.0. Pricing: $0. Có ngay trên github.com/run-llama/liteparse (4.5k stars, 17 releases, latest v1.5.2).

Roadmap & ai đứng sau

LiteParse build bởi team LlamaIndex, người chống chính là Logan Markewich — author hai bài blog technical và là active committer. Repo có 15 contributor, codebase 71.9% TypeScript / 26.5% Python.

Roadmap không formal. Hai hướng được nhắc tới: thêm format tài liệu mới qua đóng góp cộng đồng, và build visual debug tooling để cả dev lẫn AI coding agent có thể audit decision và đẩy thuật toán spatial tốt hơn.

Cài thử trong 30 giây:

npm i -g @llamaindex/liteparse
lit parse your-document.pdf

Nguồn: LlamaIndex blog (deep dive), LlamaIndex blog (announcement), GitHub repo, LlamaIndex docs.