领域LLM九讲——第3讲 从多模态数据分析chunk方法——多模态数据分类

领域LLM九讲——第3讲 从多模态数据分析chunk方法——多模态数据分类

1.1 技术背景

在多模态场景下,Chunk 技术不仅对文本处理至关重要,还需要针对图像、音频和视频等非文本信息进行专门设计,以便让 LLM 更好地理解和检索不同模态的数据。概览如下:多模态分块可以分为文本导向分块(对 ASR/文档文本进行常规分块)、图像区域分块(对大幅图像或图表进行区域化处理)、视频语义分块(基于场景或镜头检测进行切片)、音频时段分块(基于 ASR+VAD 分段或固定时间窗口)、以及混合模态分块(保证图像/文本/表格等信息在同一 Chunk 中)。这些方法既能保留局部语义一致性,又能提高检索召回与推理效率。下面按不同模态依次展开讨论,并在最后以表格形式汇总各策略的特点、典型工具与应用场景。

1.2 多模态数据分类

  1. PDF/Word/Excel/PowerPoint等办公文档:常见于企业报告、合同、技术手册等,需要从中提取文本及表格信息用于自动问答或摘要。
  2. 图片(JPEG/PNG/TIFF等):通常出现于产品说明、发票扫描件、科研论文中的图表与示意图等,需要先做 OCR,再将文字与图像特征结合。
  3. 音频(MP3/WAV等):如会议录音、访谈或在线课程音轨,需通过 ASR(自动语音识别)将音频转为文本后,再进一步处理。
  4. 视频(MP4/AVI等):常见于会议视频、产品演示、安防监控录像等,需要抽取音频转写与关键帧图像,并结合字幕或图像内容进行理解。
  5. CSV/JSON/XML/HTML 等结构化文本:如日志文件、数据报表、网页抓取内容,用于快速加载表格数据或半结构化信息。
    6
    在这里插入图片描述

1.2.1 PDF

场景示例:

  • 企业合同与报告自动化:法律团队需要对合同条款进行问答,或财务团队需要从年报 PDF 中提取财务指标。
  • 科研论文全文索引与检索:研究人员将大量 PDF 格式的论文导入知识库,对其进行全文检索与摘要。
  • 发票/凭证 OCR 后归档:财务系统从扫描的发票 PDF 中提取表格与文字,实现自动化归档。
    API:
1.2.1.1 PyPDF2
  • 用途:加载 PDF,按页提取纯文本。
  • 示例:
    from PyPDF2 import PdfReader
    
    
    reader = PdfReader("example.pdf")
    for page in reader.pages:
        text = page.extract_text()
    	# 执行后续文本处理
    
    
1.2.1.2 pdfplumber
  • 用途:在 PyPDF2 基础上可精细提取文字、表格与图像位置信息,适合需要解析表格时使用。
  • 示例:
    import pdfplumber
    
    
    with pdfplumber.open("example.pdf") as pdf:
    	for page in pdf.pages:
        text = page.extract_text()
        tables = page.extract_tables()
        # 处理 text 与 tables
    

1.2.2 DOC(Word)

场景示例:

  • 企业报告与会议纪要:从 Word 格式的项目报告或开会纪要中提取要点,供 LLM 做后续摘要和问答。
  • 法律文书自动化审查:法务团队需要分析 Word 文档中的条款、提取关键段落做自动合规检查。 模板化合同批量生成与解析:从已生成的
  • Word 合同模板中提取变量并填充、校验。

API:

1.2.2.1 python-docx
  • 用途:读取/写入 .docx 文档,可按段落或表格单元格提取文字。
  • 示例:
    from docx import Document
    doc = Document("example.docx")
    for para in doc.paragraphs:
        text = para.text
        # 进一步处理
    for table in doc.tables:
        for row in table.rows:
    	row_texts = [cell.text for cell in row.cells]
    
    
1.2.2.2 docx-parser
  • 用途:基于 python-docx,提供带样式/图片的更细粒度内容解析。
  • 示例:
    from docx_parser import DocumentParser
    doc = DocumentParser("example.docx")
    for _type, item in doc.parse():
        # _type 可能为 'paragraph', 'multipart', 'table'
        # item 为对应内容
    
    

1.2.3 PPTX

场景示例:

  • 演示文稿内容自动摘要与问答:市场部将 pptx 演示文稿传给 LLM,自动生成会议要点或答疑。
  • 幻灯片批量文本/图片提取:教育平台从教与学 PPT 中抽取文字与配图制成教材或索引。
  • 品牌素材/封面图片识别:视觉团队需要从 PPT 中提取产品图片或品牌 logo 做后续分析。
    API:
