Skip to content
LiteParse 文档版本 跟随上游 源快照 e2e88e4a 更新于 2026-10-16

LiteParse 提供一个完全运行在浏览器里的 WebAssembly 包 —— 不需要服务端,也不发起云端调用。它支持 PDF 解析,以及用 JavaScript 实现的自定义 OCR 引擎。

安装

终端窗口

npm install @llamaindex/liteparse-wasm

快速开始

import init, { LiteParse } from "@llamaindex/liteparse-wasm";

// Load the WASM module
await init();

const parser = new LiteParse({
  ocrEnabled: false,
  outputFormat: "json",
});

// data is a Uint8Array (e.g. from <input type="file"> or fetch)
const bytes = new Uint8Array(await file.arrayBuffer());
const result = await parser.parse(bytes);

console.log(result.text);
console.log(result.pages[0]);

浏览器里能用的是什么

  • 从 Uint8Array 输入解析 PDF(例如用 file.arrayBuffer() 从文件选择器取到字节)
  • 自定义 OCR,通过 ocrEngine 回调接口(见下文)
  • 文本、JSON 与 markdown 三种输出格式
  • 文档复杂度,用 parser.isComplex(bytes) —— 见复杂度指南
  • 各项抽取选项 —— 批注、表单字段、结构树、矢量图形等,全部可用。见抽取选项

浏览器里用不了的是什么

  • 文件路径输入 —— 请改传 Uint8Array
  • DOCX/XLSX/PPTX 转换 —— 需要 LibreOffice,而浏览器里没有它
  • 内置 Tesseract 或 HTTP OCR —— 请改用自定义的 ocrEngine 接口
  • 页面截图 —— WASM 构建不提供
  • imageOutputDir —— 没有可写入的文件系统。请改用 extractImages,从结果里读字节

浏览器里的 OCR

原生 Tesseract 与 HTTP OCR 后端在 WASM 下都不可用。要用 OCR,请传入一个带 recognize 方法的自定义 ocrEngine 对象:

const parser = new LiteParse({
  ocrEnabled: true,
  ocrLanguage: "eng",
  // Use more than 1 only if the engine supports concurrent jobs.
  numWorkers: 2,
  ocrEngine: {
    /**
     * @param imageData PNG-encoded image bytes
     * @param width  rendered page width in pixels
     * @param height rendered page height in pixels
     * @param language e.g. "eng"
     * @returns array of { text, bbox: [x1, y1, x2, y2], confidence }
     */
    async recognize(imageData, width, height, language) {
      // e.g. call a Web Worker wrapping tesseract.js, or a remote OCR service
      return [
        { text: "Hello", bbox: [10, 20, 80, 40], confidence: 0.98 },
      ];
    },
  },
});

这让你可以接入任何 OCR 实现 —— 跑在 Web Worker 里的 tesseract.js、某个云端 OCR API,或任何能返回带边界框文字的东西。

LiteParse 最多同时保持 numWorkers 次 recognize 调用在进行中。某次调用结束后,LiteParse 不会等其余调用,而是直接准备并启动下一页。OCR 引擎可以把这些调用派发给 Web Worker 池,或并发的 HTTP 请求。任务乱序完成时,结果仍然归属它们各自的来源页。进行中的调用最多会在内存里持有 numWorkers 张已渲染页面的位图,因此高 DPI 文档要把该值设小一些。

在 WASM 下,PDF 解析与渲染仍是单线程的。numWorkers 默认为 1,用于限制并发 OCR 调用数。LiteParse 自己不会创建 Web Worker。若要并行处理 OCR 任务,请提供一个支持并发作业的引擎。

配置项

全部可选,命名采用 camelCase:

选项类型默认值说明
ocrLanguagestring"eng"传给 OCR 引擎的语言代码
ocrEnabledbooleanfalse对文字稀疏的页运行 OCR。WASM 下默认关闭 —— 没有内置引擎,所以没有 ocrEngine 时它什么都不做
ocrEngineobject—自定义的 JS 侧 OCR 引擎(见上文)
numWorkersnumber1最大并发 OCR 调用数
ocrFailureFatalbooleantrue为 false 时,OCR 失败返回部分结果而不是抛错
ocrHedgeDelaysMsnumber[][]针对远程 ocrEngine 的请求对冲时间表
maxPagesnumber1000到该页数后停止
targetPagesstring—例如 "1-5,10,15-20"
dpinumber150OCR 用的渲染 DPI
outputFormat"json" | "text" | "markdown""json"result.text 的形态。也接受 "md"。传其他值会抛错
preserveVerySmallTextbooleanfalse保留通常会被过滤掉的极小文字
skipDiagonalTextbooleanfalse丢弃与最近直角偏离超过 2° 的文字
cropBox{ top, right, bottom, left }—从每页四边各裁掉的比例
pageOrientationCorrections{ page, angle }[]—对列出的页(从 1 开始)按其内容在视口中呈现的顺时针 angle(0/90/180/270)做反向旋转
passwordstring—受保护 PDF 的密码
quietbooleanfalse抑制进度日志
imageMode"off" | "placeholder" | "embed""placeholder"图片引用在 markdown 里的呈现方式。off 也可写作 "none"
extractLinksbooleantrue在 markdown 里渲染 [text](url)
keepHeadersFootersbooleanfalse在 markdown 里保留滚动的页眉/页脚
emitWordBoxesbooleanfalse为每个文字项输出逐词的子框

抽取选项里的 extractImages、extractVectorGraphics、extractAnnotations、extractFormFields、extractStructureTree、extractContentBounds、extractXfaPackets、extractTextMetadata、includeComplexity 与 renderFormFields 在这里同样可用,camelCase 命名一致,默认值也都是 false。

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。