pdf

全面的PDF处理工具包,支持文本与表格提取、新PDF创建、文档合并/拆分及表单处理功能。当Claude需要批量填写PDF表单,或通过编程方式大规模处理、生成或分析PDF文档时使用。

安装

热度:3254

下载并解压到你的 skills 目录

复制命令,发送给智能体自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=composiohq-document-skills-pdf&locale=zh&source=copy

PDF 处理技能 - Python 文档自动化工具包

技能概述


PDF 处理技能是一套完整的 Python 文档操作工具,用于从 PDF 中提取文本和表格数据、创建新文档、合并和分割文件,以及处理表单填写等任务,帮助用户实现文档处理自动化。

适用场景

  • 数据提取与分析 - 从发票、报表、扫描文档中提取结构化数据,支持表格识别和 OCR 文字识别,适用于财务、数据分析等需要处理大量纸质文档数字化工作的场景。
  • 文档自动化生成 - 使用 reportlab 创建格式化的 PDF 报告、合同、证书等文档,或通过模板批量生成个性化文档,适用于企业报表、自动化通知单生成等场景。
  • 文档批量处理 - 合并多个扫描文件、分割大型文档、批量添加水印或密码保护,适用于档案管理、文件整理、文档安全保护等日常办公场景。
  • 核心功能

  • 文本与表格提取 - 使用 pdfplumber 从 PDF 中精确提取文本内容和表格数据,支持保持原始布局,识别复杂表格结构,可将提取的数据直接转换为 Excel 格式进行后续分析。
  • PDF 操作与转换 - 基于 pypdf 实现文档合并、分割、旋转、添加水印等基础操作,支持通过 qpdf、pdftk 等命令行工具进行批量处理,结合 OCR 技术处理扫描版文档。
  • PDF 创建与表单处理 - 使用 reportlab 库从头创建 PDF 文档,支持多页面布局、图文混排、自定义样式;提供表单填写功能,可自动化填充 PDF 表单字段并保存。
  • 常见问题

    如何从 PDF 中提取表格数据到 Excel?


    使用 pdfplumber 库可以识别 PDF 中的表格结构并提取数据。代码示例:

    import pdfplumber
    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:
                    df = pd.DataFrame(table[1:], columns=table[0])
                    all_tables.append(df)
        
        if all_tables:
            combined_df = pd.concat(all_tables, ignore_index=True)
            combined_df.to_excel("extracted_tables.xlsx", index=False)

    Python 处理 PDF 用哪个库最好?


    不同任务适合不同库:
  • pypdf - 最适合基础操作(合并、分割、旋转、加密)

  • pdfplumber - 最适合文本和表格提取,识别准确度高

  • reportlab - 最适合从头创建 PDF,支持复杂布局

  • pytesseract + pdf2image - 适合扫描版 OCR 识别

  • pdf-lib - 适合 JavaScript 环境或需要填写表单的场景
  • 大多数任务可以通过组合这些库完成,具体选择取决于你的需求和开发环境。

    如何批量合并多个 PDF 文件?


    使用 pypdf 可以轻松合并多个 PDF:

    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)

    如需命令行批量处理,可以使用 qpdf:qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf

    扫描版 PDF 怎样提取文字?


    扫描版 PDF 是图片格式,需要先转换为图像再进行 OCR 识别:

    import pytesseract
    from pdf2image import convert_from_path
    
    images = convert_from_path('scanned.pdf')
    text = ""
    for i, image in enumerate(images):
        text += f"Page {i+1}:\n"
        text += pytesseract.image_to_string(image)
        text += "\n\n"

    这需要安装 Tesseract OCR 引擎和 pdf2image 库,识别准确度取决于文档质量和文字清晰度。

    PDF 处理能识别手写字迹吗?


    标准 OCR 工具(如 Tesseract)对印刷体识别效果较好,但对个人手写字迹识别能力有限。如果需要识别手写内容,建议:
  • 使用更高阶的 OCR 服务(如 Google Cloud Vision API、Azure OCR)

  • 考虑人工校对或手写内容数字化输入

  • 对于表单手写签字等场景,可能需要专门的签名识别工具
  • 大多数文档处理场景(发票、报表、合同)都是印刷体,标准 OCR 即可满足需求。