RAG系统80%的瓶颈在文档解析,LiteParse给出了一个Rust答案
入门到实战——LiteParse 从零开始到项目实战
引言
假设你是 AI 工程师,正在构建一个 RAG 知识库系统,需要解析海量的 PDF、Word 和扫描件。你想到了 LlamaParse 的精准度,但担心数据安全和按页计费。你又试了 PyPDF2,却发现双栏表格被拼成一团乱麻。
这正是 LiteParse 要解决的问题。
本文从零开始,带你从安装、CLI 使用,到编程集成、RAG 场景实战,再到浏览器端部署——全流程覆盖。无论你是想快速体验,还是构建生产级系统,都能找到对应的内容。
前置要求:Node.js 18+(本地环境)或 Python 3.10+,一个用于测试的 PDF 文件。
第一章:环境准备与快速上手(5 分钟)
LiteParse 支持多种语言环境,选择最顺手的一种即可:
方式一:全局 CLI 安装(推荐用于快速体验)
npm i -g @llamaindex/liteparse
方式二:Python 环境
pip install liteparse
方式三:在项目中作为依赖引入
npm install @llamaindex/liteparse# 或yarn add @llamaindex/liteparse
安装完成后,立即测试一个 PDF 文件:
# 基础解析——直接出文本lit parse document.pdf# 输出结构化JSON(带坐标)lit parse document.pdf --format json -o output.json# 只解析特定页面lit parse document.pdf --target-pages "1-5,10,15-20"# 关闭OCR(纯文本PDF不需要OCR时更快)lit parse document.pdf --no-ocr# 从URL直接解析curl -sL https://example.com/report.pdf | lit parse -
管道设计在处理远程文件时尤其便利——从 curl 到 lit 一气呵成,无需下载临时文件。
第二章:命令行实战——掌握 lit 命令
lit是 LiteParse 的命令行入口,覆盖了常用操作场景:
2.1 基础解析
# 解析PDF,输出纯文本lit parse report.pdf > output.txt# 输出JSON,包含每个词的边界框信息lit parse report.pdf --format json -o parsed.json# 高DPI渲染(提升OCR精度和截图质量)lit parse report.pdf --dpi 200
2.2 批量处理
# 解析目录下所有PDFlit batch-parse ./documents/ --recursive --extension pdf# 并发处理(自动使用CPU核心数-1个工作线程)lit batch-parse ./docs/ --num-workers 4
2.3 截图生成(Agent 场景的关键功能)
# 生成PDF前3页的截图lit screenshot report.pdf -o ./images --pages "1-3"# 为解析添加视觉上下文lit parse report.pdf && lit screenshot report.pdf -o ./images
这对 LLM Agent 来说极为实用——当文本解析无法满足需求时,截图提供了视觉层面的理解能力。Agent 可以先用文本理解文档结构,发现模糊区域时再调用截图进行多模态分析。
2.4 常用参数汇总
|
|
|
|
|---|---|---|
--format json |
|
lit parse doc.pdf --format json |
--target-pages |
|
--target-pages "1-5,10" |
--no-ocr |
|
--no-ocr |
--ocr-language |
|
--ocr-language chi_sim |
--dpi |
|
--dpi 200 |
--num-workers |
|
--num-workers 4 |
第三章:编程集成——TypeScript/Python 示例
CLI 是快速上手的入口,编程集成才是构建应用的核心。
3.1 TypeScript/Node.js 集成
import { LiteParse } from '@llamaindex/liteparse';// 默认配置,使用内置Tesseract OCRconst parser = new LiteParse({outputFormat: "json", // 输出JSON以获得边界框ocrEnabled: true, // 启用OCR(处理扫描件)language: "eng" // OCR语言});// 解析PDF文件const result = await parser.parse('document.pdf');// 访问解析结果console.log(`Parsed ${result.json?.pages.length} pages`);for (const page of result.json?.pages || []) {console.log(`Page ${page.page}: ${page.text.length} chars`);console.log(`First text item:`, page.textItems[0]);// page.textItems 包含每个词的 text、x、y、width、height 等信息}
3.2 Python 集成
from liteparse import LiteParseparser = LiteParse(output_format="json")result = parser.parse("document.pdf")for page in result["pages"]:print(f"Page {page['page']}: {page['text'][:100]}...")# 访问边界框信息for item in page.get("text_items", []):print(f" '{item['text']}' at ({item['x']}, {item['y']})")
3.3 处理非 PDF 格式(Office 文档/图片)
// 解析Word文档(需要系统安装LibreOffice)const docResult = await parser.parse('presentation.pptx');// 解析Excel表格const xlsxResult = await parser.parse('data.xlsx');// 解析图片const imageResult = await parser.parse('scan.jpg');
LiteParse 会自动检测文件格式并调用相应的转换工具,最终统一按 PDF 处理逻辑执行。Office 文档依赖 LibreOffice,图片依赖 ImageMagick。
第四章:实战项目——构建智能文档问答 Agent
场景:一个面向财报分析的文档问答系统,用户上传 PDF 后,AI Agent 能够回答问题并精确定位答案的来源位置。
步骤概览:PDF 解析 → 边界框存储 → 全文检索 → LLM 问答 → 可视化定位
4.1 PDF 解析与边界框存储
import { LiteParse } from '@llamaindex/liteparse';import fs from 'fs';const parser = new LiteParse({ outputFormat: "json" });interface TextItem {text: string;x: number;y: number;width: number;height: number;pageNum: number;}export async function ingestPdf(filePath: string, filename: string) {const result = await parser.parse(filePath);const pages = result.json?.pages.map((pg) => ({pageNum: pg.page,width: pg.width,height: pg.height,text: pg.text,textItems: pg.textItems.map((item: any) => ({text: item.text,x: item.x,y: item.y,width: item.width,height: item.height,pageNum: pg.page}))})) ?? [];// 存储到JSON文件fs.writeFileSync(`./data/${filename}.json`, JSON.stringify(pages, null, 2));return pages;}
4.2 检索与答案定位
function searchPages(query: string, pages: any[]) {const terms = query.toLowerCase().split(/\s+/);const results = [];for (const page of pages) {let score = 0;const matchedItems: TextItem[] = [];for (const item of page.textItems) {const itemText = item.text.toLowerCase();for (const term of terms) {if (itemText.includes(term)) {score += term.length / itemText.length;matchedItems.push(item);}}}if (score > 0) {results.push({ pageNum: page.pageNum, score, matchedItems });}}return results.sort((a, b) => b.score - a.score);}
4.3 答案可视化定位
有了边界框信息,你可以渲染原始 PDF 页面,在高亮位置绘制答案来源的矩形框。代码示意:
// 使用canvas/PDF.js在浏览器中渲染PDF,然后在(x, y, width, height)区域绘制高亮function highlightAnswer(pdfCanvas: HTMLCanvasElement, items: TextItem[]) {const ctx = pdfCanvas.getContext('2d');ctx.fillStyle = 'rgba(255, 255, 0, 0.3)';for (const item of items) {ctx.fillRect(item.x, item.y, item.width, item.height);}}
这种”所见即所得”的可视化反馈极大增强了系统的可信度和用户体验。一个典型的 10-K 申报文件(70-100 页)解析只需数秒。
第五章:高级集成与生产配置
5.1 浏览器端运行(WASM)
LiteParse 可以完全在浏览器中运行,适合前端文档预览场景:
// 从文件选择器获取PDF字节const file = fileInput.files[0];const arrayBuffer = await file.arrayBuffer();const uint8Array = new Uint8Array(arrayBuffer);// 直接解析(零磁盘I/O)const parser = new LiteParse({ outputFormat: "json" });const result = await parser.parse(uint8Array);
浏览器端使用时有几点要注意:OCR 首次运行需要从 CDN 下载训练数据(约 10MB);PDF.js worker 需要 HTTP 服务(file://不可用);Safari 17 以下版本需要ReadableStream polyfill。
5.2 自托管后端(liteparse-server)
如果不想在客户端部署解析逻辑,可以使用官方的自托管服务器:
# Docker启动docker run -p 5000:5000 runllama/liteparse-server# 调用APIcurl -X POST http://localhost:5000/parse -F "file=@document.pdf"# 输出JSON(带边界框)curl -X POST "http://localhost:5000/parse?text=false" -F "file=@doc.pdf"
该模式使任何语言或平台都能调用 LiteParse 能力,适合服务器端文档处理的场景。
5.3 自定义 OCR 后端
当内置 Tesseract 不够用时,可以接入外部 OCR 服务:
const parser = new LiteParse({ocr: {engine: 'external',endpoint: 'http://localhost:8000/ocr',language: 'eng'}});
OCR 服务只需实现标准接口:接收文件,返回{ results: [{ text, bbox: [x1,y1,x2,y2], confidence }] }格式的 JSON。这种设计让 OCR 层完全可替换。
5.4 离线部署配置
在内网环境,可以通过环境变量指定 Tesseract 语言包位置:
export TESSDATA_PREFIX=/path/to/tessdatalit parse document.pdf --ocr-language chi_sim
第六章:最佳实践与故障排除
6.1 性能优化技巧
|
|
|
|---|---|
|
|
--no-ocr
|
|
|
--num-workers
|
|
|
--target-pages "1-5" |
|
|
--dpi 200
|
|
|
--ocr-language "eng+chi_sim+fra" |
6.2 常见错误与解决方案
|
|
|
|
|---|---|---|
LibreOffice not found |
|
brew install libreoffice
apt install libreoffice |
Cannot convert DOCX |
|
|
|
|
|
tessdata目录并设置TESSDATA_PREFIX |
|
|
|
--target-pages分批解析 |
第七章:总结
本文从安装、CLI 使用到编程集成和生产部署,全面展示了 LiteParse 的能力边界。回顾关键内容:
-
安装快速:一行命令即可开始使用。 -
CLI 灵活:从基础解析到批量处理和截图生成, lit命令覆盖了绝大多数使用场景。 -
编程集成完善:TypeScript 和 Python 均有完整的官方支持,可以直接嵌入你的应用。 -
生产就绪:支持浏览器 WASM 运行、自托管 HTTP 服务、自定义 OCR 后端等多种部署模式。 -
Agent 原生设计:文本+边界框的输出格式,使 AI Agent 不仅能”读”文档,还能”定位”文档内容。
LiteParse 是一个”小而精”的工具——它不做所有事,但在”本地、快速、布局感知”这个象限,它做到了极致。下次当你需要为 AI 系统添加文档理解能力时,不妨从 LiteParse 开始。


无论身在何处
有我不再孤单孤单
长按识别二维码关注我们

夜雨聆风