1.2.3.1 pptx
  • 用途:官方库,可读取/创建 .pptx,按幻灯片、形状级别访问文字与图片。
  • 示例:
    from pptx import Presentation
    
    
    prs = Presentation("example.pptx")
    for slide in prs.slides:
        for shape in slide.shapes:
    	if hasattr(shape, "text"):
    	    text = shape.text
    	if shape.shape_type == 13:  # 13 对应图片类型(MSO_SHAPE.PICTURE)
    	    img = shape.image
    	    # img.blob 可获取二进制数据
    
1.2.3.2 pptx2txt2
  • 用途:快速提取每张幻灯片的文字与备注,支持图片导出。
  • 示例:
    import pptx2txt2
    
    
    text_all = pptx2txt2.extract_text("example.pptx")
    text_per_slide = pptx2txt2.extract_text_per_slide("example.pptx")
    image_paths = pptx2txt2.extract_images("example.pptx", "./images_out")
    
    

1.2.4 xlsx/csv

场景示例:

  • 财务报表自动化分析:财务团队将季度报表以 Excel 上传,LLM 从中提取“营业收入”“净利润”等关键数值后生成自然语言分析报告。
  • 用户行为日志/CSV 数据处理:运营/数据团队把导出的用户行为 CSV 文件上传,LLM 读取表格后提供数据摘要或可视化建议。
  • 机器翻译前的平行文本表:翻译项目组提供 CSV 格式的平行语料,LLM 读取后做自动翻译或句对齐。

API:

1.2.4.1 pandas
  • 用途:读取 CSV/Excel,支持 read_csv()、read_excel(),提供 DataFrame 进行后续清洗与分析。
  • 示例:
    import pandas as pd
    # 读取 CSV
    df_csv = pd.read_csv("example.csv")
    # 读取 Excel(支持 .xls/.xlsx)
    df_xlsx = pd.read_excel("example.xlsx", sheet_name="Sheet1")
    
1.2.4.2 csv
  • 用途:基于 python-docx,提供带样式/图片的更细粒度内容解析。
  • 示例:
    import csv
    
    with open("example.csv", newline="", encoding="utf-8") as f:
        reader = csv.reader(f)
        for row in reader:
    	# row 为列表形式
    
1.2.4.3 openpyxl
  • 用途:直接读取/写入 .xlsx 文件,支持复杂操作(样式、图表)。
  • 示例:
    from openpyxl import load_workbook
    
    wb = load_workbook("example.xlsx")
    ws = wb["Sheet1"]
    for row in ws.iter_rows(values_only=True):
        # row 为元组形式
    
    

1.2.5 图像(JPEG/PNG/TIFF 等)

场景示例:

  • 扫描文档 OCR 输入:系统将发票或合同扫描为图片,LLM 需要结合图像 OCR 结果与整体文档结构做解析。
  • 产品照片与 SKU 对应:电商平台上传商品图片,LLM 自动识别图中文字(如标签、品牌),并将其与 SKU 信息关联。
  • 科研图片分析:自动化科研平台上传显微镜图,LLM 调用图像处理后结合文字分析生成报告。

API:

