PDF 处理技能:提取、合并与文档自动化 - Openclaw Skills
什么是 PDF 处理工具包?
此技能为您的 AI 代理环境提供了一套强大的工具,用于处理任何与 PDF 相关的任务。通过集成 pypdf 和 pdfplumber 等库,此 Openclaw Skills 条目能够实现精确的文本提取、布局保持和复杂的表格解析。它专为需要大规模自动化文档处理的开发人员设计,无论是使用 reportlab 从头开始创建报告,还是使用 qpdf 解密安全文件。该资源是基于 Openclaw Skills 环境管理文档生命周期的权威指南。
下载入口:https://github.com/openclaw/skills/tree/main/skills/awspace/pdf安装与下载
1. ClawHub CLI
从源直接安装技能的最快方式。
npx clawhub@latest install pdf
2. 手动安装
将技能文件夹复制到以下位置之一
全局模式~/.openclaw/skills/
工作区
<project>/skills/
优先级:工作区 > 本地 > 内置
3. 提示词安装
将此提示词复制到 OpenClaw 即可自动安装。
请帮我使用 Clawhub 安装 pdf。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。
PDF 处理工具包 应用场景
- 自动将财务报表中的表格数据提取到 Excel 中。
- 通过编程将多个文档片段合并为一个内聚的 PDF。
- 对扫描文档执行 OCR,使其可搜索和可索引。
- 生成具有自定义样式和多页布局的动态业务报告。
- 通过密码加密和自定义水印保护敏感文档。
- 根据任务选择合适的工具,例如用于表格提取的 pdfplumber 或用于文档创建的 reportlab。
- 将源 PDF 文件加载到环境中或调用相关的 CLI 实用程序(如 qpdf)。
- 执行特定的转换或提取逻辑,例如旋转页面或合并元数据。
- 通过 Pandas DataFrames 等结构处理提取的数据,或将最终的二进制文件写入磁盘。
- 将生成的资产集成到更广泛的 Openclaw Skills 工作流程中,以实现端到端自动化。
PDF 处理工具包 配置指南
要开始使用这些 Openclaw Skills,请安装必要的 Python 依赖项:
pip install pypdf pdfplumber reportlab pytesseract pdf2image
对于基于 CLI 的操作,请确保存在所需的系统软件包:
sudo apt-get install poppler-utils qpdf
PDF 处理工具包 数据架构与分类体系
该技能通过各种面向对象的结构和文件输出组织数据:
| 组件 | 数据类型 | 描述 |
|---|---|---|
| 元数据 | 字典 | 包含标题、作者、主题和创建者字段。 |
| 提取的文本 | 字符串 | 原始文本内容,可选择保留原始布局。 |
| 表格 | 列表嵌套列表 | 为转换为 CSV 或 Excel 而构建的表格数据。 |
| 页面对象 | 对象 | 可用于旋转或合并的单个 PDF 页面。 |
| 图像 | JPEG/PNG | 从文档层提取的栅格化资产。 |
name: pdf
description: Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.
license: Proprietary. LICENSE.txt has complete terms
PDF Processing Guide
Overview
This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed examples, see reference.md. If you need to fill out a PDF form, read forms.md and follow its instructions.
Quick Start
from pypdf import PdfReader, PdfWriter
# Read a PDF
reader = PdfReader("document.pdf")
print(f"Pages: {len(reader.pages)}")
# Extract text
text = ""
for page in reader.pages:
text += page.extract_text()
Python Libraries
pypdf - Basic Operations
Merge PDFs
from pypdf import PdfWriter, PdfReader
writer = PdfWriter()
for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
reader = PdfReader(pdf_file)
for page in reader.pages:
writer.add_page(page)
with open("merged.pdf", "wb") as output:
writer.write(output)
Split PDF
reader = PdfReader("input.pdf")
for i, page in enumerate(reader.pages):
writer = PdfWriter()
writer.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as output:
writer.write(output)
Extract Metadata
reader = PdfReader("document.pdf")
meta = reader.metadata
print(f"Title: {meta.title}")
print(f"Author: {meta.author}")
print(f"Subject: {meta.subject}")
print(f"Creator: {meta.creator}")
Rotate Pages
reader = PdfReader("input.pdf")
writer = PdfWriter()
page = reader.pages[0]
page.rotate(90) # Rotate 90 degrees clockwise
writer.add_page(page)
with open("rotated.pdf", "wb") as output:
writer.write(output)
pdfplumber - Text and Table Extraction
Extract Text with Layout
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
print(text)
Extract Tables
with pdfplumber.open("document.pdf") as pdf:
for i, page in enumerate(pdf.pages):
tables = page.extract_tables()
for j, table in enumerate(tables):
print(f"Table {j+1} on page {i+1}:")
for row in table:
print(row)
Advanced Table Extraction
import pandas as pd
with pdfplumber.open("document.pdf") as pdf:
all_tables = []
for page in pdf.pages:
tables = page.extract_tables()
for table in tables:
if table: # Check if table is not empty
df = pd.DataFrame(table[1:], columns=table[0])
all_tables.append(df)
# Combine all tables
if all_tables:
combined_df = pd.concat(all_tables, ignore_index=True)
combined_df.to_excel("extracted_tables.xlsx", index=False)
reportlab - Create PDFs
Basic PDF Creation
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
c = canvas.Canvas("hello.pdf", pagesize=letter)
width, height = letter
# Add text
c.drawString(100, height - 100, "Hello World!")
c.drawString(100, height - 120, "This is a PDF created with reportlab")
# Add a line
c.line(100, height - 140, 400, height - 140)
# Save
c.save()
Create PDF with Multiple Pages
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate("report.pdf", pagesize=letter)
styles = getSampleStyleSheet()
story = []
# Add content
title = Paragraph("Report Title", styles['Title'])
story.append(title)
story.append(Spacer(1, 12))
body = Paragraph("This is the body of the report. " * 20, styles['Normal'])
story.append(body)
story.append(PageBreak())
# Page 2
story.append(Paragraph("Page 2", styles['Heading1']))
story.append(Paragraph("Content for page 2", styles['Normal']))
# Build PDF
doc.build(story)
Command-Line Tools
pdftotext (poppler-utils)
# Extract text
pdftotext input.pdf output.txt
# Extract text preserving layout
pdftotext -layout input.pdf output.txt
# Extract specific pages
pdftotext -f 1 -l 5 input.pdf output.txt # Pages 1-5
qpdf
# Merge PDFs
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
# Split pages
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
qpdf input.pdf --pages . 6-10 -- pages6-10.pdf
# Rotate pages
qpdf input.pdf output.pdf --rotate=+90:1 # Rotate page 1 by 90 degrees
# Remove password
qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf
pdftk (if available)
# Merge
pdftk file1.pdf file2.pdf cat output merged.pdf
# Split
pdftk input.pdf burst
# Rotate
pdftk input.pdf rotate 1east output rotated.pdf
Common Tasks
Extract Text from Scanned PDFs
# Requires: pip install pytesseract pdf2image
import pytesseract
from pdf2image import convert_from_path
# Convert PDF to images
images = convert_from_path('scanned.pdf')
# OCR each page
text = ""
for i, image in enumerate(images):
text += f"Page {i+1}:
"
text += pytesseract.image_to_string(image)
text += "
"
print(text)
Add Watermark
from pypdf import PdfReader, PdfWriter
# Create watermark (or load existing)
watermark = PdfReader("watermark.pdf").pages[0]
# Apply to all pages
reader = PdfReader("document.pdf")
writer = PdfWriter()
for page in reader.pages:
page.merge_page(watermark)
writer.add_page(page)
with open("watermarked.pdf", "wb") as output:
writer.write(output)
Extract Images
# Using pdfimages (poppler-utils)
pdfimages -j input.pdf output_prefix
# This extracts all images as output_prefix-000.jpg, output_prefix-001.jpg, etc.
Password Protection
from pypdf import PdfReader, PdfWriter
reader = PdfReader("input.pdf")
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
# Add password
writer.encrypt("userpassword", "ownerpassword")
with open("encrypted.pdf", "wb") as output:
writer.write(output)
Quick Reference
| Task | Best Tool | Command/Code |
|---|---|---|
| Merge PDFs | pypdf | writer.add_page(page) |
| Split PDFs | pypdf | One page per file |
| Extract text | pdfplumber | page.extract_text() |
| Extract tables | pdfplumber | page.extract_tables() |
| Create PDFs | reportlab | Canvas or Platypus |
| Command line merge | qpdf | qpdf --empty --pages ... |
| OCR scanned PDFs | pytesseract | Convert to image first |
| Fill PDF forms | pdf-lib or pypdf (see forms.md) | See forms.md |
Next Steps
- For advanced pypdfium2 usage, see reference.md
- For JavaScript libraries (pdf-lib), see reference.md
- If you need to fill out a PDF form, follow the instructions in forms.md
- For troubleshooting guides, see reference.md
相关资讯
-
08.08
猎人拿哪个卡牌好打怪物
-
08.08
明日方舟渠道服账号交易靠谱平台推荐
-
08.08
明日方舟终末地卖号平台推荐与安全交易软件指南
-
08.08
方舟生存进化手游流星锤能缠住哪些生物 方舟生存进化手游流星锤实战效果与适用龙种详解
-
08.08
Stock Market Pro:专业的财务分析与图表工具 - Openclaw Skills
-
08.08
摩尔庄园土地伯伯位置
游戏推荐
推荐专题
热门阅读
-
-
- 尘白禁区武器S12W小粮食属性一览
- 08.08
-
- 艾尔登法环dlc舞狮的追忆怎么获得
- 08.08
-
- 谁也别想跑第65关通关攻略
- 08.08
-
- 懂球帝如何屏蔽篮球比赛
- 08.08
-
- 异环红色楼顶电话亭如何解锁
- 08.08
推荐下载
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