处理PDF文件的技能,涵盖文本/表格提取、合并拆分、表单填写及OCR。提供基于任务的库选择指南(如pdfplumber、pypdf)及Python代码示例,解决乱码、内存溢出等常见问题。
Trigger Scenarios
从PDF中提取文本或表格
合并或拆分PDF文件
填写PDF表单
添加水印或注释
将PDF转换为其他格式
在PDF中搜索内容
Install
npx skills add FareedKhan-dev/claude-code-from-scratch --skill pdf -g -y
SKILL.md
Frontmatter
{
"name": "pdf",
"description": "Use when working with PDF files — reading, extracting text or tables, merging, splitting, or filling forms. Provides correct library choices and common patterns."
}
PDF Skill
When to use this skill
Load when the user asks you to:
- Extract text or tables from a PDF
- Merge or split PDF files
- Fill in a PDF form
- Add watermarks or annotations
- Convert PDF to another format
- Search for content inside a PDF
Library decision tree
Need to extract text from a normal (not scanned) PDF?
→ pdfplumber (best text + table extraction)
Need to manipulate pages (merge, split, rotate)?
→ pypdf (formerly PyPDF2)
Need to fill form fields?
→ pypdf with writer.update_page_form_field_values()
PDF is scanned (images of pages, no selectable text)?
→ pytesseract + pdf2image (OCR pipeline)
Need to create a PDF from scratch?
→ reportlab or fpdf2
Install
pip install pdfplumber pypdf
# For OCR:
pip install pytesseract pdf2image
# Also requires: tesseract-ocr (system package) and poppler-utils
Extract text — pdfplumber
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
if text:
print(text)
Extract tables — pdfplumber
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
for page in pdf.pages:
tables = page.extract_tables()
for table in tables:
for row in table:
print(row)
Merge PDFs — pypdf
from pypdf import PdfWriter
writer = PdfWriter()
for filename in ["part1.pdf", "part2.pdf", "part3.pdf"]:
writer.append(filename)
with open("merged.pdf", "wb") as f:
writer.write(f)
Split PDF — pypdf
from pypdf import PdfReader, PdfWriter
reader = PdfReader("document.pdf")
for i, page in enumerate(reader.pages):
writer = PdfWriter()
writer.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as f:
writer.write(f)
Extract specific pages — pypdf
from pypdf import PdfReader, PdfWriter
reader = PdfReader("document.pdf")
writer = PdfWriter()
for page_num in [0, 2, 4]: # 0-indexed
writer.add_page(reader.pages[page_num])
with open("selected.pdf", "wb") as f:
writer.write(f)
Common issues
Text comes back garbled or empty The PDF may use a non-standard encoding or be scanned. Try OCR:
# pip install pdf2image pytesseract
from pdf2image import convert_from_path
import pytesseract
images = convert_from_path("scanned.pdf")
for img in images:
print(pytesseract.image_to_string(img))
Tables not extracting correctly Try adjusting the extraction strategy:
page.extract_table(table_settings={"vertical_strategy": "lines",
"horizontal_strategy": "lines"})
Large PDF crashes memory Process page by page, don't load entire PDF into memory:
with pdfplumber.open("large.pdf") as pdf:
for page in pdf.pages:
process(page.extract_text()) # one page at a time
Version History
- fb9709e Current 2026-07-24 11:37


