乐于分享
好东西不私藏

RAG系统80%的瓶颈在文档解析,LiteParse给出了一个Rust答案

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
输出结构化 JSON(带边界框)
lit parse doc.pdf --format json
--target-pages
只解析指定页面
--target-pages "1-5,10"
--no-ocr
禁用 OCR(仅纯文本 PDF)
--no-ocr
--ocr-language
指定 OCR 语言
--ocr-language chi_sim
--dpi
渲染分辨率
--dpi 200
--num-workers
OCR 并发线程数
--num-workers 4

第三章:编程集成——TypeScript/Python 示例

CLI 是快速上手的入口,编程集成才是构建应用的核心。

3.1 TypeScript/Node.js 集成

import { LiteParse } from '@llamaindex/liteparse';// 默认配置,使用内置Tesseract OCRconst parser = new LiteParse({  outputFormat"json",   // 输出JSON以获得边界框  ocrEnabledtrue,       // 启用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 {  textstring;  xnumber;  ynumber;  widthnumber;  heightnumber;  pageNumnumber;}export async function ingestPdf(filePathstringfilenamestring) {  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((itemany) => ({      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, null2));  return pages;}

4.2 检索与答案定位

function searchPages(querystringpagesany[]) {  const terms = query.toLowerCase().split(/\s+/);  const results = [];  for (const page of pages) {    let score = 0;    const matchedItemsTextItem[] = [];    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 性能优化技巧

场景
推荐配置
文本 PDF(无扫描)
--no-ocr

 可提速 5-10 倍
大文档批处理
--num-workers

 设为 CPU 核心数-1
只需文本前几页
--target-pages "1-5"
高精度扫描件
--dpi 200

 提升 OCR 准确率
多语言文档
--ocr-language "eng+chi_sim+fra"

6.2 常见错误与解决方案

错误
原因
解决方案
LibreOffice not found
系统缺少 Office 转换工具
brew install libreoffice

 / apt install libreoffice
Cannot convert DOCX
LibreOffice 版本不兼容
升级到 6.0+版本
OCR 语言包下载失败
首次使用 Tesseract 需联网
离线部署:预先下载tessdata目录并设置TESSDATA_PREFIX
内存不足
超大 PDF 一次性加载
使用--target-pages分批解析

第七章:总结

本文从安装、CLI 使用到编程集成和生产部署,全面展示了 LiteParse 的能力边界。回顾关键内容:

  • 安装快速:一行命令即可开始使用。
  • CLI 灵活:从基础解析到批量处理和截图生成,lit命令覆盖了绝大多数使用场景。
  • 编程集成完善:TypeScript 和 Python 均有完整的官方支持,可以直接嵌入你的应用。
  • 生产就绪:支持浏览器 WASM 运行、自托管 HTTP 服务、自定义 OCR 后端等多种部署模式。
  • Agent 原生设计:文本+边界框的输出格式,使 AI Agent 不仅能”读”文档,还能”定位”文档内容。

LiteParse 是一个”小而精”的工具——它不做所有事,但在”本地、快速、布局感知”这个象限,它做到了极致。下次当你需要为 AI 系统添加文档理解能力时,不妨从 LiteParse 开始。

无论身在何处

有我不再孤单孤单

长按识别二维码关注我们