← 返回 Skill 列表
extension
分类: 效率与办公API Key 暂未确认

科研图表投稿规范检查助手

检查并修正论文插图是否符合期刊投稿规范:按 Elsevier/IEEE/Nature/Springer 的栏宽与 dpi 要求,计算缩放到目标栏宽后的有效分辨率,缺 DPI 元数据、白边过大、需缩小或必须重新出图都能直接判定,并可写入正确 DPI、转 TIFF、裁白边。适用于投稿前批量体检、返修补图、Word/LaTeX 中图片变小变糊等场景。

person作者: hansolvehubOpenAPI

科研图表投稿规范检查与修正(paper-figure-kit)

这个 Skill 解决什么

投稿被退回的图片问题,九成不是"图不够清晰",而是三件很具体的事:

  1. DPI 元数据缺失——排版软件默认按 72 dpi 解释,一张 1000 px 的图被印成 353 mm 宽,糊得没法看。
  2. 物理宽度与栏宽不匹配——期刊单栏 90 mm,你的图却按 150 mm 出,排版时被强行缩小,字号掉到 5 pt。
  3. 靠"重采样调高 dpi"自我安慰——把 600 px 的图重采样到 300 dpi 只是改了标签,细节一点没多,印刷照样糊。

本 Skill 用一条确定性公式把这件事算清楚:

目标栏宽下的有效分辨率 = 25.4 × 像素宽度 ÷ 目标栏宽(mm)

有效分辨率够,图就能用(只改元数据即可);不够,必须回绘图脚本重新出图,任何重采样都是自欺欺人。工具会如实区分这两种情况,不会给你一个"看起来修好了"的文件。

何时触发

  • "这张图能投稿吗 / 符合 xx 期刊要求吗"
  • "dpi 不够 / 图糊 / 投稿系统说图片分辨率低"
  • "帮我批量检查 figures 目录"
  • "转成 300 dpi / 转 TIFF / 按双栏出图"
  • 论文写作、返修(revision)、图表排版相关请求

快速开始

# 0) 看内置期刊预设
python scripts/figcheck.py presets

# 1) 检查(只读,不改文件)
python scripts/figcheck.py check fig1.png fig2.tiff \
    --preset elsevier --column single --kind halftone \
    --md report.md --json report.json

# 2) 修正(写入 DPI 元数据 / 转 TIFF / 裁白边,像素不变)
python scripts/figcheck.py fix fig1.png \
    --preset elsevier --column single --out fixed/ --format tiff --trim 6

参数含义:

| 参数 | 取值 | 说明 | | --- | --- | --- | | --preset | elsevier ieee nature springer generic | 目标期刊版式预设 | | --column | single 1.5 double | 单栏 / 1.5 栏 / 双栏 | | --kind | halftone combination lineart | 照片 / 图文混排 / 线条图,决定 dpi 门槛 | | --out --format | 目录 / png tiff | 输出目录与格式(TIFF 用 LZW 无损压缩) | | --trim | 像素 | 裁掉四周白边,保留的边距像素数 |

check 有 FAIL 时退出码为 1,方便接进 CI 或批量脚本。

输出长什么样

下面是本 Skill examples/example_bad.png 的真实输出(600 px、无 DPI 元数据、白边 42%):

## example_bad.png —— FAIL

| 检查项 | 结论 | 说明 |
| --- | --- | --- |
| 文件格式 | PASS | PNG(600x360) |
| 色彩模式 | PASS | RGB |
| DPI 元数据 | FAIL | 缺失 DPI 元数据,排版软件会按 72dpi 解释导致图变小 |
| 缩放到目标栏宽后的有效分辨率 | FAIL | 169 dpi < 要求 300 dpi;目标栏宽下至少需要 1062 px 宽,当前仅 600 px,必须从源头重新出图,重采样无法补救 |
| 缩放方向 | WARN | 元数据宽度是目标栏宽的 235%,需缩小 57% |
| 白边 | WARN | 四周白边占画面 41.8%,建议裁掉以免排版时图被缩小 |

修正同一张图后重检:

| DPI 元数据 | PASS | 132 dpi |
| 物理宽度 | PASS | 按元数据为 90.0 mm(目标栏宽 90.0 mm) |
| 缩放到目标栏宽后的有效分辨率 | FAIL | 132 dpi < 要求 300 dpi …… 必须从源头重新出图 |
| 白边 | PASS | 四周白边 6.63% |

