name: PDF Processing Pro description: 生产就绪的PDF处理,支持表单、表格、OCR、验证和批量操作。适用于生产环境中的复杂PDF工作流、处理大量PDF或需要强大的错误处理和验证。
PDF Processing Pro
生产就绪的PDF处理工具包,提供预构建脚本、全面的错误处理和支持复杂工作流。
快速开始
从PDF提取文本
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
text = pdf.pages[0].extract_text()
print(text)
分析PDF表单(使用包含的脚本)
python scripts/analyze_form.py input.pdf --output fields.json
# 返回:包含所有表单字段、类型和位置的JSON
填充PDF表单并进行验证
python scripts/fill_form.py input.pdf data.json output.pdf
# 在填充前验证所有字段,包括错误报告
从PDF提取表格
python scripts/extract_tables.py report.pdf --output tables.csv
# 提取所有表格,自动检测列
功能
✅ 生产就绪的脚本
所有脚本包括:
- 错误处理:优雅失败,提供详细错误信息
- 验证:输入验证和类型检查
- 日志记录:可配置日志记录,带时间戳
- 类型提示:完整的类型注释,支持IDE
- CLI界面:所有脚本支持
--help标志 - 退出代码:正确的退出代码,便于自动化
✅ 全面工作流
- PDF表单:完整的表单处理管道
- 表格提取:高级表格检测和提取
- OCR处理:扫描PDF文本提取
- 批量操作:高效处理多个PDF
- 验证:预处理和后处理验证
高级主题
PDF表单处理
用于完整表单工作流,包括:
- 字段分析和检测
- 动态表单填充
- 验证规则
- 多页表单
- 复选框和单选按钮处理
参见 FORMS.md
表格提取
用于复杂表格提取:
- 多页表格
- 合并单元格
- 嵌套表格
- 自定义表格检测
- 导出到CSV/Excel
参见 TABLES.md
OCR处理
用于扫描PDF和基于图像的文档:
- Tesseract集成
- 语言支持
- 图像预处理
- 置信度评分
- 批量OCR
参见 OCR.md
包含的脚本
表单处理
analyze_form.py - 提取表单字段信息
python scripts/analyze_form.py input.pdf [--output fields.json] [--verbose]
fill_form.py - 用数据填充PDF表单
python scripts/fill_form.py input.pdf data.json output.pdf [--validate]
validate_form.py - 填充前验证表单数据
python scripts/validate_form.py data.json schema.json
表格提取
extract_tables.py - 提取表格到CSV/Excel
python scripts/extract_tables.py input.pdf [--output tables.csv] [--format csv|excel]
文本提取
extract_text.py - 提取文本,保留格式
python scripts/extract_text.py input.pdf [--output text.txt] [--preserve-formatting]
工具
merge_pdfs.py - 合并多个PDF
python scripts/merge_pdfs.py file1.pdf file2.pdf file3.pdf --output merged.pdf
split_pdf.py - 将PDF拆分为单独页面
python scripts/split_pdf.py input.pdf --output-dir pages/
validate_pdf.py - 验证PDF完整性
python scripts/validate_pdf.py input.pdf
常见工作流
工作流1:处理表单提交
# 1. 分析表单结构
python scripts/analyze_form.py template.pdf --output schema.json
# 2. 验证提交数据
python scripts/validate_form.py submission.json schema.json
# 3. 填充表单
python scripts/fill_form.py template.pdf submission.json completed.pdf
# 4. 验证输出
python scripts/validate_pdf.py completed.pdf
工作流2:从报告提取数据
# 1. 提取表格
python scripts/extract_tables.py monthly_report.pdf --output data.csv
# 2. 提取文本用于分析
python scripts/extract_text.py monthly_report.pdf --output report.txt
工作流3:批量处理
import glob
from pathlib import Path
import subprocess
# 处理目录中的所有PDF
for pdf_file in glob.glob("invoices/*.pdf"):
output_file = Path("processed") / Path(pdf_file).name
result = subprocess.run([
"python", "scripts/extract_text.py",
pdf_file,
"--output", str(output_file)
], capture_output=True)
if result.returncode == 0:
print(f"✓ 已处理: {pdf_file}")
else:
print(f"✗ 失败: {pdf_file} - {result.stderr}")
错误处理
所有脚本遵循一致错误模式:
# 退出代码
# 0 - 成功
# 1 - 文件未找到
# 2 - 无效输入
# 3 - 处理错误
# 4 - 验证错误
# 自动化中使用示例
result = subprocess.run(["python", "scripts/fill_form.py", ...])
if result.returncode == 0:
print("成功")
elif result.returncode == 4:
print("验证失败 - 检查输入数据")
else:
print(f"发生错误: {result.returncode}")
依赖项
所有脚本需要:
pip install pdfplumber pypdf pillow pytesseract pandas
OCR可选:
# 安装tesseract-ocr系统包
# macOS: brew install tesseract
# Ubuntu: apt-get install tesseract-ocr
# Windows: 从GitHub发布版下载
性能提示
- 使用批量处理 处理多个PDF
- 启用多进程 使用
--parallel标志(在支持的地方) - 缓存提取数据 避免重复处理
- 尽早验证输入 快速失败
- 使用流式处理 对于大PDF(>50MB)
最佳实践
- 始终在处理前验证输入
- 在自定义脚本中使用try-except
- 记录所有操作 便于调试
- 使用样本PDF测试 在生产前
- 为长时间操作设置超时
- 在自动化中检查退出代码
- 修改前备份原件
故障排除
常见问题
“模块未找到”错误:
pip install -r requirements.txt
Tesseract未找到:
# 安装tesseract系统包(见依赖项)
大PDF内存错误:
# 逐页处理,而不是加载整个PDF
with pdfplumber.open("large.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
# 立即处理页面
权限错误:
chmod +x scripts/*.py
获取帮助
所有脚本支持 --help:
python scripts/analyze_form.py --help
python scripts/extract_tables.py --help
特定主题的详细文档,参见: