在构建RAG知识库时,HTML和PPT是两类常见的"非标准格式"。本文系统调研了主流解析方案,从技术原理到工具选型,提供完整的解决方案。
一、背景与挑战
1.1 问题定义
当前主流文档解析引擎支持的格式各有差异:
| 格式类型 |
支持程度 |
| PDF |
成熟支持 |
| Image (PNG/JPG) |
OCR/VLM支持 |
| Markdown |
原生支持 |
| Word (DOCX) |
较好支持 |
| HTML |
需要预处理 |
| PPT/PPTX |
多模态处理复杂 |
核心挑战:如何将HTML和PPT这类"非标准RAG格式"转换为解析引擎可处理的格式,同时保留语义结构和视觉信息。
1.2 RAG系统对文档的要求
| 要求 |
说明 |
| 结构化 |
标题层级、列表、表格结构清晰 |
| 语义完整 |
上下文连贯,无信息丢失 |
| 可分块 |
支持合理切分用于检索 |
| 多模态支持 |
图表、公式、图像需正确处理 |
二、HTML解析技术方案
2.1 方案一:直接使用HTML(HtmlRAG)
论文来源:HtmlRAG (WWW 2025) - "HTML is Better Than Plain Text for Modeling Retrieved Knowledge in RAG Systems"
核心观点:HTML比纯文本更适合建模外部文档中的知识,因为LLM已具备强大的HTML理解能力。
优势
| 维度 |
说明 |
| 结构保留 |
标题层级、表格结构完整保留 |
| 语义丰富 |
HTML标签自带语义信息 |
| LLM适配 |
主流LLM对HTML理解能力强 |
技术流程
HTML Cleaning -> HTML Compression -> Block-Tree Pruning
| 步骤 |
方法 |
目的 |
| HTML Cleaning |
移除JS/CSS/注释 |
减少噪声 |
| HTML Compression |
压缩冗余标签 |
降低token |
| Block-Tree Pruning |
块树剪枝 |
最小化信息损失 |
2.2 方案二:HTML转Markdown
这是最通用的方案,兼容所有RAG引擎。以下是主流工具对比:
| 工具 |
语言 |
JS渲染 |
表格支持 |
推荐指数 |
| markdownify |
Python |
否 |
基础 |
强烈推荐 |
| html2text |
Python |
否 |
无 |
推荐 |
| Pandoc |
命令行 |
否 |
有 |
推荐 |
| Turndown |
JS/Node |
否 |
插件 |
推荐 |
推荐:markdownify 是Python生态中最成熟的方案,边缘情况处理好,适合大多数场景。
markdownify 示例
from markdownify import markdownify as md
html = "<article><h1>API文档</h1><p>发送POST请求</p></article>"
markdown = md(html, heading_style="ATX")
2.3 HTML方案对比总结
| 方案 |
复杂度 |
语义保留 |
RAG兼容性 |
推荐场景 |
| 直接HTML (HtmlRAG) |
中 |
高 |
中 |
大模型直接处理 |
| 转Markdown |
低 |
中高 |
高 |
通用RAG系统 |
| 转PDF |
中 |
中高 |
中高 |
需要视觉渲染 |
| 转Image |
中 |
中高 |
中 |
VLM处理 |
三、PPT解析技术方案
3.1 PPT的特殊性
| 特点 |
挑战 |
| 多模态混合 |
文本、图像、图表共存 |
| 布局复杂 |
非线性排版,语义依赖位置 |
| 动画效果 |
部分内容有动画逻辑 |
| 嵌入对象 |
可能有Excel图表、视频等 |
3.2 方案一:视觉语言模型直接处理(ColPali)
论文来源:ColPali (ICLR 2025) - "Efficient Document Retrieval with Vision Language Models"
核心思想:直接对文档页面图像进行嵌入,跳过传统OCR文本提取。视觉信息完整保留。
相比传统OCR的优势
| 维度 |
传统OCR |
ColPali |
| 流程 |
冗长脆弱 |
简单直接 |
| 视觉信息 |
丢失 |
完整保留 |
| 处理速度 |
较慢 |
显著更快 |
3.3 方案二:PPT转Markdown(Marker)
工具:Marker - 支持PDF/图像/PPTX转Markdown
# 安装
pip install marker-pdf[full]
# 转换PPT
marker_single /path/to/presentation.pptx --output_format markdown
输出格式对比
| 格式 |
说明 |
RAG适用性 |
| Markdown |
默认输出,含图片链接、表格、公式 |
强烈推荐 |
| JSON |
树状结构,含层级块信息、坐标 |
推荐 |
| Chunks |
扁平化列表,专为RAG优化 |
强烈推荐 |
3.4 PPT方案对比总结
| 方案 |
复杂度 |
视觉保留 |
准确率 |
推荐场景 |
| SlideRAG |
高 |
高 |
高 |
专业PPT问答系统 |
| ColPali |
中 |
高 |
中高 |
视觉内容丰富的PPT |
| Marker |
低 |
中 |
中高 |
通用转换场景 |
| LlamaParse |
中 |
中高 |
高 |
企业级生产环境 |
四、推荐方案总结
| 文档类型 |
推荐方案 |
理由 |
| HTML |
markdownify + 语义分块 |
简单高效,兼容性好 |
| PPT(简单) |
Marker转Markdown |
成本低,速度快 |
| PPT(复杂) |
ColPali/SlideRAG |
视觉信息保留完整 |
| 混合场景 |
Unstructured统一处理 |
接口一致,维护简单 |
五、实施建议
5.1 技术演进路线
阶段一:快速验证
HTML -> markdownify
PPT -> Marker
阶段二:效果优化
HTML -> HtmlRAG(保留HTML)
PPT -> ColPali(视觉嵌入)
阶段三:专业深化
根据业务场景定制化处理流程
引入多模态检索增强
5.2 注意事项
编码问题:HTML可能存在编码不一致,需统一处理
动态内容:JS渲染的内容需要使用无头浏览器提取
大文件处理:PPT可能很大,需要分批处理
版本兼容:PPT不同版本格式有差异,需测试
参考资料:HtmlRAG (WWW 2025)、ColPali (ICLR 2025)、SlideRAG、Unstructured.io、Marker Documentation