Skip to content

hamideagle/PDF-Table-Extractor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PDF Table Extractor

English

Description

This Python script extracts tables from text-based PDF files and saves each table as a separate CSV file. It identifies tables based on captions (e.g., "Table 2-1. Summary of Soil Conditions and Pile Properties") and names the output CSV files using the sanitized table captions. The script is designed to be general-purpose, handling multiple tables across pages.

Features

  • Extracts tables from text-based PDFs using pdfplumber.
  • Identifies table captions with a regex pattern (Table \d+-\d+\.\s*[^\n]+).
  • Saves each table as a separate CSV file in a specified output directory.
  • Sanitizes filenames to remove invalid characters.
  • Handles tables without captions by assigning generic names (e.g., Table_X_No_Caption.csv).
  • Cleans table data by removing empty rows/columns and handling None values.
  • Supports UTF-8 encoding for compatibility with non-Latin characters.

Requirements

  • Python 3.6+
  • Libraries:
    • pdfplumber: For PDF table extraction
    • pandas: For data handling
  • Install dependencies:
    pip install pdfplumber pandas

Usage

  1. Place your PDF file in the project directory.
  2. Update the pdf_path variable in extract_pdf_tables_to_separate_csvs.py with the path to your PDF file.
  3. Specify the output_dir in the script to define where CSV files will be saved (default: output_tables).
  4. Run the script:
    python extract_pdf_tables_to_separate_csvs.py
  5. Check the output directory for CSV files named after table captions or generic names for tables without captions.

Notes

  • The script assumes text-based PDFs. For scanned PDFs, OCR (e.g., pytesseract) is required.
  • Tables with complex layouts (e.g., merged cells) may need additional configuration.
  • Modify the regex pattern in the script if table captions differ from the format Table X-Y. Description.
  • For multi-page tables, manual merging or additional logic may be needed.

فارسی

توضیحات

این اسکریپت پایتون جداول را از فایل‌های PDF متنی استخراج کرده و هر جدول را به‌صورت یک فایل CSV جداگانه ذخیره می‌کند. جداول بر اساس عنوان‌هایشان (مانند «Table 2-1. Summary of Soil Conditions and Pile Properties») شناسایی شده و فایل‌های CSV خروجی با استفاده از نام‌های تمیز شده عنوان‌ها نام‌گذاری می‌شوند. این اسکریپت به‌صورت عمومی طراحی شده و می‌تواند چندین جدول را در صفحات مختلف پردازش کند.

ویژگی‌ها

  • استخراج جداول از PDFهای متنی با استفاده از pdfplumber.
  • شناسایی عنوان‌های جداول با الگوی regex (Table \d+-\d+\.\s*[^\n]+).
  • ذخیره هر جدول به‌صورت یک فایل CSV جداگانه در پوشه خروجی مشخص‌شده.
  • تمیز کردن نام فایل‌ها برای حذف کاراکترهای غیرمجاز.
  • مدیریت جداول بدون عنوان با اختصاص نام‌های عمومی (مانند Table_X_No_Caption.csv).
  • پاک‌سازی داده‌های جدول با حذف ردیف‌ها/ستون‌های خالی و مدیریت مقادیر None.
  • پشتیبانی از کدگذاری UTF-8 برای سازگاری با کاراکترهای غیرلاتین.

پیش‌نیازها

  • پایتون 3.6 یا بالاتر
  • کتابخانه‌ها:
    • pdfplumber: برای استخراج جداول از PDF
    • pandas: برای مدیریت داده‌ها
  • نصب وابستگی‌ها:
    pip install pdfplumber pandas

نحوه استفاده

  1. فایل PDF خود را در پوشه پروژه قرار دهید.
  2. متغیر pdf_path را در فایل extract_pdf_tables_to_separate_csvs.py با مسیر فایل PDF خود به‌روزرسانی کنید.
  3. پوشه خروجی (output_dir) را در اسکریپت مشخص کنید تا فایل‌های CSV در آن ذخیره شوند (پیش‌فرض: output_tables).
  4. اسکریپت را اجرا کنید:
    python extract_pdf_tables_to_separate_csvs.py
  5. پوشه خروجی را بررسی کنید تا فایل‌های CSV با نام‌های برگرفته از عنوان‌های جداول یا نام‌های عمومی برای جداول بدون عنوان را ببینید.

نکات

  • اسکریپت برای PDFهای متنی طراحی شده است. برای PDFهای اسکن‌شده، نیاز به OCR (مانند pytesseract) است.
  • جداول با ساختارهای پیچیده (مانند سلول‌های ادغام‌شده) ممکن است نیاز به تنظیمات اضافی داشته باشند.
  • اگر عنوان‌های جداول با فرمت Table X-Y. Description متفاوت باشند، الگوی regex در اسکریپت را اصلاح کنید.
  • برای جداول چندصفحه‌ای، ممکن است نیاز به ادغام دستی یا منطق اضافی باشد.

中文

描述

此 Python 脚本从文本型 PDF 文件中提取表格,并将每个表格保存为单独的 CSV 文件。它根据表格标题(例如“Table 2-1. Summary of Soil Conditions and Pile Properties”)识别表格,并使用清理后的标题命名输出的 CSV 文件。该脚本设计为通用的,可处理跨多个页面的多个表格。

功能

  • 使用 pdfplumber 从文本型 PDF 中提取表格。
  • 使用正则表达式模式(Table \d+-\d+\.\s*[^\n]+)识别表格标题。
  • 将每个表格保存为指定输出目录中的单独 CSV 文件。
  • 清理文件名以移除无效字符。
  • 为无标题的表格分配通用名称(例如 Table_X_No_Caption.csv)。
  • 清理表格数据,移除空行/列并处理 None 值。
  • 支持 UTF-8 编码以兼容非拉丁字符。

要求

  • Python 3.6 或更高版本
  • 依赖库:
    • pdfplumber:用于 PDF 表格提取
    • pandas:用于数据处理
  • 安装依赖:
    pip install pdfplumber pandas

使用方法

  1. 将您的 PDF 文件放入项目目录。
  2. extract_pdf_tables_to_separate_csvs.py 文件中更新 pdf_path 变量为您的 PDF 文件路径。
  3. 在脚本中指定 output_dir 以定义 CSV 文件的保存位置(默认:output_tables)。
  4. 运行脚本:
    python extract_pdf_tables_to_separate_csvs.py
  5. 检查输出目录,查看以表格标题命名的 CSV 文件或无标题表格的通用名称文件。

注意事项

  • 该脚本适用于文本型 PDF。对于扫描型 PDF,需要 OCR(例如 pytesseract)。
  • 复杂表格布局(例如合并单元格)可能需要额外配置。
  • 如果表格标题与 Table X-Y. Description 格式不同,请修改脚本中的正则表达式模式。
  • 对于跨页表格,可能需要手动合并或添加额外逻辑。

About

PDF Table Extractor

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published