PDF处理技能Skill pdf-processing

这是一个用于处理PDF文件的技能工具,提供PDF文本提取、表格识别、表单填写、文档合并与拆分等功能。支持使用pdfplumber、pypdf等Python库进行高效文档处理,适用于数据分析、文档自动化、信息提取等场景。关键词:PDF处理,文本提取,表格识别,Python文档处理,PDF自动化,数据提取,文档合并。

后端开发 0 次安装 0 次浏览 更新于 2/28/2026

名称: pdf处理 描述: 从PDF文件中提取文本和表格,填写表单,合并文档。当处理PDF文件或用户提到PDF、表单或文档提取时使用。 作者: Joseph OBrien 状态: 未发布 更新日期: ‘2025-12-23’ 版本: 1.0.1 标签: 技能 类型: 技能

PDF处理

快速开始

使用pdfplumber从PDF中提取文本:

import pdfplumber

with pdfplumber.open("document.pdf") as pdf:
    text = pdf.pages[0].extract_text()
    print(text)

提取表格

通过自动检测从PDF中提取表格:

import pdfplumber

with pdfplumber.open("report.pdf") as pdf:
    page = pdf.pages[0]
    tables = page.extract_tables()

    for table in tables:
        for row in table:
            print(row)

提取所有页面

高效处理多页文档:

import pdfplumber

with pdfplumber.open("document.pdf") as pdf:
    full_text = ""
    for page in pdf.pages:
        full_text += page.extract_text() + "

"

    print(full_text)

表单填写

有关PDF表单填写,请参阅FORMS.md获取完整指南,包括字段分析和验证。

合并PDF

合并多个PDF文件:

from pypdf import PdfMerger

merger = PdfMerger()

for pdf in ["file1.pdf", "file2.pdf", "file3.pdf"]:
    merger.append(pdf)

merger.write("merged.pdf")
merger.close()

拆分PDF

提取特定页面或范围:

from pypdf import PdfReader, PdfWriter

reader = PdfReader("input.pdf")
writer = PdfWriter()

# 提取第2-5页
for page_num in range(1, 5):
    writer.add_page(reader.pages[page_num])

with open("output.pdf", "wb") as output:
    writer.write(output)

可用包

  • pdfplumber - 文本和表格提取(推荐)
  • pypdf - PDF操作、合并、拆分
  • pdf2image - 将PDF转换为图像(需要poppler)
  • pytesseract - 扫描PDF的OCR(需要tesseract)

常见模式

提取并保存文本:

import pdfplumber

with pdfplumber.open("input.pdf") as pdf:
    text = "

".join(page.extract_text() for page in pdf.pages)

with open("output.txt", "w") as f:
    f.write(text)

提取表格到CSV:

import pdfplumber
import csv

with pdfplumber.open("tables.pdf") as pdf:
    tables = pdf.pages[0].extract_tables()

    with open("output.csv", "w", newline="") as f:
        writer = csv.writer(f)
        for table in tables:
            writer.writerows(table)

错误处理

处理常见的PDF问题:

import pdfplumber

try:
    with pdfplumber.open("document.pdf") as pdf:
        if len(pdf.pages) == 0:
            print("PDF没有页面")
        else:
            text = pdf.pages[0].extract_text()
            if text is None or text.strip() == "":
                print("页面不包含可提取的文本(可能是扫描件)")
            else:
                print(text)
except Exception as e:
    print(f"处理PDF时出错: {e}")

性能提示

  • 对于大型PDF,分批处理页面
  • 处理多个文件时使用多进程
  • 仅提取所需页面而非整个文档
  • 使用后关闭PDF对象