Token导航 LogoToken导航

Agent Skill · 效率

split-pdf-by-pages(split PDF BY pages 效率)

split-pdf-by-pages 用于补充效率相关能力,适合在 OpenClaw 中需要让 Agent 承接效率相关任务时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

split-pdf-by-pages 是效率类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描已通过,按安装量在效率类的 21,003 个 Skill 里排第 16,435。

总安装 2,864周安装 117GitHub Stars 公开资料未说明下载 927核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:split-pdf-by-pages(split PDF BY pages 效率)
来源仓库:https://github.com/hanw2039/split-pdf-by-pages
安装命令:
openclaw skills install split-pdf-by-pages
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install split-pdf-by-pages

这个 Skill 是做什么的

效率类 Skill 把重复的整理、汇总、转换工作交给助手完成,减少手工复制粘贴。

将PDF中包含 显示日期 的页面切割成单独的文件,新文件以原文件名_页数命名。当用户需要从PDF中提取包含特定日期标识的页面时使用。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install split-pdf-by-pages;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

split-pdf-by-pages 怎么安装?

在终端执行 openclaw skills install split-pdf-by-pages。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

split-pdf-by-pages 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

split-pdf-by-pages 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

split-pdf-by-pages 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

split-pdf-by-pages 用的人多吗?

公开数据是累计安装 2,864 次,近一周安装 117 次,下载 927 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

split-pdf-by-pages 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理效率类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

效率类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
github

GitHub 代码协作 · OpenClaw

7,632,918545需要联网MIT-0通过
nano-pdf

Nano PDF 文档 · OpenClaw

4,249,476231需要联网MIT-0通过
auto-updater

自动更新程序 · OpenClaw

2,964,063386操作浏览器MIT-0通过
video-frames

视频帧 · OpenClaw

2,621,304112需要联网MIT-0通过
gemini

Gemini 助手 · OpenClaw

2,547,39648需要联网MIT-0有提醒
split-pdf-by-pages

split PDF BY pages 效率 · 本页

2,864—需要联网MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
split-pdf-by-pages
description
将PDF中包含 显示日期 的页面切割成单独的文件,新文件以原文件名_页数命名。当用户需要从PDF中提取包含特定日期标识的页面时使用。

PDF按页切割(含 显示日期 的页面)

扫描PDF每一页,只将包含 显示日期 文本的页面切割成独立的PDF文件,新文件命名格式为:原文件名_p页码.pdf

功能说明

  • 扫描PDF每一页的内容
  • 只提取包含 显示日期 的页面
  • 文件名格式:原文件名_p页码.pdf
  • 保留原PDF的所有格式和内容
  • 支持批量处理多个PDF文件

使用方法

Python脚本方式

from pypdf import PdfReader, PdfWriter
from pdf2image import convert_from_path
import pytesseract
import os

def extract_text_with_ocr(pdf_path, page_num):
    """
    使用OCR从PDF页面提取文字(用于扫描件)
    
    Args:
        pdf_path: PDF文件路径
        page_num: 页码(从0开始)
    
    Returns:
        str: 提取的文字
    """
    try:
        # 将PDF页面转为图片
        images = convert_from_path(pdf_path, first_page=page_num+1, last_page=page_num+1)
        if images:
            # 使用OCR识别文字
            text = pytesseract.image_to_string(images[0], lang='chi_sim')
            return text
    except Exception as e:
        print(f"  OCR识别第 {page_num+1} 页时出错: {e}")
    return ""


