Scientific Figure Analysis Pipeline — 科学图像分析流程
v1科学论文图表完整分析流水线 — PDF图表提取(PyMuPDF) + Kimi K2.6多模态视觉分析 + 科学理解 + 逆向工程。 触发场景: (1) 分析论文PDF中的图表, (2) 逆向工程图表生成流水线, (3) 从文献中提取结构化知识, (4) 论文自动化文献挖掘。 不适用场景: 纯文本阅读、非科学类PDF、无图表的纯理论论文。
运行时依赖
安装命令
点击复制技能文档
科学图表分析 — 完整流水线 PDF提取 → 视觉AI分析 → 科学理解 → 逆向工程,一站式从论文到结构化知识。
四阶段流水线 PDF论文 │ ├─ Stage 1: PyMuPDF 提取 │ ├─ 所有嵌入图片 (.jpeg/.png) │ ├─ 全文文本 (captions + body) │ └─ 图片元数据 (尺寸、页码) │ ├─ Stage 2: Kimi K2.6 视觉分析 │ ├─ base64 编码图片 │ ├─ OpenAI SDK 调用 api.moonshot.cn │ └─ 提取图表中所有可见数值/标签/趋势 │ ├─ Stage 3: 科学理解 │ ├─ 图表类型识别(18种) │ ├─ 多模态推理(视觉+文本融合) │ └─ 保守置信度标注 │ └─ Stage 4: 逆向工程 ├─ 软件推断(Prism/ggplot2/PyMOL...) └─ 流水线重建
Stage 1 — 图表提取 必需能力 解析科学PDF 检测所有图表 保留原始分辨率、颜色、轴标签、图例、比例尺、标注 子图检测 准确检测并拆分 a/b/c/d 等子图面板。 子图拆分要求: 保留面板标签 避免裁剪 保留上下文 保留嵌入标注 不移除共享图例 推理方式(组合使用,不单独依赖OCR): 布局边界分析 空白区域分割 OCR文字识别 面板标签检测 标题对齐检测 视觉分组
推荐工具 工具 用途 安装 PyMuPDF (fitz) PDF解析、图片提取、文本提取 pip install pymupdf pdfplumber 表格/文本提取 pip install pdfplumber OpenCV 图像处理/分割 pip install opencv-python LayoutParser 布局检测 pip install layoutparser Tesseract OCR sudo apt install tesseract-ocr YOLO 布局检测(GPU加速) — PyMuPDF 提取流水线(已验证) import fitz, os doc = fitz.open("paper.pdf") outdir = "figures_output" os.makedirs(outdir, exist_ok=True) # 1. 提取所有嵌入图片 for pn in range(doc.page_count): for i, img in enumerate(doc[pn].get_images(full=True)): base = doc.extract_image(img[0]) fname = f"{outdir}/page{pn+1:02d}_img{i:02d}_{base['width']}x{base['height']}.{base['ext']}" with open(fname, 'wb') as f: f.write(base['image']) # 2. 提取全文(含嵌入caption文本块) with open(f"{outdir}/full_text.txt", 'w') as f: for pn in range(doc.page_count): for block in doc[pn].get_text('blocks'): x0, y0, x1, y1, text = block[:5] if text.strip(): f.write(f"[p{pn+1},{x0:.0f},{y0:.0f}] {text.strip()}\n") # 3. 提取 Figure caption import re full_text = '\n'.join([doc[p].get_text() for p in range(doc.page_count)]) for m in re.finditer(r'(Figure\s+\d+[^.]+\.)', full_text): print(m.group(1))
Stage 2 — 科学理解 图表类型识别 类型 特征 显微成像 灰度/荧光通道、比例尺 荧光成像 多通道伪彩、merge图 热图 色阶矩阵、行/列聚类树 火山图 -log10(p) vs log2FC,阈值线 PCA 散点+椭圆、方差解释率 UMAP/t-SNE 点簇分布、perplexity标注 系统发育树 分支拓扑、bootstrap值 Western Blot 条带、分子量标记 通路图 箭头、节点、酶标注 工作流程图 步骤箭头、方法框 柱状图 bar + error bar 箱线图 box + whisker 小提琴图 密度轮廓 测序QC FastQC曲线、duplication率 基因组浏览器 tracks、reads堆积 微生物丰度图 堆叠柱状/热图+分类 空间转录组 组织切片+表达叠加 单细胞聚类 UMAP+marker基因
多模态推理 组合:图像内容 + 图表标题 + 邻近段落 + 科学术语 + 面板引用 + 视觉结构 保守推理规则 绝不捏造不可读标签、基因名、分类单元、统计数据、方法、显著性、无依据的结论 不确定时明确标注不确定性 + 置信度等级 置信度:high / moderate / speculative
Stage 2B: Kimi K2.6 视觉 AI 分析 用多模态 AI 直接"看图说话",提取纯文本无法获取的数值。 何时启用: 当前模型不支持 vision 时必须启用;需要精确数值(Kd/RMSD/TPM)时强烈推荐。 完整调用代码: 见 references/kimi-k2.6-vision-api.md 核心参数: model: "kimi-k2.6" base_url: "https://api.moonshot.cn/v1" auth: MOONSHOT_API_KEY 环境变量 图片: base64 data URI 思考: extra_body={"thinking": {"type": "disabled"}} 数据融合: Kimi 视觉输出 (数值、标签、趋势) + PyMuPDF 文本 (caption、正文、methods) ↓ 结构化报告 (Markdown表格 + JSON)
Stage 3 — 图表逆向工程 软件推断 视觉特征 推断软件 粗边框、Helvetica字体、Prism配色 GraphPad Prism 灰色背景+白色网格、默认配色 ggplot2 蓝/橙默认配色、sans-serif字体 matplotlib/seaborn UMAP灰色背景+离散色簇 Seurat / Scanpy 荧光merge图、比例尺标注风格 ImageJ / Fiji 扁平卡通风格箭头/细胞 BioRender 通路图+渐变箭头 Illustrator 细胞分割轮廓 CellProfiler
流水线重建 归一化方法 聚类工作流 降维分析 差异表达分析 测序预处理 系统发育工作流 微生物分析流程 图像定量工作流 统计工作流 可视化工作流 高级推断(如可行) 测序平台 染色方法 实验模态 R vs Python 生态 出版装配工作流
可能的代码生态 ⚠️ 模型能力适配 Vision 不可用时的两条路径 路径 条件 效果 A: Kimi K2.6 (优先) 有 MOONSHOT_API_KEY ★ 最佳 — 精确提取数值/标签/配色 B: 纯文本回退 无 API Key 或紧急 可接受 — 依赖 caption+正文+元数据
路径B: 纯文本回退流水线
- PyMuPDF 提取嵌入文本 → page.get_text('blocks')
- 全文正则搜索 → re.findall(r'Figure\s+\d+[^.]*\.', full_text)
- 正文上下文 → caption 前后 500 字符
- 图片元数据推断 → 宽高比、页码位置、图片数量
失败处理 情况 策略 PDF 提取失败 解释原因 + 尝试替代解析器(pdfplumber) 标签缺失 用布局和标题结构推断分组 图像质量差 说明限制条件,避免幻觉 Vision 不可用 优先 Kimi K2.6 → 不行则走纯文本回退 → 绝不编造视觉内容 Kimi API 401 检查 Key 格式(sk- vs sk-kimi-)、验证端点 Kimi 输出截断 增大 max_tokens(4096-8192),或分 panel 请求
输出格式