mrkeyoor.com_
Thu 24 Sept 23:59 UTC
Dataevaluationupdated 26 Aug 2026

liteparse review

LiteParse is a local document parser built in Rust, with bindings for Node.js, Python, Rust, and browsers. It extracts spatial text, bounding boxes, Markdown, images, forms, annotations, and page screenshots from PDFs, and can convert office documents before parsing them.

+222stars / 7d
Verdict

Our LiteParse source build spent 378 seconds compiling before a Tesseract language-data download timed out, and the test step failed on the same download path. The project is still a serious candidate for local document pipelines because its published packages cover 4 runtimes and its API exposes useful spatial detail. Trial the packaged release on your real PDFs, but keep a fallback for difficult layouts and prove that OCR assets can be installed reliably in your production network.

We ran it

Lab card: what happened when we ran liteparseScreenshot of liteparse (developers.llamaindex.ai/liteparse)
Install✓ · 21s381 packages
Build✗ · 378s
Tests✗ · 51sran, no count parsed
Repo221 files~59,083 lines of source · 5.6 MB · 13 CI workflows · Dockerfile

Answers from our run

Does liteparse build from source?

Dependencies installed in 21 seconds (381 packages), and the build failed. We cloned commit 59b63ed into a clean Debian container with 3 CPUs and no project-specific setup.

Do liteparse's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use liteparse?

Teams expecting high-fidelity Markdown from dense tables, multi-column pages, charts, handwriting, or scans: the README directs those cases to the hosted LlamaParse service.

What are the alternatives to liteparse?

Docling, Unstructured, PyMuPDF. Our LiteParse source build spent 378 seconds compiling before a Tesseract language-data download timed out, and the test step failed on the same download path.

Setup2/5Packages are simple; our source build died on OCR data download
Docs5/5Detailed CLI, bindings, output fields, limits, and routing advice
Community5/5Same-day August release, push, bug reports, and fixes
Maturity3/5Broad APIs and releases, with active parsing regressions

Discussed on

  1. hnShow HN: LiteParse v2, now in Rust 100x faster15 points
  2. hnShow HN: LiteParse, a fast open-source document parser for AI agents12 points
  3. hnLiteparse9 points

Who it’s for

RAG and agent developers who need local PDF text with layout coordinates.
Teams that want one parser across Rust, Python, Node.js, and browser applications.
Pipelines that can route simple documents locally and send harder pages to a heavier parser.
Developers who need page screenshots, structure data, forms, annotations, or extracted images alongside text.

Who it’s NOT for

Teams expecting high-fidelity Markdown from dense tables, multi-column pages, charts, handwriting, or scans: the README directs those cases to the hosted LlamaParse service.
Air-gapped source builders who cannot pre-stage OCR assets: our build tried to download English Tesseract data and failed when that request timed out.
Electron or CommonJS users who require confirmed require() support: open issue 422 asks for it.
Pipelines where table mistakes are unacceptable without document-specific validation: current issues report sparse rows transposed into prose and interleaved text shifting table headers.
Users who want a finished semantic document-understanding system rather than rule-based local extraction.

Setup reality

Our Cargo install succeeded in 21 seconds and fetched 381 packages. The build failed with exit code 101 after 378 seconds, and tests failed with the same code after 51 seconds. Both stopped when tesseract-rs timed out downloading eng.traineddata from GitHub.

Published packages exist for Rust, Python, Node.js, and WASM, and Docker images are available. Source builds compile PDFium and Tesseract-related components; office formats also need LibreOffice conversion. HTTP OCR servers are optional, while the local Tesseract path needs its language data.

The important source-build gotcha is network dependence during compilation. An offline or filtered build needs the OCR data staged or cached in advance. Parsing quality also varies by layout, so production ingestion needs a representative document set and a fallback route.

LiteParse turns local documents into spatial data

LiteParse sits between a low-level PDF library and a cloud document-understanding service. It extracts text with bounding boxes, reconstructs Markdown through rules, renders pages, and exposes images, annotations, form fields, tagged structure, vector paths, and layout blocks. Office files and images are converted before the same parsing path. The core is Rust, while Node.js, Python, Rust, WASM, Docker, and a shared lit command cover common deployment choices.

The most useful idea is routing. lit is-complex performs a cheap text-layer check and marks pages that appear scanned, sparse, garbled, image-heavy, or dependent on vector text. A pipeline can accept easy files locally and send only difficult pages to OCR or a hosted parser. That design is more honest than pretending one extraction mode suits every PDF, and it gives teams a place to enforce cost or privacy rules before full processing.

Markdown remains heuristic on difficult layouts

