paper-report
by @nuaalixu
Convert academic papers into structured Chinese reading reports with original figures. Supports arXiv HTML and local PDF inputs. For arXiv links, HTML mode is preferred for textual accuracy. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper.
clawhub install paper-report📖 About This Skill
name: paper-report description: Convert academic PDF papers into structured Chinese reading reports with original figures. Use when the user asks to summarize, read, analyze, or create a reading report for an academic paper (PDF file or arXiv link). Handles PDF-to-image conversion, figure extraction, and HTML report generation.
Paper Report
将学术论文 PDF 转化为结构化的中文阅读报告,保留论文原文中的关键图表。
依赖
运行前确保安装 PyMuPDF:
{PYTHON} -m pip install PyMuPDF --quiet
Python 路径约定:本文档中 {PYTHON} 代表系统 Python3 解释器路径。
/Library/Developer/CommandLineTools/usr/bin/python3python3首次执行时确定可用路径,后续步骤统一使用。
工作流程
复制以下清单并在每一步完成后勾选:
Task Progress:
[ ] Step 1: 获取 PDF 文件
[ ] Step 2: 将 PDF 每页转为图片
[ ] Step 3: 逐页阅读理解,规划图表截取
[ ] Step 4: 裁剪关键图表
[ ] Step 5: 校验截图质量
[ ] Step 6: 撰写中文报告并生成 HTML
[ ] Step 7: 校验 HTML 文件结构、资源引用与展示效果
Step 1: 获取 PDF 文件
用户提供本地文件路径? -> 直接使用该路径。
用户提供 arXiv 链接或 ID? -> 用 curl 下载:
# 从 arXiv ID 下载(如 2401.12345)
curl -L -o {workspace}/paper-report/paper.pdf "https://arxiv.org/pdf/{ARXIV_ID}"
将 PDF 存储到工作目录 {workspace}/paper-report/paper.pdf。验证下载成功后继续。
Step 2: PDF 转图片
使用 scripts/pdf_to_images.py 将每一页渲染为 PNG 图片:
{PYTHON} scripts/pdf_to_images.py {workspace}/paper-report/paper.pdf {workspace}/paper-report/pages
脚本以 2x 分辨率渲染,输出到 {workspace}/paper-report/pages/page_1.png, page_2.png, ...
注意:此步骤的目的是让大模型能以图片形式"看到"每一页的完整布局,包括公式、图表和排版。
Step 3: 逐页阅读理解 & 规划截图
使用 Read 工具逐页查看 {workspace}/paper-report/pages/page_N.png 图片。
每页阅读时,同时完成两个任务:
任务 A — 内容理解:
任务 B — 图表定位:
坐标确定方法:
(page_index, x0, y0, x1, y1, label) 其中 page_index 从 0 开始输出:整理出一份截图计划列表,例如:
截图计划:
1. Figure 1 - 系统架构图 → page 3, Rect(30, 38, 565, 290)
2. Figure 2 - 实验结果对比 → page 3, Rect(30, 295, 565, 485)
3. Table 1 - 性能指标 → page 5, Rect(30, 50, 565, 200)
...
Step 4: 裁剪关键图表
根据 Step 3 的截图计划,使用 scripts/crop_figures.py 进行批量裁剪:
{PYTHON} scripts/crop_figures.py \
{workspace}/paper-report/paper.pdf \
{workspace}/paper-report/figures \
'{crop_spec_json}'
其中 {crop_spec_json} 是 JSON 格式的裁剪规格:
[
{"page": 3, "rect": [30, 38, 565, 290], "name": "fig1_architecture"},
{"page": 3, "rect": [30, 295, 565, 485], "name": "fig2_results"},
{"page": 5, "rect": [30, 50, 565, 200], "name": "table1_metrics"}
]
脚本以 3x 分辨率裁剪以确保清晰度,输出到 {workspace}/paper-report/figures/ 目录。
Step 5: 校验截图质量
使用 Read 工具逐一查看 {workspace}/paper-report/figures/ 中的每张截图:
如果某张截图有问题:调整对应的 Rect 坐标(扩大或缩小范围),然后重新裁剪该图。反复调整直到所有截图质量合格。
Step 6: 生成中文阅读报告(HTML)
使用以下模板结构,生成一个自包含的 HTML 文件。图片使用 base64 内嵌以确保可移植性。
报告结构:
1. 论文基本信息(标题、作者、机构、发表信息)
2. 研究背景与动机
3. 核心方法 / 技术方案(配架构图)
4. 实验设计
5. 实验结果与分析(配结果图表)
6. 主要贡献与创新点
7. 局限性与未来方向
8. 个人点评与总结
图片内嵌方法:将裁剪好的图片转为 base64 嵌入 HTML:
import base64def img_to_base64(path):
with open(path, "rb") as f:
data = base64.b64encode(f.read()).decode()
ext = path.rsplit(".", 1)[-1]
mime = {"png": "image/png", "jpg": "image/jpeg"}.get(ext, "image/png")
return f"data:{mime};base64,{data}"
在 HTML 中使用:
HTML 模板参考:详见 report-template.html
关键写作要求:
输出文件命名:最终 HTML 文件以论文标题命名,格式为 {论文简短标题}-阅读报告.html。从论文标题中提取核心关键词作为简短标题(去除特殊字符,空格替换为短横线),例如论文标题为 "Attention Is All You Need" 则文件名为 Attention-Is-All-You-Need-阅读报告.html。
将最终 HTML 文件保存到 {workspace}/paper-report/outputs/{论文简短标题}-阅读报告.html。
Step 7: 校验 HTML 文件结构、资源引用与展示效果
使用 Read 工具查看生成的 HTML 文件,逐项检查以下内容:
结构完整性:
、、、 标签齐全){{...}})资源引用:
![]()
标签的 src 属性是否为有效的 base64 data URI(以 data:image/png;base64, 或 data:image/jpeg;base64, 开头)alt 属性和 是否有描述性文字展示效果:
标签中,无外部样式表依赖如果发现问题:直接修复 HTML 文件中的对应内容,修复后重新保存到同一路径。
特殊情况处理
双栏排版论文:大多数学术论文为双栏排版。图表可能跨栏或单栏,注意调整裁剪宽度。单栏图通常宽约 30-280 或 300-565,跨栏图宽约 30-565。
扫描版 PDF:如果 PDF 页面渲染后文字模糊或为扫描件,依然可通过图片方式阅读理解,但截图质量可能受限,在报告中注明来源质量。
超长论文(>20 页):分批处理页面图片,每批 5-8 页,避免上下文溢出。先通读全文结构,再聚焦重点章节。
论文含附录:附录中的补充图表如有价值也应截取,在报告中设置独立的"附录内容"章节。