Skip to content

Ha1o/pdf_table_stitcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDF Table Stitcher 📄✂️🧩

PDF 跨页表格自动检测与拼接工具 — 自动识别扫描件 PDF 中被分页截断的表格,裁剪并无缝拼接为完整图片。

✨ 功能特性

  • 🔍 智能表格检测 — 基于 OpenCV 形态学操作,通过横线/竖线交叉点精准定位表格区域
  • 📐 跨页截断识别 — 自动判定相邻页面顶部/底部的表格碎片是否属于同一张被截断的表格
  • 🧩 智能拼接 — 自适应宽度对齐(等比缩放),垂直方向无缝拼合
  • 📦 批量处理 — 支持多 PDF 文件并行处理(多进程加速)
  • ⚙️ 参数可调 — 所有关键阈值均通过全局变量暴露,附详细中文注释,方便微调

📋 适用场景

  • 扫描合同、协议中的跨页表格(如小红书商务合作协议等)
  • 纯图片型 PDF,无法使用 camelot/pdfplumber 等文字提取库的场景
  • 任何需要从扫描文档中提取完整表格图像的需求

🚀 快速开始

安装依赖

pip install -r requirements.txt

使用方法

  1. 将待处理的 PDF 文件放入 ./input 目录
  2. 运行脚本:
python pdf_table_stitcher.py
  1. 拼接好的表格图片将输出到 ./output 目录

输出命名规范

{原PDF文件名}_合并表格_Page{N}-{N+1}.jpg

例如:合同_合并表格_Page1-2.jpg

⚙️ 可调参数

pdf_table_stitcher.py 顶部的全局变量区域,可以根据实际文档调整以下参数:

参数 默认值 说明
DPI 300 PDF 栅格化分辨率
HORIZONTAL_KERNEL_WIDTH_RATIO 1/30 横线检测 kernel 宽度占图像宽度比例
VERTICAL_KERNEL_HEIGHT_RATIO 1/30 竖线检测 kernel 高度占图像高度比例
DILATE_ITERATIONS 3 膨胀迭代次数,连接断裂线段
MIN_TABLE_AREA_RATIO 0.005 最小表格面积占比(过滤噪声)
EDGE_MARGIN_RATIO 0.12 跨页判定边距(页面高度的 12%)
WIDTH_SIMILARITY_THRESHOLD 0.35 跨页表格宽度相似度阈值
OUTPUT_JPEG_QUALITY 95 输出 JPEG 质量

🔧 技术栈

  • PyMuPDF (fitz) — PDF 栅格化
  • OpenCV — 形态学操作 & 表格检测
  • NumPy — 图像数组操作
  • Pillow — 图像保存

📁 项目结构

pdf_table_stitcher/
├── pdf_table_stitcher.py   # 主脚本
├── requirements.txt        # Python 依赖
├── input/                  # 放入待处理的 PDF
├── output/                 # 输出拼接后的表格图片
├── LICENSE                 # MIT License
└── README.md

📄 License

MIT

About

PDF 跨页表格检测与拼接工具

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages