PDFの表データを抽出することで、表の情報をExcelなどの編集可能なスプレッドシート形式に変換することができます。これにより、データ分析、比較、統計、その他の操作が容易になり、ユーザがデータをより良く理解し、利用できるようになります。
この記事では、Pythonを使用してPDFの表をTXTまたはExcelに抽出する方法を示します。
• PythonでPDFからTXTに表を抽出する
• PythonでPDFからExcelに表を抽出する
使用するPythonライブラリ
Spire.PDF for Python: このPython PDFライブラリは、PDFテーブルからデータを抽出するために使用されます。
Spire.XLS for Python: このPython ExcelライブラリはPDFテーブルデータをExcelファイルにエクスポートします。
コードに入る前に、以下のpipコマンドを使用して2つのPythonライブラリをインストールすることができます。
pip install Spire.PDF
pip install Spire.XLS
PythonでPDFの表を抽出し、TXTファイルにエクスポートする
タスクを完了するには、以下の主なステップを使用することができます:
-
PdfDocument
クラスのLoadFromFile()
メソッドでPDFファイルをロードする。 -
PdfTableExtractor
クラスのExtractTable()
メソッドを使用して、PDFファイル内のページを繰り返し、そこからテーブルを抽出します。 - 抽出された表とその中の各行と各列を繰り返し処理し、
PdfTable
クラスのGetText(rowIndex, columnIndex)
メソッドを使用してセルデータを取得します。 - PDFテーブルデータをtxtファイルに書き込みます。
Pythonコード例:
from spire.pdf.common import *
from spire.pdf import *
# PDFファイルを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("Table.pdf")
# 抽出したデータを保存するリストを作成する
builder = []
# PdfTableExtractorオブジェクトの作成
extractor = PdfTableExtractor(pdf)
# テーブルを抽出するためにページをループする
for page in range(pdf.Pages.Count):
tableList = extractor.ExtractTable(page)
# テーブルをループする
if tableList is not None and len(tableList) > 0:
for table in tableList:
# テーブルの行数と列数を取得する
row = table.GetRowCount()
column = table.GetColumnCount()
# 行と列をループする
for i in range(row):
for j in range(column):
# 特定の表セルからテキストを取得する
text = table.GetText(i, j)
# テキストをリストに追加する
builder.append(text + " ")
builder.append("\n")
builder.append("\n")
# TXTテキストファイルに書き込む
with open("Table.txt", "w", encoding="utf-8") as file:
file.write("".join(builder))
結果:
PythonでPDFの表を抽出し、Excelファイルにエクスポートする
このタスクには、Spire.XLS for PythonライブラリとともにSpire.PDF for Pythonライブラリが必要です。PDFの表データをExcelファイルにエクスポートすることで、Excelの高度な機能を使ってさらに分析を行うことができます。
PDFテーブルからデータを抽出する主な手順は、上記のサンプルと同じです。異なる点は、上記のコードではPDFテーブルのデータを直接TXTファイルに書き込んでいますが、この例では以下のようにする必要があります:
- Excelワークブックを作成し、ワークシートを追加します。
- PDFテーブルのセルから取得したテキストを、
Worksheet.Range[rowIndex, columnIndex].Value
プロパティを通してワークシート内の特定のセルに書き込みます。 -
Workbook
クラスのSaveToFile()
メソッドを使用してExcelファイルを保存します。
Pythonコード例:
from spire.pdf import *
from spire.xls import *
# PDFファイルを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("Table.pdf")
# Workbookオブジェクトの作成
workbook = Workbook()
# デフォルトのワークシートを消去する
workbook.Worksheets.Clear()
# PdfTableExtractorオブジェクトの作成
extractor = PdfTableExtractor(pdf)
sheetNumber = 1
# テーブルを抽出するためにページをループする
for page in range(pdf.Pages.Count):
tableList = extractor.ExtractTable(page)
# テーブルをループする
if tableList is not None and len(tableList) > 0:
for table in tableList:
# ワークシートを追加する
sheet = workbook.Worksheets.Add(f"sheet{sheetNumber}")
# テーブルの行数と列数を取得する
row = table.GetRowCount()
column = table.GetColumnCount()
# 行と列をループする
for i in range(row):
for j in range(column):
# 特定の表セルからテキストを取得する
text = table.GetText(i, j)
# ワークシートのセルにテキストを書き込む
sheet.Range[i + 1, j + 1].Value = text
# オートフィット・カラム
sheet.AllocatedRange.AutoFitColumns()
sheetNumber += 1
# エクセルファイルの保存
workbook.SaveToFile("PDFtable.xlsx", ExcelVersion.Version2016)
結論
PythonでPDFの表データを抽出することは、ユーザーの生産性を向上させ、データ処理を自動化するのに役立ちます。これは、大量のデータを定期的に扱うユーザーや組織にとって特に有用です。
関連記事: