mcpField
P
PDF Processing

PDF Processing

github.com/davila7文档处理33.0k246 次安装今天更新
代码仓库

关于 PDF Processing

PDF Processing 是面向 PDF 处理任务的技能,介绍使用 Python 包提取文本和表格、填写表单、合并与拆分文件,并支持图像转换和 OCR。

主要功能

  1. 01提取多页文本
  2. 02检测并提取表格
  3. 03填写并验证表单
  4. 04合并与拆分 PDF
  5. 05转换页面图像并进行 OCR

适用场景

  1. 01提取报告文本供后续处理
  2. 02将 PDF 表格导出为 CSV
  3. 03合并或拆分 PDF 文档
  4. 04使用 OCR 处理扫描页面

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davila7/claude-code-templates --skill pdf-processing

安装后在 Claude Code 中输入/pdf-processing确认已加载。

附带文件FORMS.md

详细介绍

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() + "\n\n"

    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()

# Extract pages 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 = "\n\n".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 has no pages")
        else:
            text = pdf.pages[0].extract_text()
            if text is None or text.strip() == "":
                print("Page contains no extractable text (might be scanned)")
            else:
                print(text)
except Exception as e:
    print(f"Error processing PDF: {e}")

性能提示

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

评论

支持 Markdown