Help us improve
Share bugs, ideas, or general feedback.
From paperfit
Renders PDF pages to high-resolution images for visual inspection in a LaTeX / PaperFit workflow. Generates per-page PNGs and a JSON report for review agents.
npx claudepluginhub openraiser/paperfit --plugin paperfitHow this skill is triggered — by the user, by Claude, or both
Slash command
/paperfit:visual-inspectorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
本技能是 PaperFit 视觉排版优化闭环中的关键环节,专门负责 **PDF 页图渲染与视觉验收指导**。它封装了将 PDF 转换为逐页高分辨率图片的标准化流程,并为 `layout-detective-agent` 和 `quality-gatekeeper-agent` 提供详细的逐页视觉检查清单。
Reads, creates, and reviews PDFs with visual rendering checks via Poppler/pdftoppm to PNGs, using reportlab for generation and pdfplumber/pypdf for extraction where layout matters.
Sets up a render-vision-fix loop for visual output (slides, charts, UI). Renders to PNG, scores with vision AI, and iterates until score >= 9.5.
Handles PDF reading, creation, and review with visual rendering (Poppler/pdftoppm) and Python tools (reportlab for generation, pdfplumber/pypdf for extraction).
Share bugs, ideas, or general feedback.
本技能是 PaperFit 视觉排版优化闭环中的关键环节,专门负责 PDF 页图渲染与视觉验收指导。它封装了将 PDF 转换为逐页高分辨率图片的标准化流程,并为 layout-detective-agent 和 quality-gatekeeper-agent 提供详细的逐页视觉检查清单。
该技能由 orchestrator-agent 在每次编译后调用,确保多模态证据链中的“页图”环节可靠、一致且可复现。
/check-visual 命令)。| 输入项 | 来源 | 必需 | 说明 |
|---|---|---|---|
| PDF 文件路径 | 编译输出 | ✅ | 通常为 main.pdf |
| 输出目录 | 配置或默认 | ✅ | 页图存放目录,默认为 data/pages/ |
| DPI 参数 | 配置或调用方指定 | ✅ | 渲染分辨率,默认 220 DPI |
| 页码范围 | 调用方指定 | ⚠️ | 若为空,渲染全部页面 |
| 局部裁剪参数 | 调用方指定 | ⚠️ | 如 {page: 5, bbox: [x,y,w,h]},用于表格/公式局部复查 |
本技能输出两份产物:
page_001.png、page_002.png 等。{
"skill": "visual-inspector",
"status": "success | partial | failed",
"pdf_path": "main.pdf",
"output_dir": "data/pages/",
"dpi": 220,
"pages_rendered": 9,
"page_files": [
{"page": 1, "file": "data/pages/page_001.png", "width": 1700, "height": 2200},
{"page": 2, "file": "data/pages/page_002.png", "width": 1700, "height": 2200}
],
"cropped_regions": [
{
"page": 5,
"object": "Table 2",
"file": "data/pages/page_005_table2.png",
"bbox": [100, 450, 800, 300]
}
],
"errors": []
}
pdf2image 库pdftoppm 或 pdftocairo)若 Poppler 未安装,根据操作系统提供安装指引:
# Debian/Ubuntu
sudo apt-get install poppler-utils
# macOS
brew install poppler
# Windows
# 下载 poppler 并添加到 PATH,或使用 conda install -c conda-forge poppler
禁止在用户 LaTeX 项目里假设存在 scripts/render_pages.py。页图渲染由 PaperFit npm/CLI 包提供,在论文项目根目录执行:
paperfit render <相对或绝对路径的.pdf> --output data/pages --dpi 220
# 示例
paperfit render main.pdf --dpi 300
前提:npm install -g paperfit-cli(或等价全局安装),paperfit 在 PATH 中。输出目录 --output 相对于当前工作目录(一般为论文根目录)。
其它包内 Python/Bash(如 parse_log.py、state_manager.py)一律在论文根目录使用 paperfit run scripts/<文件名> [参数…],勿在用户项目里假设存在同名 scripts/。
若仅能通过 Python 调用包内脚本,先执行 paperfit root 得到包根目录,再:
python3 "$(paperfit root)/scripts/render_pages.py" main.pdf --dpi 220
(或直接调用 pdf2image 库,逻辑须与下方一致。)全局未装 paperfit 时可用:npx paperfit-cli render …。
from pdf2image import convert_from_path
pages = convert_from_path(
pdf_path,
dpi=220,
fmt='png',
thread_count=2,
grayscale=False,
size=None
)
for i, page in enumerate(pages, start=1):
page.save(f"{output_dir}/page_{i:03d}.png", "PNG")
| 场景 | DPI | 说明 |
|---|---|---|
| 整页常规检查 | 180-220 | 平衡清晰度与文件大小 |
| 表格/公式细节复查 | 260-320 | 需清晰辨认小字号或密集内容 |
| 局部裁剪复查 | 320 | 聚焦特定区域,可接受较大文件 |
当 layout-detective-agent 需要对特定表格、公式或段落进行高精度复查时,可请求渲染局部区域。
page_005_table2.png)。裁剪示例:
from PIL import Image
full_page = Image.open(f"{output_dir}/page_005.png")
cropped = full_page.crop((x1, y1, x2, y2))
cropped.save(f"{output_dir}/page_005_table2.png")
记录渲染结果,包括:
以下清单供 layout-detective-agent 在逐页审查时参考。本技能不执行检查,仅提供指导框架。
paperfit run scripts/detect_column_void.py data/pages -o data/column_void_report.json,将机器投影结果与肉眼结论交叉验证Acknowledgements / References / Bibliography 的页上是否出现正文图表标题或正文浮动体?若有,按硬失败处理。booktabs 风格。orchestrator-agent 在编译成功后调用本技能。layout-detective-agent 使用页图进行视觉缺陷检测。quality-gatekeeper-agent 使用页图进行最终验收对比。code-surgeon-agent 在修复后可能请求局部页图验证特定修改。| 异常情况 | 处理方式 |
|---|---|
| Poppler 未安装 | 返回明确错误信息,包含安装指引 |
| PDF 文件损坏 | 报告错误,请求重新编译 |
| 部分页渲染失败 | 记录失败页码,尽可能渲染其余页,状态标记为 partial |
| 磁盘空间不足 | 报告错误,清理临时目录或提示用户释放空间 |
Visual Inspector Skill 就绪。