DeepSeek-OCR 驱动的多模态数据分析 Agent 实战

本文围绕在数据分析场景中,如何使用 DeepSeek-OCR + LangChain 1.0 搭建一套端到端的多模态数据分析 Agent。开箱即用的项目源码可到 项目部署 全部免费领取!

项目演示

项目功能

核心功能一:使用Vllm启动DeepSeek-OCR模型并多线程实现复杂图像、PDF、扫描件、手写笔记、旧试卷等文档高精度一键解析;

核心功能二:支持超长文本上下文压缩,并能接入DeepSeek、Qwen3、GPT 等模型生成详细的分析报告,并实时输出可视化报表;

核心功能三:动态可视化报表生成,支持多轮追问并从不同维度输出BI大屏;

应用场景

包括但不限于:

  • 金融投研与财报解析:基金年报、季报、IPO 招股书结构化提取与可视化洞察。
  • 企业经营分析:收入、利润、现金流、费用结构的趋势与对比分析与BI呈现。
  • 政务与审计:规章制度、预算执行、公共项目报告的证据抽取与要点总结。
  • 科研与论文:图表重构、公式与结论抽取,辅助综述与数据复现与再分析。
  • 合同与合规:条款聚合、风险条目识别、金额与日期要点检索与审阅。

技术方案

在数据分析领域, OCR(光学字符识别)+ 计算机视觉技术主要涉及的是图表识别与重构,核心处理流程如下:

    输入:图表图片/ PDF多模态文件
        ↓
    【结构检测】识别坐标轴、图例、标题位置
        ↓
    【OCR提取】读取文字:轴标签、刻度值、数据标签
        ↓
    【图形识别】检测柱子、折线、点的位置和大小
        ↓
    【数据计算】根据像素位置和坐标刻度反推数值
        ↓
    【重新绘制】用提取的数据重新生成图表

我们通过「vLLM 推理加速 + DeepSeek-OCR 页面级解析 + 智能切分并发结构化」三项手段,解决AI数据分析中的三大难题:

  • 解决 多模态混排难题:DeepSeek-OCR 精准识别图片/表格/文字/公式,并统一转为 Markdown;
  • 解决 上下文超长难题:智能切分 + 并发抽取 + 统一 JSON Schema,形成紧凑、可检索的上下文;
  • 解决 可视化解释难题:基于知识库重绘 ECharts 图表,并生成可交互的结论与说明。

在实操中,其中超长上下文是影响效果的主要瓶颈。我们采用“切分-并发-结构化”的三步法来解决:

痛点表现:

  • 一份50页PDF可能产生10万字符,直接喂给 LLM 会超窗且稀释关键信息;
  • 表格、数字、结论混杂在文字中,难以快速抽取与对齐;
  • 纯文本缺乏层次与分类,难以复用与检索。

三步解决:

  1. 智能切分:按章节/页码/锚点切片,保证片段自洽并携带索引;
  2. 并发分析:对每个切片并发抽取“摘要、表格/图表、关键指标”;
  3. 结构化存储:写入统一 JSON Schema,支持后续检索与拼接生成。

这里我们以一个基金的PDF报告为例,更直观的展示 从文档到可视化报告的端到端流程

    ┌─────────────────────────────────────────────────┐
    │  输入:PDF文档 + 用户问题                          │
    │  "分析2024年财务报告,重点关注收入和利润"             │
    └──────────────────┬──────────────────────────────┘
                    ↓
            【第1步:文档识别】
            DeepSeek-OCR API
                    ↓
            输出:Markdown文本(10万字符)
                    ↓
            【第2步:智能切片】
            按标题分割为30个块
                    ↓
            【第3步:并发结构化提取】
            提取:摘要 + 表格 + 关键点
            耗时:(并发)
                    ↓
            【第4步:知识库构建】
            压缩为紧凑的上下文(2万字符)
                    ↓
            【第5步:LLM生成报告】
            输出:HTML + Title + Summary
                    ↓
            【第6步:保存展示】
            浏览器打开查看交互式报告
                    ↓
    ┌──────────────────┴──────────────────────────────┐
    │  输出:交互式HTML报告 + 文字分析摘要                 │
    │  - 7+ 个可视化图表(ECharts)                      │
    │  - 3-5条核心洞察要点                              │
    │  - 支持交互、导出、分享                            │
    └─────────────────────────────────────────────────┘

添加 小助理 免费领取全部项目源码!还有更多项目等你来挖掘!

系统架构

项目采用模块化设计,核心结构如下:

    DataAnalysis/                           # 项目根目录
    ├── 📁 backend/                            # 后端服务层
    │   ├── Data_analysis/
    │   │   ├── DeepSeek-OCR-vllm/            # OCR服务
    │   │   │   ├── backend_integration_api.py   # 🔥 主服务入口
    │   │   │   ├── simple_ocr_client.py         # OCR推理服务
    │   │   │   ├── config.py                    # OCR配置
    │   │   │   └── deepseek_ocr.py              # DeepSeek-VL模型封装
    │   │   ├── backwark/                     # 数据分析核心
    │   │   │   ├── Information_structuring.py   # 信息结构化
    │   │   │   ├── visualizer.py                # 可视化生成器
    │   │   │   └── pdf_exporter.py              # PDF导出
    │   │   └── mock_visualizer.py            # 测试用模拟器
    │   └── 10华夏收入混合型证券投资基金2024年年度报告.pdf  # 示例文档
    │
    └── /tmp/ocr_results/                      # 临时结果目录
        ├── status_*.json                     # 任务状态
        ├── *_analyzed.json                   # 结构化结果
        └── answer_*.html                     # 可视化报告

核心模块:

模块 文件 功能
主服务 backend_integration_api.py FastAPI服务,协调OCR→结构化→可视化流程
OCR推理 simple_ocr_client.py DeepSeek-VL推理服务(运行在 GPU 服务器)
结构化分析 Information_structuring.py 使用LLM提取表格、要点、摘要
可视化 visualizer.py 生成 ECharts 交互式报告

系统部署

添加 小助理 免费领取全部项目源码!还有更多项目等你来挖掘!

环境配置要求

组件 版本要求 说明
Python ≥ 3.10 推荐 3.11
CUDA ≥ 12.1 DeepSeek-VL 需要GPU支持
GPU显存 ≥ 16GB 推荐 24GB+
系统内存 ≥ 16GB 推荐 32GB+

创建虚拟环境并安装依赖

创建并激活虚拟环境,执行

    # 创建新的虚拟环境
    conda create -n deepseek_ocr python=3.11 -y

    # 激活环境
    conda activate deepseek_ocr

安装项目依赖,执行

    cd backend/DeepSeek-OCR-vllm
    pip install -r requirements.txt

配置.env

按照如下说明配置.env服务:

    # DeepSeek-OCR 配置
    DEEPSEEK_MODEL_PATH=/home/data/nongwa/workspace/model/OCR/DeepSeek-OCR
    DEEPSEEK_OCR_URL=http://192.168.110.131:8707/ocr
    DEEPSEEK_OCR_HOST=0.0.0.0
    DEEPSEEK_OCR_PORT=8707

    # 数据分析配置
    DATA_ANALYSIS_BASE_SIZE=1024
    DATA_ANALYSIS_IMAGE_SIZE=640
    DATA_ANALYSIS_CROP_MODE=true
    DATA_ANALYSIS_PROMPT="<image>\n<|grounding|>Convert the document to markdown."

    # 信息结构化配置
    QWEN_TOKENIZER_PATH=/home/data/nongwa/workspace/Data_analysis/Qwen-tokenizer
    ANALYSIS_CHUNK_SIZE=1500
    ANALYSIS_MAX_WORKERS=10
    ANALYSIS_API_KEY=sk-xxx
    ANALYSIS_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1
    ANALYSIS_MODEL_NAME=qwen3-max

    # 可视化配置
    VISUALIZER_API_KEY=sk-xxx
    VISUALIZER_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1
    VISUALIZER_MODEL_NAME=qwen3-max

    # API服务配置
    API_HOST=0.0.0.0
    API_PORT=8708
    API_DEBUG=false
    API_RELOAD=false

    # 文件存储配置
    UPLOAD_DIR=/home/MuyuWorkSpace/03_DataAnalysis/backend/Data_analysis/output/ocr_uploads
    RESULTS_DIR=/home/MuyuWorkSpace/03_DataAnalysis/backend/Data_analysis/output/ocr_results
    TEMP_DIR=/home/MuyuWorkSpace/03_DataAnalysis/backend/Data_analysis/output/ocr_temp

    # 文件处理限制
    MAX_FILE_SIZE_MB=100
    SUPPORTED_EXTENSIONS=.jpg,.jpeg,.png,.pdf,.txt,.md

    # 并发和性能配置
    MAX_CONCURRENT_REQUESTS=5
    REQUEST_TIMEOUT=300
    CLEANUP_INTERVAL_HOURS=24

    # 开发环境配置
    ENVIRONMENT=development
    LOG_LEVEL=info

启动主服务

启动后端服务
  # 确保在 deepseek_ocr 虚拟环境中
  conda activate deepseek_ocr

  # 进入项目目录
  cd /home/MuyuWorkSpace/03_DataAnalysis/backend/Data_analysis/DeepSeek-OCR-vllm

  # 启动主服务
  python backend_integration_api.py

成功启动后,打开浏览器访问:http://localhost:8708/docs 可看到

启动前端服务

接下来进入前端目录,安装Node.js依赖:

  # 进入前端目录
  cd ./frontend
  # 安装依赖(首次运行需要,耗时约2-5分钟)
  npm install
  # 启动前端服务
  npm run dev

成功启动后,打开浏览器访问 http://localhost:3000,即可看到智能分析系统的前端界面。

结语

本实战以 DeepSeek-OCR 为核心,配合 vLLM 推理加速与 LangChain 1.0 的工作流编排,贯通了“识别 → 切片 → 结构化 → 检索 → 生成 → 可视化”的端到端链路,显著提升了复杂文档的抽取质量与分析效率。

Logo

更多推荐