def split_pdf_by_pages(input_path, output_dir=None, keyword="显示日期", use_ocr=False):
    """
    将PDF中包含指定关键词的页面切割成多个文件
    
    Args:
        input_path: 输入PDF文件路径
        output_dir: 输出目录(默认为原文件所在目录)
        keyword: 要搜索的关键词,默认为 显示日期
        use_ocr: 是否使用OCR识别扫描件,默认为False
    
    Returns:
        list: 生成的文件路径列表
    """
    # 获取文件信息
    input_path = os.path.abspath(input_path)
    base_name = os.path.splitext(os.path.basename(input_path))[0]
    
    if output_dir is None:
        output_dir = os.path.dirname(input_path)
    else:
        output_dir = os.path.abspath(output_dir)
        os.makedirs(output_dir, exist_ok=True)
    
    # 读取PDF
    reader = PdfReader(input_path)
    total_pages = len(reader.pages)
    output_files = []
    matched_pages = []
    
    print(f"正在处理: {os.path.basename(input_path)}")
    print(f"总页数: {total_pages}")
    print(f"搜索关键词: 显示日期")
    if use_ocr:
        print("已启用OCR识别(用于扫描件)")
    
    # 先扫描所有页面,找出包含关键词的页面
    for page_num in range(total_pages):
        page = reader.pages[page_num]
        text = page.extract_text() or ""
        
        # 如果文本为空且启用OCR,则使用OCR识别
        if not text and use_ocr:
            print(f"  第 {page_num + 1} 页无文本,尝试OCR识别...")
            text = extract_text_with_ocr(input_path, page_num)
        
        if "显示日期" in text:
            matched_pages.append(page_num)
            print(f"  第 {page_num + 1} 页包含关键词")
    
    if not matched_pages:
        print(f"未找到包含 显示日期 的页面")
        return []
    
    print(f"共找到 {len(matched_pages)} 个包含 显示日期 的页面")
    
    # 只切割包含关键词的页面
    for page_num in matched_pages:
        writer = PdfWriter()
        writer.add_page(reader.pages[page_num])
        
        # 生成输出文件名: 原文件名_页码.pdf
        output_filename = f"{base_name}_p{page_num + 1}.pdf"
        output_path = os.path.join(output_dir, output_filename)
        
        # 写入文件
        with open(output_path, 'wb') as output_file:
            writer.write(output_file)
        
        output_files.append(output_path)
        print(f"  已生成: {output_filename}")
    
    print(f"完成!共生成 {len(output_files)} 个文件")
    print(f"输出目录: {output_dir}")
    
    return output_files


def split_pdfs_in_directory(input_dir, output_dir=None, use_ocr=False):
    """
    批量处理目录中的所有PDF文件
    
    Args:
        input_dir: 输入目录路径
        output_dir: 输出目录路径(默认为输入目录下的split子目录)
        use_ocr: 是否使用OCR识别扫描件
    """
    input_dir = os.path.abspath(input_dir)
    
    if output_dir is None:
        output_dir = os.path.join(input_dir, 'split')
    else:
        output_dir = os.path.abspath(output_dir)
    
    os.makedirs(output_dir, exist_ok=True)
    
    # 查找所有PDF文件
    pdf_files = [f for f in os.listdir(input_dir) if f.lower().endswith('.pdf')]
    
    if not pdf_files:
        print(f"在 {input_dir} 中未找到PDF文件")
        return
    
    print(f"找到 {len(pdf_files)} 个PDF文件")
    if use_ocr:
        print("已启用OCR识别(用于扫描件)")
    print("=" * 50)
    
    all_outputs = []
    for pdf_file in pdf_files:
        input_path = os.path.join(input_dir, pdf_file)
        # 为每个PDF创建子目录
        file_output_dir = os.path.join(output_dir, os.path.splitext(pdf_file)[0])
        outputs = split_pdf_by_pages(input_path, file_output_dir, use_ocr=use_ocr)
        all_outputs.extend(outputs)
        print("-" * 50)
    
    print(f"\
全部完成!共生成 {len(all_outputs)} 个文件")
    print(f"所有文件保存在: {output_dir}")
    
    return all_outputs


# 使用示例
if __name__ == "__main__":
    import sys
    
    if len(sys.argv) < 2:
        print("用法:")
        print("  python split_pdf.py <PDF文件路径> [输出目录] [--ocr]")
        print("  python split_pdf.py --dir <目录路径> [输出目录]")
        print()
        print("示例:")
        print("  python split_pdf.py document.pdf")
        print("  python split_pdf.py document.pdf ./output")
        print("  python split_pdf.py document.pdf ./output --ocr")
        print("  python split_pdf.py --dir ./pdfs")
        sys.exit(1)
    
    # 检查是否启用OCR
    use_ocr = '--ocr' in sys.argv
    if use_ocr:
        sys.argv.remove('--ocr')
    
    if sys.argv[1] == '--dir':
        # 批量处理目录
        input_dir = sys.argv[2]
        output_dir = sys.argv[3] if len(sys.argv) > 3 else None
        split_pdfs_in_directory(input_dir, output_dir, use_ocr=use_ocr)
    else:
        # 处理单个文件
        input_path = sys.argv[1]
        output_dir = sys.argv[2] if len(sys.argv) > 2 else None
        split_pdf_by_pages(input_path, output_dir, use_ocr=use_ocr)

