Liteparse
Local document and PDF parsing that returns spatial text with bounding boxes. Use for extracting text from PDFs, DOCX, Office files, and images; running OCR on scans; producing layout-preserved JSON for RAG; batch-ingesting folders of papers; or rendering pages to PNG for multimodal agents. Distinguishing capabilities are per-token bounding boxes, page raster output, and fully local processing with no cloud API.
- Skill ID
- k-dense-ai/scientific-agent-skills/liteparse
- Publisher
- k-dense-ai
- Repository
- scientific-agent-skills
- Installs
- 0
- Files
- 7
- License
- Apache-2.0
- Requires
- Python 3.10+. Optional LibreOffice (Office formats) and ImageMagick (images). Bundled Tesseract for OCR. All processing is local — no cloud API required.
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
k-dense-ai/scientific-agent-skills/liteparseInstalls these files- SKILL.md
- references/api_reference.md
- references/choosing_a_parser.md
- references/cli_reference.md
- references/ocr_and_formats.md
- references/output_formats.md
- scripts/batch_parse_dir.py
What this skill tells the agent
LiteParse — Local Document Parsing
Overview
LiteParse is a fast, open-source document parser (Rust core, Python/Node bindings) focused on local, layout-aware text extraction with bounding boxes. It does not produce Markdown and does not call cloud LLMs. Outputs are plain text (layout-preserved) or structured JSON with per-page text_items (position, font metadata, optional confidence).
Version note: Examples target liteparse 2.0.0 (PyPI, May 2026). The upstream V1 branch is legacy; this skill documents V2 / main only.
For parser selection vs MarkItDown, the pdf skill, or LlamaParse, see references/choosing_a_parser.md.
When to Use This Skill
Use LiteParse when you need:
- Fast local parsing of PDFs or converted Office/image files without cloud dependencies
- Spatial text with bounding boxes for layout-aware RAG, citation grounding, or figure/table region logic
- OCR on scanned PDFs or images (bundled Tesseract, or a user-run HTTP OCR server)
- Page screenshots (PNG) for multimodal agents that must see charts, figures, or handwriting
- Batch ingestion of literature folders, supplementary PDFs, or protocol libraries
- Page subsets or password-protected PDFs
When Not to Use
| Task | Use instead |
|---|---|
| Markdown for LLM ingestion (EPUB, audio, YouTube, HTML) | markitdown skill |
| Merge/split PDFs, forms, watermarks, rotation | pdf skill |
| Dense tables, handwriting, production cloud pipelines | LlamaParse (cloud; sign up separately) |
Installation
uv pip install "liteparse==2.0.0"This installs the Python bindings and the `lit` CLI. Verify:
lit --help
python -c "import liteparse; print(liteparse.__version__)"Optional system tools (for non-PDF inputs):
- LibreOffice — Word, Excel, PowerPoint, OpenDocument, CSV/TSV
- ImageMagick — PNG, JPEG, TIFF, WebP, SVG, etc.
Install commands are in references/ocr_and_formats.md.
Node.js / TypeScript (optional): npm i @llamaindex/liteparse — see references/api_reference.md.
Quick Start
Python
from liteparse import LiteParse
parser = LiteParse(quiet=True)
result = parser.parse("paper.pdf")
print(result.text)
for page in result.pages:
print(f"Page {page.page_num}: {len(page.text_items)} items")CLI
# Layout-preserved text (default)
lit parse paper.pdf
# Structured JSON with bounding boxes
lit parse paper.pdf --format json -o paper.json
# Disable OCR on text-native PDFs (faster)
lit parse paper.pdf --no-ocrCore Workflows
1. Parse to layout-preserved text
Best for quick full-document text or feeding chunkers that do not need coordinates.
parser = LiteParse(ocr_enabled=True, quiet=True)
result = parser.parse("document.pdf")
full_text = result.textlit parse document.pdf -o output.txt2. Parse to structured JSON (bounding boxes)
Use when building layout-aware RAG, highlighting source regions, or joining text with screenshots.
import json
from liteparse import LiteParse
parser = LiteParse(output_format="json", quiet=True)
result = parser.parse("document.pdf")
# Programmatic access
for page in result.pages:
for item in page.text_items:
bbox = (item.x, item.y, item.width, item.height)
# item.text, item.confidence, item.font_name, item.font_sizelit parse document.pdf --format json -o document.jsonJSON field layout: references/output_formats.md.
3. Parse specific pages
parser = LiteParse(target_pages="1-5,10,15-20", quiet=True)
result = parser.parse("long_paper.pdf")lit parse long_paper.pdf --target-pages "1-5,10"4. Parse from bytes or stdin
Useful for uploads, S3 downloads, or piping remote PDFs.
with open("document.pdf", "rb") as f:
result = parser.parse(f.read())curl -sL https://example.com/report.pdf | lit parse -5. Page screenshots for multimodal agents
Screenshots capture visual content that text extraction alone misses (figures, complex tables, handwriting).
from pathlib import Path
parser = LiteParse(dpi=150, quiet=True)
shots = parser.screenshot("document.pdf", page_numbers=[1, 2, 3])
out = Path("screenshots")
out.mkdir(exist_ok=True)
for s in shots:
(out / f"page_{s.page_num}.png").write_bytes(s.image_bytes)lit screenshot document.pdf --target-pages "1,3,5" -o ./screenshots
lit screenshot document.pdf --dpi 300 -o ./screenshotsCombine JSON parse + screenshots when an agent needs both coordinates and pixels for the same pages.
6. Batch-parse a directory
For large corpora, prefer the CLI (parallel OCR workers) or the bundled script.
lit batch-parse ./papers ./parsed --format json --recursive
lit batch-parse ./papers ./parsed --extension .pdf --no-ocrpython scripts/batch_parse_dir.py ./papers ./parsed --format json --recursiveSee scripts/batch_parse_dir.py for a Python batch wrapper without network calls.
7. OCR configuration
OCR is on by default. Tesseract is bundled; no extra install for basic English OCR.
parser = LiteParse(
ocr_enabled=True,
ocr_language="eng", # Tesseract codes: fra, deu, etc.
num_workers=4, # parallel OCR (default: CPU cores - 1)
dpi=150, # higher DPI → better OCR, slower
)lit parse scan.pdf --ocr-language fra
lit parse scan.pdf --no-ocr
lit parse scan.pdf --ocr-server-url http://localhost:8080/ocrOffline / air-gapped: set TESSDATA_PREFIX to a directory of .traineddata files, or pass --tessdata-path. Details: references/ocr_and_formats.md.
8. Encrypted PDFs
parser = LiteParse(password="secret", quiet=True)
result = parser.parse("protected.pdf")lit parse protected.pdf --password secret9. Search text items by phrase
Merge adjacent items and return combined bounding boxes for a phrase (e.g. section titles).
from liteparse import search_items
page = result.get_page(1)
matches = search_items(page.text_items, "Materials and Methods", case_sensitive=False)Multi-Format Inputs
| Category | Extensions (examples) | Requirement |
|---|---|---|
.pdf | Native | |
| Office | .docx, .xlsx, .pptx, .doc, .odt, … | LibreOffice |
| Images | .png, .jpg, .tiff, .webp, .svg, … | ImageMagick |
Files are converted to PDF internally, then parsed. If conversion tools are missing, parsing fails with an actionable error — install the dependency and retry.
Performance Tips
- `--no-ocr` on born-digital PDFs — largest speedup
- `target_pages` — parse only methods/supplement sections
- `num_workers` — scale OCR across CPU cores
- `max_pages` — cap very large files (default 1000)
- `lit batch-parse` — directory-scale jobs with
--recursiveand--extension - Lower `dpi` (e.g. 100) when OCR quality is already sufficient
Reference Files
| File | Read when |
|---|---|
references/choosing_a_parser.md | Unsure whether to use LiteParse, MarkItDown, pdf, or LlamaParse |
references/api_reference.md | Python/TypeScript API, types, search_items |
references/cli_reference.md | Full lit command flags |
references/output_formats.md | JSON schema, bboxes, confidence scores |
references/ocr_and_formats.md | Tesseract, HTTP OCR, LibreOffice, ImageMagick |
Troubleshooting
| Issue | Fix |
|---|---|
| Office file fails | Install LibreOffice; ensure soffice is on PATH (Windows: add LibreOffice program dir) |
| Image fails | Install ImageMagick; verify convert or magick works |
| OCR poor quality | Increase --dpi; try --ocr-language; or HTTP OCR server |
More from k-dense-ai
Use this skill in a project
Open any RiverX project, search the Skills panel for k-dense-ai/scientific-agent-skills/liteparse, and install it in one click.
