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.
- 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
Nonevalues. - Supports UTF-8 encoding for compatibility with non-Latin characters.
- Python 3.6+
- Libraries:
pdfplumber: For PDF table extractionpandas: For data handling
- Install dependencies:
pip install pdfplumber pandas
- Place your PDF file in the project directory.
- Update the
pdf_pathvariable inextract_pdf_tables_to_separate_csvs.pywith the path to your PDF file. - Specify the
output_dirin the script to define where CSV files will be saved (default:output_tables). - Run the script:
python extract_pdf_tables_to_separate_csvs.py
- Check the output directory for CSV files named after table captions or generic names for tables without captions.
- 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: برای استخراج جداول از PDFpandas: برای مدیریت دادهها
- نصب وابستگیها:
pip install pdfplumber pandas
- فایل PDF خود را در پوشه پروژه قرار دهید.
- متغیر
pdf_pathرا در فایلextract_pdf_tables_to_separate_csvs.pyبا مسیر فایل PDF خود بهروزرسانی کنید. - پوشه خروجی (
output_dir) را در اسکریپت مشخص کنید تا فایلهای CSV در آن ذخیره شوند (پیشفرض:output_tables). - اسکریپت را اجرا کنید:
python extract_pdf_tables_to_separate_csvs.py
- پوشه خروجی را بررسی کنید تا فایلهای 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
- 将您的 PDF 文件放入项目目录。
- 在
extract_pdf_tables_to_separate_csvs.py文件中更新pdf_path变量为您的 PDF 文件路径。 - 在脚本中指定
output_dir以定义 CSV 文件的保存位置(默认:output_tables)。 - 运行脚本:
python extract_pdf_tables_to_separate_csvs.py
- 检查输出目录,查看以表格标题命名的 CSV 文件或无标题表格的通用名称文件。
- 该脚本适用于文本型 PDF。对于扫描型 PDF,需要 OCR(例如
pytesseract)。 - 复杂表格布局(例如合并单元格)可能需要额外配置。
- 如果表格标题与
Table X-Y. Description格式不同,请修改脚本中的正则表达式模式。 - 对于跨页表格,可能需要手动合并或添加额外逻辑。