命令行方式

安装依赖:

# 基础依赖
pip install pypdf

# OCR依赖(用于扫描件PDF)
pip install pdf2image pytesseract

# 安装Tesseract-OCR引擎
# macOS:
brew install tesseract tesseract-lang

# Ubuntu/Debian:
# sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim

# Windows:
# 下载安装包: https://github.com/UB-Mannheim/tesseract/wiki

切割单个PDF(普通PDF):

python split_pdf.py document.pdf

切割扫描件PDF(启用OCR):

python split_pdf.py document.pdf --ocr

输出:document_p1.pdf, document_p2.pdf...(仅包含 显示日期 的页面)

指定输出目录:

python split_pdf.py document.pdf ./output

批量处理目录:

python split_pdf.py --dir ./pdfs

输出示例

输入文件:report.pdf(共5页,其中第2页和第4页包含 显示日期)

处理过程:

正在处理: report.pdf
总页数: 5
搜索关键词: 显示日期
  第 2 页包含关键词
  第 4 页包含关键词
共找到 2 个包含 显示日期 的页面
  已生成: report_p2.pdf
  已生成: report_p4.pdf
完成!共生成 2 个文件

输出文件:

report_p2.pdf  (原第2页,包含 显示日期)
report_p4.pdf  (原第4页,包含 显示日期)

注意事项

  1. 依赖安装: 需要安装 pypdf 库 (pip install pypdf)
  2. 文件覆盖: 如果输出文件已存在,将被覆盖
  3. 命名冲突: 同一目录下不要有不同扩展名的同名文件
  4. 大文件处理: 对于页数很多的PDF,处理时间可能较长

进阶用法

提取指定页面范围

def split_pdf_range(input_path, start_page, end_page, output_path):
    """提取指定页面范围到新PDF"""
    reader = PdfReader(input_path)
    writer = PdfWriter()
    
    for page_num in range(start_page - 1, end_page):
        writer.add_page(reader.pages[page_num])
    
    with open(output_path, 'wb') as output_file:
        writer.write(output_file)
    
    print(f"已提取第 {start_page}-{end_page} 页到: {output_path}")

# 示例:提取第3-5页
split_pdf_range('document.pdf', 3, 5, 'document_pages_3_5.pdf')

按指定页数分组切割

def split_pdf_by_group(input_path, pages_per_file, output_dir=None):
    """
    按指定页数分组切割PDF
    例如:每2页一个文件
    """
    input_path = os.path.abspath(input_path)
    base_name = os.path.splitext(os.path.basename(input_path))[0]
    
    if output_dir is None:
        output_dir = os.path.dirname(input_path)
    else:
        output_dir = os.path.abspath(output_dir)
        os.makedirs(output_dir, exist_ok=True)
    
    reader = PdfReader(input_path)
    total_pages = len(reader.pages)
    
    file_count = 0
    for start in range(0, total_pages, pages_per_file):
        writer = PdfWriter()
        end = min(start + pages_per_file, total_pages)
        
        for page_num in range(start, end):
            writer.add_page(reader.pages[page_num])
        
        file_count += 1
        output_filename = f"{base_name}_part{file_count}.pdf"
        output_path = os.path.join(output_dir, output_filename)
        
        with open(output_path, 'wb') as output_file:
            writer.write(output_file)
        
        print(f"已生成: {output_filename} (第{start+1}-{end}页)")
    
    print(f"完成!共生成 {file_count} 个文件")

# 示例:每3页一个文件
split_pdf_by_group('document.pdf', 3)

常见问题

Q: 切割后的PDF文件大小比原文件大? A: 这是正常现象,因为每个单页文件都包含完整的PDF结构信息。

Q: 如何处理加密的PDF? A: 需要先解密PDF:

reader = PdfReader('encrypted.pdf')
if reader.is_encrypted:
    reader.decrypt('password')

Q: 能否保持原PDF的书签和元数据? A: 基础切割不包含书签,如需保留元数据,需要使用更高级的库如 pikepdf。

平台分布

OpenClaw

72.93%
按下载量换算676

安全审计

VirusTotal

未展示

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills