一键导入
pdf-tools
PDF workflows: extract text from PDFs/scans (pymupdf, marker-pdf, OCR), edit PDF text/typos/titles via NL prompts (nano-pdf), split/merge/search PDFs.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
PDF workflows: extract text from PDFs/scans (pymupdf, marker-pdf, OCR), edit PDF text/typos/titles via NL prompts (nano-pdf), split/merge/search PDFs.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
macOS-specific automation: iMessage/SMS messaging and desktop control (screenshots, clicks, keyboard input).
Messaging platform integrations: email (IMAP/SMTP via Himalaya), X/Twitter (xurl CLI), and Yuanbao groups (@mentions, DMs).
Control creative software programmatically: ComfyUI (AI image/video generation via REST/WebSocket API) and TouchDesigner (real-time visual programming via MCP).
Systematic engineering disciplines: debugging (root cause investigation), TDD (test-first development), and exploratory QA (web app testing).
Creative coding: p5.js sketches, Manim animations, Pretext text layouts.
Create, read, edit .pptx decks, slides, notes, templates.
| name | pdf-tools |
| description | PDF workflows: extract text from PDFs/scans (pymupdf, marker-pdf, OCR), edit PDF text/typos/titles via NL prompts (nano-pdf), split/merge/search PDFs. |
| version | 1.0.0 |
| author | Hermes Agent |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| metadata | {"hermes":{"tags":["PDF","Documents","OCR","Text-Extraction","Editing","Research","Arxiv","Productivity"],"related_skills":["powerpoint"]}} |
Two workflows for working with PDFs:
Plus: split, merge, search PDFs with pymupdf.
If the document has a URL, always try web_extract first:
web_extract(urls=["https://arxiv.org/pdf/2402.03300"])
This handles PDF-to-markdown via Firecrawl with no local dependencies.
Only use local extraction when: the file is local, web_extract fails, or you need batch processing.
| Feature | pymupdf (~25MB) | marker-pdf (~3-5GB) |
|---|---|---|
| Text-based PDF | ✅ | ✅ |
| Scanned PDF (OCR) | ❌ | ✅ (90+ languages) |
| Tables | ✅ (basic) | ✅ (high accuracy) |
| Equations / LaTeX | ❌ | ✅ |
| Code blocks | ❌ | ✅ |
| Forms | ❌ | ✅ |
| Install size | ~25MB | ~3-5GB (PyTorch + models) |
| Speed | Instant | ~1-14s/page (CPU) |
Decision: Use pymupdf unless you need OCR, equations, forms, or complex layout analysis.
pip install pymupdf pymupdf4llm
Via helper script (scripts/extract_pymdf.py):
python scripts/extract_pymupdf.py document.pdf # Plain text
python scripts/extract_pymupdf.py document.pdf --markdown # Markdown
python scripts/extract_pymupdf.py document.pdf --tables # Tables
python scripts/extract_pymupdf.py document.pdf --images out/ # Extract images
python scripts/extract_pymupdf.py document.pdf --metadata # Title, author, pages
python scripts/extract_pymupdf.py document.pdf --pages 0-4 # Specific pages
Inline:
python3 -c "
import pymupdf
doc = pymupdf.open('document.pdf')
for page in doc:
print(page.get_text())
"
pip install marker-pdf
Via helper script (scripts/extract_marker.py):
python scripts/extract_marker.py document.pdf # Markdown
python scripts/extract_marker.py document.pdf --json # JSON with metadata
python scripts/extract_marker.py document.pdf --output_dir out/ # Save images
python scripts/extract_marker.py scanned.pdf # Scanned PDF (OCR)
python scripts/extract_marker.py document.pdf --use_llm # LLM-boosted accuracy
CLI:
marker_single document.pdf --output_dir ./output
marker /path/to/folder --workers 4 # Batch
web_extract(urls=["https://arxiv.org/abs/2402.03300"]) # Abstract
web_extract(urls=["https://arxiv.org/pdf/2402.03300"]) # Full paper
web_search(query="arxiv GRPO reinforcement learning 2026") # Search
Edit PDFs using natural-language instructions via nano-pdf.
uv pip install nano-pdf # or pip install nano-pdf
nano-pdf edit <file.pdf> <page_number> "<instruction>"
# Change a title on page 1
nano-pdf edit deck.pdf 1 "Change the title to 'Q3 Results' and fix the typo in the subtitle"
# Update a date on a specific page
nano-pdf edit report.pdf 3 "Update the date from January to February 2026"
# Fix content
nano-pdf edit contract.pdf 2 "Change the client name from 'Acme Corp' to 'Acme Industries'"
pymupdf handles these natively:
# Split: extract pages 1-5 to a new PDF
import pymupdf
doc = pymupdf.open("report.pdf")
new = pymupdf.open()
for i in range(5):
new.insert_pdf(doc, from_page=i, to_page=i)
new.save("pages_1-5.pdf")
# Merge multiple PDFs
import pymupdf
result = pymupdf.open()
for path in ["a.pdf", "b.pdf", "c.pdf"]:
result.insert_pdf(pymupdf.open(path))
result.save("merged.pdf")
# Search for text across all pages
import pymupdf
doc = pymupdf.open("report.pdf")
for i, page in enumerate(doc):
results = page.search_for("revenue")
if results:
print(f"Page {i+1}: {len(results)} match(es)")
web_extract is always first choice for URLs~/.cache/huggingface/ on first usepip install python-docx (better than OCR — parses actual structure)powerpoint skill (uses python-pptx)