The README directly warns that dense tables, multiple columns, charts, handwriting, and scans are better handled by LlamaParse, the maintainers' cloud service. Local Markdown reconstruction classifies headings, paragraphs, lists, code, figures, and tables from spatial relationships. The JSON block output includes the coordinates behind those decisions, so an application can inspect or replace the rendered Markdown when the heuristic gets a page wrong.

Current reports show why that escape hatch matters. Issue 400 describes a sparse table row being turned into column-wise prose, while issue 395 reports interleaved free text causing a table header to be emitted as prose. Another report covers text disappearing near the edge of rotated pages after version 2.12.0. These are not reasons to reject the parser outright. They are reasons to build a corpus of representative contracts, reports, slides, scans, and exported spreadsheets before adoption.

What happened when we ran it

Our sandbox cloned commit 59b63ed into an unprivileged container with 3 CPUs and 12 GB of RAM. Cargo installation succeeded in 21 seconds and fetched 381 packages. The source build ran for 378 seconds, then exited with code 101. The checkout contained 221 files, roughly 59,083 lines of source, and 5.6 MB before compilation.

The failing build log came from tesseract-rs after it had configured native Tesseract and Leptonica paths. Its build script tried to download eng.traineddata from the Tesseract tessdata_best repository on GitHub, the request timed out, and the script panicked. That is the complete observed cause. It does not show a Rust compilation error or a problem inside LiteParse's parsing code.

Tests failed with exit code 101 after 51 seconds on the same eng.traineddata download. Because the dependency build did not finish, no project test results were produced. The repository had 13 CI workflow files and a Dockerfile, but no conventional tests directory in our scan. For controlled builders, the finding is concrete: the source path depends on a remote OCR asset being reachable during compilation unless it has already been staged.

OCR can be local, remote, or avoided page by page

The bundled path uses Tesseract, and LiteParse can also call an HTTP OCR service such as EasyOCR, PaddleOCR, or a custom server that follows its documented API. Native text and OCR output are then merged. The complexity check lets callers skip OCR on clean text PDFs, which can reduce work and prevent a slower recognizer from altering already usable text. Worker pools in Python and Node isolate parses in persistent processes and can kill a document that exceeds its time limit.

That flexibility creates configuration decisions. Local Tesseract needs language data and native dependencies. An HTTP recognizer adds a service, network boundary, credentials if protected, and its own capacity planning. Office formats depend on LibreOffice conversion. Browser WASM avoids server installation but does not make every native feature or large document a good browser workload. Choose one deliberate path instead of assuming the same package command produces equivalent behavior everywhere.

Structured output is more valuable than the Markdown alone

JSON consumers can request page-level text items, block classifications, cell coordinates, embedded-image metadata, form widgets, link annotations, vector shapes, XFA packets, document metadata, and content bounds. Several expensive fields are opt-in, and XMP parsing is skipped above a documented 16 MiB source threshold. Image bytes stay outside JSON, with paths and duplicate relationships recorded instead. These limits keep ordinary output usable while preserving deeper inspection for selected jobs.

For agent systems, page screenshots and coordinates provide a second view when extracted text loses meaning. A model can inspect the rendered page or map a questionable table cell back to its region. That does not prove extraction correctness. It gives the pipeline evidence for review, which is a stronger design than passing untraceable prose downstream.

August activity is fast and still fixing parser edges

Docker v2.14.0 was released on August 26, 2026, the same day as the latest repository push. GitHub showed 31 combined issues and pull requests. Recent work addressed screenshots, nested images, page boundaries, and table separation, while open reports covered invisible text and image detection. The project is active enough that a stale release is not the concern; regression coverage across varied PDFs is.

LiteParse is a good fit when local execution, spatial data, and several language bindings matter, and when the team accepts a routed parsing architecture. It is a poor fit when every hard document must become perfect Markdown without review. Start with the packaged build rather than our failing source path, pin the version, preflight OCR assets, and score the output against documents your users actually submit.

Alternatives

ProjectWhat it isPick it when
Docling gh↗A document conversion toolkit focused on structured extraction from many business formats.pick this instead when richer document structure and model-assisted conversion matter more than a small Rust core.
UnstructuredA Python toolkit for partitioning many document formats into elements for downstream pipelines.pick this instead when connector breadth and Python-native preprocessing matter more than local multi-language bindings.
PyMuPDFFast Python bindings for PDF rendering, text extraction, annotation, and document manipulation.pick this instead when direct PDF primitives are enough and you want to build your own layout logic.

What people are saying

  1. [github-trending] run-llama/liteparse

Sources

  1. LiteParse README
  2. LiteParse documentation
  3. LiteParse Docker v2.14.0 release
  4. LiteParse sparse table issue
  5. LiteParse CommonJS support issue

More data reviews

go-stock · sqlitebrowser · hydradb · DouYin_Spider · helix-db · abu · the whole board →