1.2.5.1 Pillow
  • 用途:读取/写入主流图像格式,进行基本图像操作(裁剪、缩放、格式转换)。
  • 示例:
    from PIL import Image
    img = Image.open("example.jpg")  # 自动根据文件头识别格式
    width, height = img.size
    img_resized = img.resize((width//2, height//2))
    img_resized.save("resized.png")
    
    
1.2.5.2 OpenCV (cv2)
  • 用途:功能全面的计算机视觉库,支持读取图像/视频、图像滤波、特征检测、目标识别、相机标定等。
  • 示例:
    import cv2
    img = cv2.imread("example.png")  # BGR 格式
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imwrite("gray_example.png", gray)
    
    
1.2.5.3 scikit-image
  • 用途:科学图像处理库,基于 NumPy/SciPy,提供分割、变换、滤波、特征提取等算法。
  • 示例:
    from skimage import io, filters
    img = io.imread("example.tiff", as_gray=True)
    edges = filters.sobel(img)
    io.imsave("edges.png", edges)
    
    

1.2.6 音频(MP3/WAV 等)

场景示例:

  • 会议/访谈录音转写:客服或研发团队将 Zoom/Teams 录音上传,LLM 先通过 ASR 转写,再结合上下文生成会议纪要或问答。

  • 播客/音频日志分析:内容运营团队将播客音频文件提供给 LLM,做自动要点生成与情感分析。

  • 音频质量检测与特征提取:音乐平台将音频文件传给 LLM,提取 MFCC、音高、节奏等特征用于推荐系统。

API:

1.2.6.1 librosa
  • 用途:音频与音乐信号分析,支持读取音频、时频分析、特征提取(MFCC、谱图、色度等)。
  • 示例:
    import librosa
    y, sr = librosa.load("example.wav", sr=None)  # sr=None 保持原采样率
    mel_spec = librosa.feature.melspectrogram(y=y, sr=sr)
    
    
    
1.2.6.2 SpeechRecognition
  • 用途:统一接口调用多种 ASR 引擎(Google Web Speech API、CMU Sphinx、Whisper 等)进行语音转文本。
  • 示例:
	import speech_recognition as sr
	r = sr.Recognizer()
	with sr.AudioFile("example.wav") as source:
	    audio_data = r.record(source)
	    text = r.recognize_google(audio_data, language="zh-CN")

1.2.6.3 PyDub
  • 用途:基于 FFmpeg,便捷地进行音频剪辑、拼接、淡入淡出、格式转换等操作。
  • 示例:
    from pydub import AudioSegment
    sound = AudioSegment.from_file("example.mp3", format="mp3")
    sound.export("example.wav", format="wav")
    
    
    
1.2.6.4 PyAudio
  • 用途:PortAudio 的 Python 绑定,支持实时录音与播放,适用于实时 ASR 或声卡输入场景。
  • 示例:
    import pyaudio
    import wave
    
    CHUNK = 1024
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 16000
    RECORD_SECONDS = 5
    WAVE_OUTPUT_FILENAME = "output.wav"
    
    p = pyaudio.PyAudio()
    stream = p.open(format=FORMAT,
    	        channels=CHANNELS,
    	        rate=RATE,
    	        input=True,
    	        frames_per_buffer=CHUNK)
    frames = []
    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
        data = stream.read(CHUNK)
        frames.append(data)
    stream.stop_stream()
    stream.close()
    p.terminate()
    
    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()
    

1.2.7 视频(MP4/AVI 等)

场景示例:

  • 会议录像自动分段与纪要:研发团队将公司全员会议视频提交,LLM 抽取逐字转写(ASR)+ 关键帧图像,自动生成会议纪要与 PPT 要点。

  • 产品演示视频内容理解:市场团队上传产品 Demo 视频,LLM 从视频中抽帧并提取字幕/语音信息,生成要点文字稿。

  • 安防监控整体事件检索:安全系统将监控原始视频送入 LLM,先抽取音轨转写与关键帧图像,配合图像目标检测,实现视频内容检索。

API:

1.2.7.1 OpenCV
  • 用途:读取摄像头或视频文件,按帧处理、编解码,支持图像处理与目标跟踪。
  • 示例:
    import cv2
    cap = cv2.VideoCapture("example.mp4")
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
    	break
        # 对 frame 进行图像处理
        cv2.imshow("Frame", frame)
        if cv2.waitKey(1) & 0xFF == ord("q"):
    	break
    cap.release()
    cv2.destroyAllWindows()
    
1.2.7.2 ffmpeg + ffmpeg-python
  • 用途:底层多媒体处理框架,支持转码、分段、抽帧、抽取音轨、格式转换等。
  • 示例:
    import ffmpeg
    (
        ffmpeg
        .input("example.mp4")
        .output("frame_%04d.jpg", vf="fps=1")
        .run()
    )
    
    
1.2.7.3 MoviePy
  • 用途:基于 FFmpeg 的 Pythonic API,可剪辑视频、合并片段、添加字幕与特效。
  • 示例:
    from moviepy.editor import VideoFileClip
    clip = VideoFileClip("example.mp4").subclip(10, 20)
    clip.write_videofile("subclip.mp4", codec="libx264")
    
1.2.7.4 PyAudio
  • 用途:FFmpeg 的 Python 绑定,支持更底层的封装格式和解码控制,适合对帧率、码率敏感的场景。
  • 示例:
    import av
    container = av.open("example.mp4")
    for frame in container.decode(video=0):
        img = frame.to_ndarray(format="rgb24")
        # 进一步图像处理
    
    

1.2.8 HTML/JSON/XML 等半/结构化文本

场景示例:

  • 网页抓取与对话机器人:客服系统从 HTML 页面抓取产品常见问题列表,LLM 将其转化为对话知识库。

  • API 返回的 JSON 数据摘要:技术文档系统中,调用某服务 API 返回 JSON,LLM 需要对其字段进行解读与自然语言说明。

  • XML 配置文件解析:工程师将设备配置导出为 XML,LLM 自动解析并生成配置说明文档。

API:

1.2.8.1 BeautifulSoup(bs4)
  • 用途:解析 HTML/XML,支持 CSS 选择器、XPath 方式提取标签与属性。
  • 示例:
    from bs4 import BeautifulSoup
    with open("example.html", encoding="utf-8") as f:
        soup = BeautifulSoup(f, "html.parser")
    title = soup.title.string
    items = soup.select("div.product > h2")
    
    
1.2.8.2 lxml
  • 用途:基于 C 语言 libxml2/libxslt,解析 HTML/XML 性能更高,还支持 XSLT 转换。
  • 示例:
    from lxml import etree
    parser = etree.HTMLParser()
    tree = etree.parse("example.html", parser)
    titles = tree.xpath("//div[@class='product']/h2/text()")
    
    
    
1.2.8.3 xml.etree.ElementTree
  • 用途:Python 标准库,解析简单 XML,支持获取标签、属性与文本。
  • 示例:
    import xml.etree.ElementTree as ET
    tree = ET.parse("example.xml")
    root = tree.getroot()
    for elem in root.findall(".//item"):
        text = elem.text
    
    
1.2.8.4 PyAudio
  • 用途:FFmpeg 的 Python 绑定,支持更底层的封装格式和解码控制,适合对帧率、码率敏感的场景。
  • 示例:
    import av
    container = av.open("example.mp4")
    for frame in container.decode(video=0):
        img = frame.to_ndarray(format="rgb24")
        # 进一步图像处理
    
    

1.3 多模态数据类型与解析对比表

数据类型简要应用场景示例Python 解析库/API
PDF- 企业合同/报告自动化问答
- 科研论文全文索引与摘要
- 发票 OCR 后归档
- PyPDF2: PdfReader("file.pdf")... (hassanagmir.com)
- pdfplumber: pdfplumber.open("file.pdf")... (GitHub, PyPI)
- PyMuPDF: fitz.open("file.pdf")... (hassanagmir.com)
- pdfminer.six: extract_text("file.pdf") (hassanagmir.com)
DOCX- 企业报告/会议纪要自动摘要
- 法务文书条款解析
- 模板化合同批量生成与解析
- python-docx: Document("file.docx")... (Python-docx文档)
- officeparserpy: parse_office("file.docx") (GitHub, GitHub)
- docx-parser: DocumentParser("file.docx") (PyPI, PyPI)
PPTX- 演示文稿内容自动摘要与问答
- 幻灯片批量文本/图片提取
- 品牌素材/封面图片识别
- python-pptx: Presentation("file.pptx")... (Aspose Documentation)
- pptx2txt2: extract_text("file.pptx") (PyPI, GitHub)
XLSX/CSV- 财务报表自动化分析
- 用户行为日志/CSV 数据处理
- 机器翻译平行文本表处理
- pandas: pd.read_csv("file.csv"), pd.read_excel("file.xlsx") (GeeksforGeeks, W3Schools)
- csv (标准库): csv.reader(open("file.csv")) (Datacamp)
- openpyxl: load_workbook("file.xlsx") (shelokuma tech blog)
- xlrd/xlwt: xlrd.open_workbook("file.xls") (shelokuma tech blog)
图像- 扫描文档 OCR 输入
- 产品照片与 SKU 对应
- 科研图片分析
- Pillow: Image.open("file.jpg")... (Technical Manuals, Pillow (PIL Fork))
- OpenCV: cv2.imread("file.png")... (Technical Manuals)
- scikit-image: io.imread("file.tiff") (维基百科)
- pytesseract: pytesseract.image_to_string(...) (Technical Manuals, GitHub)
音频- 会议/访谈录音转写
- 播客/音频日志分析
- 音频质量检测与特征提取
- librosa: librosa.load("file.wav") (PyPI, Analytics Vidhya)
- SpeechRecognition: r.recognize_google(...) (PyPI, Analytics Vidhya)
- PyDub: AudioSegment.from_file("file.mp3") (GitHub, Analytics Vidhya)
- PyAudio: 实时录音示例 (PyPI, Analytics Vidhya)
视频- 会议录像自动分段与纪要
- 产品演示视频内容理解
- 安防监控事件检索
- OpenCV: cv2.VideoCapture("file.mp4")
- ffmpeg-python: ffmpeg.input("file.mp4").output(...)
- MoviePy: VideoFileClip("file.mp4")
- PyAV: av.open("file.mp4")...
HTML/JSON/XML- 网页抓取与对话机器人
- API 返回 JSON 数据摘要
- XML 配置文件解析
- BeautifulSoup: BeautifulSoup(html, "html.parser") (shelokuma tech blog, GeeksforGeeks)
- lxml: etree.parse("file.html") (shelokuma tech blog, GeeksforGeeks)
- json: json.load(open("file.json")) (GeeksforGeeks, shelokuma tech blog)
- xml.etree.ElementTree: ET.parse("file.xml") (shelokuma tech blog, GeeksforGeeks)

附录

本人github项目地址:https://github.com/oncecoo
欢迎关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值