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 i...
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 页,避免上下文溢出。先通读全文结构,再聚焦重点章节。
论文含附录:附录中的补充图表如有价值也应截取,在报告中设置独立的"附录内容"章节。