为什么需要多模态处理?
真实世界的数据不只有文本。PDF合同、Excel报表、PPT演示、产品图片、客服录音、监控视频——企业80%的数据是非结构化的。AI如果不能处理这些数据,就无法真正融入工作流。
多模态AI的目标:让模型能同时理解文本、图像、音频、视频,并在它们之间建立关联。例如:“这张图表显示Q3销售额下降,请分析原因并给出建议”——模型需要同时理解图表(图像)和文字指令(文本)。
常见格式与处理方法:
| 格式 | 挑战 | 处理方法 | 工具 |
|---|---|---|---|
| 复杂排版、表格、图片混合 | OCR + 版面分析 + 结构化提取 | PyMuPDF, pdfplumber, Marker | |
| Word | 样式复杂、修订记录、批注 | 提取纯文本 + 保留标题层级 | python-docx, mammoth |
| Excel | 多sheet、公式、图表 | 转CSV/JSON + 保留公式 | pandas, openpyxl |
| 图片 | 分辨率、格式多样、内容复杂 | OCR + 视觉理解模型 | PaddleOCR, GPT-4V |
| 音频 | 方言、噪音、多说话人 | 语音识别(ASR) + 说话人分离 | Whisper, FunASR |
| 视频 | 时序信息、关键帧、字幕 | 抽帧 + 关键帧理解 + ASR | ffmpeg, Video-LLaMA |
代码实战:PDF解析与结构化
代码实战:图片理解与OCR
例子:构建文档处理Pipeline
场景:构建一个企业知识库,支持PDF/Word/Excel/图片上传。
Pipeline设计:
上传文件 → 格式检测 → 解析 → 结构化 → Embedding → 存入向量库 1. 格式检测:根据文件扩展名和MIME类型判断 .pdf → PDF解析器 .docx → Word解析器 .xlsx → Excel解析器 .jpg/.png → 图片解析器 2. 解析: PDF: Marker → Markdown Word: python-docx → 纯文本 + 标题层级 Excel: pandas → CSV/JSON 图片: PaddleOCR → 文字 + GPT-4V → 图片描述 3. 结构化: 提取标题、段落、表格、图片说明 为每段生成摘要 4. Embedding: 文本用text-embedding-3-small 图片描述也用文本Embedding 5. 存入向量库: Chroma / Milvus / Pinecone 6. 检索增强: 用户提问 → 检索相关文档片段 → LLM回答
性能指标:
| 指标 | 目标 | 优化方法 |
|---|---|---|
| 解析准确率 | >95% | 多解析器对比,选最优结果 |
| 处理速度 | <1秒/页 | 并行处理、缓存、预处理 |
| 存储成本 | 低 | Embedding压缩、去重 |
| 检索准确率 | >90% | 混合检索、重排序 |
练习:多模态处理
Q1:为什么PDF是最难处理的格式之一?解析扫描版PDF和文本版PDF有什么区别?
Q2:OCR和视觉理解模型(如GPT-4V)有什么区别?什么时候用OCR,什么时候用视觉理解?
Q3:处理Excel文件时,如何保留公式和多个sheet的关系?
Q4:为什么需要把非结构化数据转换成结构化数据(如Markdown、JSON)再存入向量库?
Q5:设计一个处理医疗报告(PDF+图片)的Pipeline。需要考虑哪些特殊因素?
查看答案
A1:PDF是固定版式格式,不像Word有结构化标记。解析扫描版PDF需要OCR(先识别文字),解析文本版PDF直接提取文字。扫描版更慢、更贵、准确率更低。
A2:OCR只提取文字,快、便宜、精确。视觉理解模型能理解图片内容(如识别图表趋势、场景描述),慢、贵、更全面。发票、合同用OCR;图表分析、场景理解用视觉模型。
A3:用openpyxl读取Excel时,可以保存公式字符串(非计算结果),保留sheet名称和关系。需要计算时,可用pandas读取计算后的值,或xlwings调用Excel引擎计算。
A4:非结构化数据(如PDF混合格式)无法直接Embedding。转换成结构化数据后,可以:1.统一格式便于检索;2.保留标题层级便于上下文;3.提取关键信息(表格、公式)便于理解;4.去重和分块。
A5:特殊因素:1.隐私合规(HIPAA等,数据脱敏);2.医学术语识别(专业OCR模型);3.手写文字(医生手写处方);4.图片标注(X光、CT需要专业模型分析);5.结构化提取(提取诊断、用药、剂量等关键字段);6.审计追踪(谁访问了什么数据)。