也就是说:白边和元数据能修,像素不够修不了——工具会直说,并把"回到绘图脚本、把 figsize 设成 (90/25.4, ...) 英寸、dpi=300"这条唯一正确的路指给你。

判定规则

| 等级 | 含义 | 处理 | | --- | --- | --- | | PASS | 满足印刷要求 | 直接用 | | WARN | 可用但有风险(白边过大、需缩放、索引色) | 建议按提示修 | | FAIL | 投稿会被退(缺元数据、有效分辨率不足、文件过大、打不开) | 必须处理 |

有效分辨率判定:25.4 × 像素宽 ÷ 目标栏宽 ≥ 该图类型的 dpi 门槛。这个量与元数据里的 dpi 无关,只取决于像素数和栏宽——这正是很多人搞错的地方。

内置期刊预设

| preset | 单栏 | 1.5 栏 | 双栏 | halftone | combination | lineart | | --- | --- | --- | --- | --- | --- | --- | | elsevier | 90 mm | 140 mm | 190 mm | 300 | 500 | 1000 | | ieee | 88.9 mm | 136 mm | 181 mm | 300 | 600 | 1200 | | nature | 89 mm | 120 mm | 183 mm | 300 | 600 | 1200 | | springer | 84 mm | 129 mm | 174 mm | 300 | 600 | 1200 | | generic | 90 mm | 140 mm | 190 mm | 300 | 600 | 1200 |

这些是业界通用值,细节见 references/journal-specs.md。投稿前一定以目标期刊最新 Guide for Authors 为准;对不上时用 generic 并把 --column 换成实测栏宽(可以先量一下期刊 PDF 的正文栏宽)。

使用示例

场景 A:一批图要交稿,先摸底

python scripts/figcheck.py check figures/*.png --preset ieee --column single --md qa.md
# 打开 qa.md,只看 FAIL 那几行,其余可以直接过

场景 B:图没问题,只是 Word 里显小

python scripts/figcheck.py fix figures/fig3.png --preset elsevier --column single --out fixed/

有效分辨率本来就够时,这一步只写一个正确的 DPI 元数据(像素零损失),图在 Word 里就会以 90 mm 呈现。

场景 C:投稿系统只收 TIFF,且要求双栏

python scripts/figcheck.py fix figures/*.png --preset elsevier --column double \
    --out submit/ --format tiff --trim 4

场景 D:出图前就对齐(推荐做法)

在绘图脚本里直接按栏宽出图,从源头避免返工:

FIG_W_MM = 90.0                      # Elsevier 单栏
plt.figure(figsize=(FIG_W_MM / 25.4, 60 / 25.4))
plt.savefig("fig1.png", dpi=300, bbox_inches="tight", pad_inches=0.02)

设计取舍(为什么不"自动帮你调高 dpi")

工具只在物理语义正确的前提下写元数据:写入的 dpi 使图像宽度恰好等于目标栏宽。像素数不变、不插值、不锐化——因为投稿评审看的正是细节,插值出来的"清晰"在印刷环节会被放大成伪影。

唯一的补救路径写在 FAIL 的说明里:回到源头,用更大的 dpi 或更宽的 figsize 重新出图。

文件结构

paper-figure-kit/
├── SKILL.md                      # 本文件(zip 根目录只能有这一个文件)
├── scripts/figcheck.py           # 唯一入口,仅依赖 Pillow
├── references/
│   ├── journal-specs.md          # 栏宽/dpi 数值来源与取用说明
│   └── LICENSE                   # MIT(Copyright (c) 2026 韩雨欣)
└── examples/
    ├── make_sample.py            # 生成两张示例图(不需要 matplotlib)
    ├── example_bad.png           # 反面样例:600 px、无 dpi、42% 白边
    ├── example_good.png          # 正面样例:1063 px、300 dpi
    └── report-example.md         # 对上面两张图的真实检查报告

依赖

  • Python 3.8+
  • Pillow(pip install pillow)
  • 不需要 matplotlib、不需要 LaTeX、不需要联网

局限

  • 只查位图。PDF/EPS 是矢量或复合格式,本工具只提示"请用出版社预检工具",不做解析。
  • 不判断图的内容质量(坐标轴是否标注、字号是否可读、配色是否色盲友好)。字号可读性建议按"最终栏宽下不小于 7 pt"自行核对。
  • 不做 CMYK 转换。印刷制版所需的分色由出版社流程处理;RGB 是当前主流投稿要求。
  • 期刊数值可能调整,预设值仅供快速比对。