现实世界中的企业知识,绝大多数并不以规整的纯文本形式存在。合同扫描件、产品 PPT、培训录屏、会议录音……这些文件格式多样,内容提取远比处理 txt 文档复杂。RAG 系统要想覆盖真实业务场景,必须具备处理这些非结构化数据的能力——将不同格式的文件统一转换为可检索、可索引的文本。
下面逐一介绍常见格式的处理方法、工具推荐和实用经验。
1. PDF 文档
PDF 是办公场景中最常见的格式,但也是“坑”最多的一种。表面上看起来是文字内容,实际可能分两大类:
- 文字型 PDF:文字本身存储在文件中,可以直接读取。
- 扫描型 PDF:本质上是纸制文档的照片,文字是图像的一部分,需要 OCR(光学字符识别)。
处理流程:
- 判断类型:用工具(如 PyPDF2、pdfplumber)尝试提取文字。如果提取出来是空或乱码,基本可判定为扫描件。
- 文字型提取:推荐使用
pdfplumber(对表格支持较好)或PyMuPDF(速度快)。提取后注意清理页眉页脚、多余换行。 - 扫描型处理:先用 OCR 引擎识别图片中的文字。开源方案可选
Tesseract,中文需额外安装中文语言包;商用云服务(如百度 OCR、阿里云 OCR)准确率更高,适合大批量处理。 - 混合型:部分页面含文字,部分含图片。需要逐页判断并按需组合方法。
实用建议:如果文档中表格是关键信息,提取后建议保留表格结构(如用 Markdown 表格或 CSV 格式),这样后续切块时上下文更完整,检索时也更易命中具体数值。
2. Word 文档
相比 PDF,Word(.docx)文档解析难度低很多。现代 .docx 本质是 xml 结构,推荐用 python-docx 库逐段读取。
注意事项:
- 提取时保留层级:文档中的标题(Heading 1、Heading 2)携带了天然的语义结构。在转文本时加上标题标记(如“## 标题文本”),有助于后续切块时保持语义完整。
- 处理表格:
python-docx支持读取表格,但需要单独处理,将单元格内容拼接成可读文本。 - 旧版 .doc:如果是早期的 .doc 格式,可先通过工具(如 LibreOffice)转为 .docx,或用
textract等封装库。
实用脚本思路:遍历段落和表格,按顺序输出,标题行前添 #,正文直接拼接。这样生成的文本自然携带了结构信息。
3. PPT 演示文稿
PPT(.pptx)的特点是图文并茂,文字散布在幻灯片的多个形状(文本框、占位符、表格)中。提取核心任务是:按幻灯片顺序,收集所有可见的文字内容。
使用工具:python-pptx。
提取要点:
- 遍历每张幻灯片的
shapes,判断是否含text_frame,是则提取文本。 - 对于表格,单独提取并按行整理。
- 幻灯片之间可以插入分页标记(如
--- Slide N ---),防止上下页文字被错误地拼接在一起。 - 图片处理:如果 PPT 中的截图、流程图包含重要文字信息,需要额外导出这些图片并走 OCR 流程。这个环节容易被忽视,但现实中许多技术方案图和截图恰恰是最关键的说明材料。
4. 图片
图片本身无法直接用于文本检索,必须先行提取其中的文字。这一过程通常称为 OCR。
常见场景:
- 拍照的合同、发票、证件;
- 嵌在 PDF 或 PPT 中的图片;
- 业务流程截图、UI 界面说明。
工具选择:
- 本地方案:
Tesseract(开源)+ 预处理(灰度化、二值化、去噪)提升准确率。适合小批量、对速度要求不高的场景。 - 云端 API:百度智能云、阿里云、腾讯云都提供现成的 OCR 服务,对印刷体和手写体中文支持良好,识别准确率高,适合大批量处理。成本按调用次数计费。
- 视觉大模型:如果图片中含有表格、复杂排版或需要理解图像整体布局,可使用多模态模型(如 GPT-4o、Qwen-VL),直接描述图片内容或提取文字,再将其作为文本存入知识库。
实用叮嘱:无论用哪种方法,对 OCR 输出结果做一遍基本清洗(去除全角半角噪声、纠正常见错字)能显著提升后续检索的准确度。
5. 音视频转写
对于会议录音、培训视频、产品讲解录音等音频内容,需要先转写成文本,才能纳入 RAG 知识库。
处理链路:
- 语音转文字(ASR,自动语音识别)
- 开源方案:
Whisper(OpenAI 开源,支持多语种,本地部署可用faster-whisper加速)。 - 云服务:各家云厂商的语音识别 API,支持实时转写和录音文件识别,中文效果较好。
- 选择时考虑因素:是否支持说话人分离(识别谁说了什么)、专业术语识别准确率、成本。
- 转写文本后处理
- 分句和段落切分:音频转写往往是无标点长文,需要后加标点或按语义断句。
- 说话人标注:如有说话人分离需求,保留发言者标识有助于后续追溯信息来源。
- 去语气词:清理“嗯、啊、这个”等口语化内容,提升文本可读性(但要注意别过度清洗影响原意)。
- 视频的额外处理
- 视频中除了音频,还可能存在演示时的屏幕录制画面或展示的图表。此时理想方式是将音频转写与视频关键帧的文字提取(OCR)结合,形成更丰富的知识表示。
- 若视频仅是以语音为主(如内部培训),转写文本已经足够。
实用建议:音视频转写后,建议在切块时保留时间戳元数据(如“15:30-16:42”),以便在回答中引用时可以追溯到原始音视频的精确位置,方便复查。
小结
非结构化数据的接入是 RAG 从“玩具 demo”走向“生产可用”的必经之路。本质工作是将一切信息载体统一为结构化、可索引的文本。核心原则是:保留原始结构信息、注意图文关联、做好后处理清洗。在实际工程中,通常会搭建一个预处理管道,根据文件类型自动路由到不同解析器,最终输出格式统一的清洗后文本进入切块和向量化流程。这一层处理得越扎实,后续检索和生成的质量就越有保障。