网站开发项目延期说明,景观毕业设计作品网站,云南网络网站推广,南平建设集团网站从PDF文档中提取表格并将其转换为更易于处理的格式#xff08;如文本、CSV和Excel文件#xff09;#xff0c;是数据分析和信息管理中的常见需求。此过程可显著简化表格数据的处理#xff0c;使数据的操作、分析和与其他数据集的集成更加便捷。无论是财务报表、研究论文如文本、CSV和Excel文件是数据分析和信息管理中的常见需求。此过程可显著简化表格数据的处理使数据的操作、分析和与其他数据集的集成更加便捷。无论是财务报表、研究论文还是包含结构化信息的其他文档掌握这些表格准确转换的方法对于充分发挥数据潜力至关重要。
本文将介绍如何使用简单的Python代码从PDF文档中提取表格数据并将其写入文本、CSV和Excel文件从而轻松实现PDF表格的自动化提取。 文章目录 如何使用Python提取PDF表格数据用Python将PDF表格数据提取为文本文件用Python将PDF表格数据提取为CSV文件用Python将PDF表格数据提取到Excel工作表使用Python直接将PDF转换为Excel文件 本文所需的库为Spire.PDF for Python。可通过PyPI安装pip install spire.pdf。
用于操作的示例PDF
如何使用Python提取PDF表格数据
库中的PdfTableExtractor类用于处理PDF文档的表格提取。可以通过PdfTableExtractor.ExtractTable(pageIndex: int)方法从PDF页面中提取表格并以Utilities_PdfTable对象的集合形式返回表格数据。接着可通过遍历表格并使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法获取每个单元格中的数据。
提取PDF表格数据的一般步骤如下
创建一个PdfDocument实例并使用PdfDocument.LoadFromFile()方法加载PDF文档。使用该文档创建PdfTableExtractor实例。使用PdfTableExtractor.ExtractTable(pageIndex: int)方法提取文档中每页的表格。遍历每个表格并使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法获取单元格值。将提取的表格数据写入其他文件。
注意当使用提取的表格数据构建字符串时如果单元格文本中包含换行符最终生成的文本文件中可能会多出额外的换行符。为了避免造成混淆应将这些换行符去除或替换为空格。
用Python将PDF表格数据提取为文本文件
提取PDF文档中的表格数据后可直接将每个表格的数据写入字符串并保存到文本文件中从而实现将PDF表格数据导出为文本文件。
具体步骤如下
导入所需模块PdfDocument和PdfTableExtractor。创建PdfDocument实例并使用PdfDocument.LoadFromFile()方法加载PDF文档。使用该文档创建PdfTableExtractor实例。使用PdfTableExtractor.ExtractTable(pageIndex: int)方法提取每页中的表格。遍历提取的表格 创建一个str对象以存储表格数据。使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法获取单元格值。将单元格值追加到str对象中。将str对象写入文件。 释放资源。
代码示例
from spire.pdf import PdfDocument, PdfTableExtractor# 创建一个 PdfDocument 对象
pdf PdfDocument()
# 加载一个 PDF 文档
pdf.LoadFromFile(Sample.pdf)# 创建一个 PdfTableExtractor 对象
extractor PdfTableExtractor(pdf)# 遍历所有页面
for pageIndex in range(pdf.Pages.Count):# 从每个 PDF 页面中提取表格tables extractor.ExtractTable(pageIndex)# 如果存在多个表格则遍历这些表格if tables is not None:for tableIndex in range(len(tables)):# 获取一个表格table tables[tableIndex]# 创建一个字符串对象来存储表格数据tableData # 遍历表格的行和列for rowIndex in range(table.GetRowCount()):for colIndex in range(table.GetColumnCount()):# 获取单元格文本text table.GetText(rowIndex, colIndex)text text.replace(\n, )# 将单元格文本添加到表格数据中tableData textif colIndex table.GetColumnCount() - 1:tableData \ttableData \n# 将表格数据写入文本文件with open(foutput/Tables/Page{pageIndex1}-Table{tableIndex1}.txt, w, encodingutf-8) as f:f.write(tableData)# 释放资源
pdf.Dispose()输出结果
用Python将PDF表格数据提取为CSV文件
同样可以使用类似方法从PDF文档中提取表格数据并利用Python标准库中的CSV模块将每个表格写入CSV文件。在此过程中也需注意去除或替换换行符以改善CSV文件的结果。具体步骤如下
导入所需模块PdfDocument、PdfTableExtractor和CSV。创建PdfDocument实例并使用PdfDocument.LoadFromFile()方法加载PDF文档。使用该文档创建PdfTableExtractor实例。使用PdfTableExtractor.ExtractTable(pageIndex: int)方法提取每页中的表格。遍历提取的表格 创建CSV文件。遍历表格中的行并创建列表以存储行数据。使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法获取每行的单元格值并追加到列表中。使用csv.writer().writerow()方法将每行写入CSV文件。 释放资源。
代码示例
from spire.pdf import PdfDocument, PdfTableExtractor
import csv# 创建一个 PdfDocument 对象
pdf PdfDocument()
# 加载一个 PDF 文档
pdf.LoadFromFile(Sample.pdf)# 创建一个 PdfTableExtractor 对象
extractor PdfTableExtractor(pdf)# 遍历所有页面
for pageIndex in range(pdf.Pages.Count):# 从每个 PDF 页面中提取表格tables extractor.ExtractTable(pageIndex)# 如果存在多个表格则遍历这些表格if tables is not None:for tableIndex in range(len(tables)):# 获取一个表格table tables[tableIndex]# 创建一个 CSV 文件with open(output/Tables/Page str(pageIndex1) -Table str(tableIndex1) .csv, w, newline, encodingutf-8) as csvFile:writer csv.writer(csvFile)# 遍历表格的行和列for rowIndex in range(table.GetRowCount()):row []for colIndex in range(table.GetColumnCount()):# 获取单元格文本text table.GetText(rowIndex, colIndex)text text.replace(\n, )row.append(text)writer.writerow(row)# 释放资源
pdf.Dispose()输出结果
用Python将PDF表格数据提取到Excel工作表
可使用另一库Spire.XLS for Python将提取的PDF表格数据写入Excel工作表。通过PyPI获取Spire.PDF for Pythonpip install spire.xls。 具体步骤如下
导入所需模块PdfDocument、PdfTableExtractor、Workbook和spire.xls.FileFormat。创建PdfDocument实例并使用PdfDocument.LoadFromFile()方法加载PDF文档。创建Workbook实例用于存储表格并使用Workbook.Worksheets.Clear()方法清除默认工作表。使用该文档创建PdfTableExtractor实例。使用PdfTableExtractor.ExtractTable(pageIndex: int)方法提取每页中的表格。遍历提取的表格 使用Workbook.Worksheets.Add(sheetName: str)方法为每个表格添加工作表。使用Utilities_PdfTable.GetCellText(rowIndex: int, columnIndex: int)方法获取表格的单元格值。通过Worksheet.Range[rowIndex 1, colIndex 1].Text属性将单元格值写入相应的工作表单元格。 使用Workbook.SaveToFile()方法保存工作簿。释放资源。
代码示例
from spire.pdf import PdfDocument, PdfTableExtractor
from spire.xls import Workbook, FileFormat, HorizontalAlignType# 创建一个 PdfDocument 对象
pdf PdfDocument()
# 加载一个 PDF 文档
pdf.LoadFromFile(Sample.pdf)# 创建一个 Workbook 对象
workbook Workbook()
# 清除默认的工作表
workbook.Worksheets.Clear()# 创建一个 PdfTableExtractor 对象
extractor PdfTableExtractor(pdf)# 从每个 PDF 页面中提取表格
for pageIndex in range(pdf.Pages.Count):tables extractor.ExtractTable(pageIndex)# 如果存在多个表格则遍历这些表格if tables is not None:for tableIndex in range(len(tables)):# 获取一个表格table tables[tableIndex]# 为表格创建一个工作表sheet workbook.Worksheets.Add(fPage{pageIndex 1}-Table{tableIndex 1})# 遍历表格的行和列for rowIndex in range(table.GetRowCount()):for colIndex in range(table.GetColumnCount()):# 获取单元格值text table.GetText(rowIndex, colIndex)cellText text.replace(\n, )# 将单元格值写入工作表的相应单元格sheet.Range[rowIndex 1, colIndex 1].Text cellText# 可选自定义表格的外观# 设置标题行样式sheet.Rows.get_Item(0).Style.Font.FontName Yu Gothic UIsheet.Rows.get_Item(0).Style.Font.Size 12sheet.Rows.get_Item(0).Style.Font.IsBold Truesheet.Rows.get_Item(0).Style.HorizontalAlignment HorizontalAlignType.Center# 设置数据行样式for i in range(1, sheet.Rows.Count):sheet.Rows.get_Item(i).Style.Font.FontName Yu Gothic UIsheet.Rows.get_Item(i).Style.Font.Size 12sheet.Rows.get_Item(i).Style.HorizontalAlignment HorizontalAlignType.Left# 自动调整列宽for j in range(1, sheet.Columns.Count):sheet.AutoFitColumn(j)# 保存工作簿
workbook.SaveToFile(output/PDFTableToExcel.xlsx, FileFormat.Version2016)
# 释放资源
workbook.Dispose()
pdf.Close()输出结果
使用Python直接将PDF转换为Excel文件
还可以使用PdfDocument.SaveToFile(fileName: str, FileFormat.XLSX)方法将PDF文档直接转换为Excel文件。此方法适用于以表格为主的PDF文档有助于尽可能保留表格的原始外观。 为减少转换后Excel表格中的空白可以在转换前去除PDF文档的边距。参考以下文章 Python删除PDF文档的页边距
直接将PDF文档转换为Excel文件的具体步骤如下
导入所需模块PdfDocument和FileFormat。创建一个PdfDocument实例。使用PdfDocument.LoadFromFile()方法加载PDF文档。将文档转换为Excel文件并使用PdfDocument.SaveToFile(fileName: str, FileFormat.XLSX)方法保存。释放资源。
代码示例
from spire.pdf import PdfDocument, FileFormat# 创建一个 PdfDocument 实例
pdf PdfDocument()# 加载一个 PDF 文档
pdf.LoadFromFile(Sample.pdf)# 将 PDF 文档转换为 Excel 文件
pdf.SaveToFile(output/PDFToExcel.xlsx, FileFormat.XLSX)# 关闭 PDF 文档
pdf.Close()输出结果
本文展示了如何用Python将PDF表格提取到文本、CSV和Excel文件并将PDF文档转换为Excel工作簿。
申请免费License