harshankur/officeParser

A robust, strictly-typed Node.js and Browser library for parsing office files into a rich Abstract Syntax Tree (AST) and generating high-fidelity output in multiple formats. Parses: docx · pptx · xlsx · odt · odp · ods · pdf · rtf · csv · md · html. Generates: Markdown · HTML · CSV · RTF · PDF · Plain Text · RAG Chunks

概览

officeParser 是一个与 Node 兼容的 库,能够读取许多常见的办公文档格式(如 DOCX、PPTX、XLSX、PDF 等),并将其转换为 严格类型的抽象语法树 (AST)。相同的 AST 随后可以写回多种目标格式——DOCX、ODT、LaTeX、Markdown、HTML、CSV、RTF、PDF、EPUB 等,包括用于检索增强生成 (RAG) 流水线的 RAG-ready chunks。

该项目同时提供 程序化 API(用于 JavaScript/TypeScript 代码)以及 CLI (npx officeparser …),以便在命令行进行快速转换。浏览器端的可视化工具让您可以上传文件、查看生成的 AST、调整选项并即时预览输出结果。


主要功能

功能 说明
多格式解析 读取 DOCX、PPTX、XLSX、ODT/ODP/ODS/ODG、PDF、RTF、CSV、Markdown、HTML、EPUB、LaTeX(包含 Overleaf zip 项目)并产生统一的 AST。
多格式生成 从 AST 中,您可以输出 DOCX、ODT、LaTeX、Markdown、HTML、CSV、RTF、PDF(通过 pdf-lib 或 Puppeteer 原生支持)、EPUB、纯文本或 RAG-chunks。
原生 PDF 引擎 无需无头浏览器——pdf-lib 可直接在 Node 或浏览器中创建 PDF 字节。
密码处理 单一 password/onPassword 选项适用于加密的 PDF、OOXML 和 ODF 文件。
模板 / 邮件合并 OfficeTemplate.render 可填充 DOCX/ODT 模板中的 {{placeholders}},并支持批量渲染。
OCR 集成 可选的基于 Tesseract 的 OCR,用于提取的图像(适用于扫描的 PDF 或 PPTX 幻灯片)。
RAG 分块 内置的 chunks 输出可将文档分割为适合检索的片段,并可配置大小与重叠度。
细致配置 数百个 CLI 标志 / TypeScript 选项可控制标题检测、列布局、颜色提取、图像处理、LaTeX 文档类等。
浏览器可视化工具 交互式网页 UI (/officeParser/) 显示 AST 树状结构,让您编辑配置并即时预览生成的文档。
类型安全 API 使用 TypeScript 编写;AST 与所有公开函数皆有严格的类型定义。

典型使用场景

场景 如何使用 officeParser
提取纯文本以进行索引 await officeParser.parseOffice('file.pdf'); 然后 await ast.to('text'); – 文本会保留原始布局(列、表格、标题)。
将 Word 文档转换为 Markdown CLI: npx officeparser report.docx --to=md --output=report.md
或程序化: await OfficeConverter.convert('report.docx', 'md');
无需无头浏览器从 DOCX 生成 PDF 设置 pdfConfig.engine: 'native' 并调用 ast.to('pdf')。
创建邮件合并批次 加载 DOCX 模板,调用 OfficeTemplate.render([{name:'Alice'}, {name:'Bob'}]) 以产生单独文档。
将文档输入至 RAG 流水线 npx officeparser big_report.pdf --to=chunks 或 OfficeConverter.convert(file, 'chunks', {chunkingConfig:{maxTokens:500}})。
处理扫描的 PDF 启用 --ocr(或在代码中设置 ocr: true)并搭配 extractAttachments – OCR 会在每个提取的图像上运行,识别出的文本将成为 AST 的一部分。

入门指南

# 安装库
npm i officeparser   # 需要 Node >= 22.13

快速程序化示例 (Node)

import { OfficeParser, OfficeConverter } from 'officeparser';

// 解析 DOCX 文件
const ast = await OfficeParser.parseOffice('proposal.docx', {
  extractAttachments: true,
  ocr: true,               // 对任何嵌入图像运行 OCR
});

// 将相同文档转换为 HTML
const html = await ast.to('html');
console.log(html.value);

// 或进行一步转换
await OfficeConverter.convert('proposal.docx', 'pdf', {
  pdfConfig: { engine: 'native' },
  output: 'proposal.pdf',
});

CLI 单行指令

npx officeparser presentation.pptx \
  --ocr --extractAttachments \
  --to=html --output=preview.html

限制与已知问题

  • 非常大的 PDF 可能会达到独立 pdf.js 进程默认的内存限制;如有需要,请增加 pdfParserConfig.processMemoryMb。
  • 文本格式(MD、HTML、CSV、TEX)在作为原始缓冲区提供时需要明确的 fileType,因为它们缺乏魔术字节。
  • 原生 PDF 引擎不支持高级的基于 CSS 的布局——对于复杂样式,请改用 html (Puppeteer) 引擎。
  • OCR 非常消耗 CPU,在大型文档上可能会变慢;可通过 AbortSignal 取消。

许可

MIT – 可免费进行商业与个人使用。


officeParser 旨在成为开发人员的一站式解决方案,用于摄取、转换或生成办公风格的文档,特别是当这些文档需要输入至下游的 AI 或 RAG 流水线时。

相关

  • 项目
  • 项目
  • Dispatch
  • Dispatch
  • 项目