liteparse
GitHub本地优先的文档解析工具,支持PDF/Office/图片转Markdown或JSON。完全离线运行,无云依赖。适用于本地文件读取、文本表格提取及页面截图,默认优于云端方案。
Trigger Scenarios
Install
npx skills add Prismer-AI/PrismerCloud --skill liteparse -g -y
SKILL.md
Frontmatter
{
"name": "liteparse",
"description": "Parse documents into LLM-ready content entirely on the local machine — PDF \/ DOCX \/ XLSX \/ PPTX \/ images → Markdown, structured JSON (with bounding boxes), or page screenshots, via the `lit` CLI. No cloud, no LLM, works offline. Use whenever the user attaches or points to a document that must be read before reasoning, or asks to extract text \/ tables \/ page images from a file."
}
LiteParse (local-first document parsing)
LiteParse is a standalone OSS parser (Rust core, PDFium + Tesseract + LibreOffice) that turns documents into text the model can read — fully local, zero cloud dependency, works with no network. It is the daemon's local-first document-parsing path.
Upstream:
run-llama/liteparse
- skill
run-llama/llamaparse-agent-skills. Apache-2.0 (core) / MIT (skill), © LlamaIndex. Vendored as a Prismer built-in; the CLI (lit) self-installs on first use (see below).
Scope — liteparse vs ingest
Two document paths coexist; pick by network + fidelity needs:
liteparse(this skill) — local-first. Local document files → Markdown / JSON / screenshots, fully offline, zero cost, zero cloud. Covers PDF, Word, PowerPoint, spreadsheets, images. Built-in Tesseract OCR for clean scans; LibreOffice for Office formats. Default for: files already on disk, offline / cloud-unreachable situations, digital PDFs, quick extraction, bounding boxes, page screenshots.ingest(sibling skill) — cloud-backed.cloud load/cloud searchfor web URLs (HQCC compression) andcloud parsefor hi-res OCR of scans / handwriting / dense tables. Use when: the source is a web page (liteparse can't fetch URLs), or local parsing quality is insufficient (dense tables, multi-column, handwriting, low-quality scans).
Decision rule: local file → try liteparse first (free, offline,
fast). Escalate to ingest's cloud parse -m hires only when local
fidelity falls short. Web URL / search → ingest (liteparse parses
local files and stdin, not remote pages — if you only have a URL,
curl -sL <url> -o file then parse the local copy, or route to
ingest).
When local parsing is low-confidence (empty pages, garbled OCR),
flag the region and consider escalating to ingest; never invent
content.
First-use install (self-bootstrapping)
The lit CLI ships via npm/pip/cargo (same CLI). Check, then install if
missing. Do this once per environment, quietly.
# 1. Is it already available? (sandbox image may bake it)
command -v lit && lit --version && echo "lit ready" || {
# 2. Install the CLI
npm i -g @llamaindex/liteparse && lit --version
}
System dependencies for Office conversion + image handling (only needed for non-PDF inputs):
# LibreOffice — required for DOCX/XLSX/PPTX/ODT/RTF conversion
brew install --cask libreoffice # macOS
apt-get install -y libreoffice # Debian/Ubuntu (daemon image)
# ImageMagick — required for some image formats
brew install imagemagick # macOS
apt-get install -y imagemagick # Debian/Ubuntu
If install fails (no network, no package manager), do not fabricate
parsed content — report lit unavailable (<reason>) and stop.
CLI reference
Parse a file
lit parse document.pdf # → text on stdout
lit parse document.pdf --format json -o out.json # structured JSON + bounding boxes
lit parse document.pdf --target-pages "1-5,10,15-20" # page subset
lit parse document.pdf --no-ocr # skip OCR (digital PDFs only)
lit parse document.pdf --dpi 300 # higher render DPI
lit parse scan.pdf --ocr-language eng+chi_sim # Tesseract lang codes
lit parse secured.pdf --password '****' # encrypted docs
curl -sL https://example.com/report.pdf | lit parse - # stdin (download-then-parse)
Key lit parse options: -o/--output, --format json|text
(default text), --no-ocr, --ocr-language <lang>, --ocr-server-url <url> (plug an external OCR HTTP server), --tessdata-path,
--target-pages "1-5,10", --max-pages <n> (default 1000), --dpi
(default 150), --preserve-small-text, --password, --num-workers,
-q/--quiet.
Batch a directory
lit batch-parse ./input-dir ./output-dir
lit batch-parse ./input-dir ./output-dir --recursive --extension .pdf --format json
Page screenshots (for visual content text can't capture)
lit screenshot document.pdf -o ./screenshots # all pages → PNG
lit screenshot document.pdf --target-pages "1,3,5" -o ./shots
lit screenshot document.pdf --dpi 300 -o ./shots # high-res
Supported formats: PDF · Word (DOC/DOCX/DOCM/ODT/RTF) · PowerPoint (PPT/PPTX/PPTM/ODP) · Spreadsheets (XLS/XLSX/ODS/CSV/TSV) · Images (JPG/PNG/GIF/BMP/TIFF/WEBP/SVG).
Workflow
- Locate the file. If it's a workspace asset, resolve its local
path (see
assetsskill). If it's a URL,curl -sL <url> -o <name>first —litparses local files (and stdin), not remote pages. - Pick mode.
- Digital PDF / clean doc →
lit parse <f>(add--no-ocrto skip OCR and go faster when the PDF has a real text layer). - Scan / image / handwriting → leave OCR on; set
--ocr-languageand bump--dpi 300if text is small. - Need spatial structure / tables with coordinates →
--format json(gives bounding boxes). - Need to see a chart/figure/signature →
lit screenshot, then read the PNG.
- Digital PDF / clean doc →
- Read the result as source of truth. Base extraction/summary
only on what
litreturned. If a page is empty or low-confidence, say so; don't guess. - Deliver products, if the parse output itself is the deliverable.
Write final files into
$PRISMER_ARTIFACTS_DIR(the dispatch'sartifacts/dir — auto-archived as IMAssets by the daemon's artifacts-watcher and attached to your reply). Seeoffice-artifactsSKILL.md §Delivery contract for the full delivery rules.
Output reporting
- After a parse:
Parsed <filename>: <N> pages, format=<text|json>, ocr=<on|off>— then proceed with the user's actual question. - Don't dump the entire parsed body into chat unless asked; summarize and cite page numbers.
- After screenshots:
Rendered <N> page screenshot(s) → <dir>and read the relevant ones.
HARD RULE — never claim a parse you didn't run
Forbidden unless lit actually ran with exit 0 and produced output:
"parsed the document", "the PDF says…", "extracted the table". If lit
is unavailable or the parse failed, completion text must start with
无法解析文档 (reason) / Cannot parse document (reason) — do not
substitute guessed content.
Version History
- 742ef63 Current 2026-07-24 11:50


