1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでPDFを簡単にCSVに変換

Posted at

データのアクセス性と操作性は、データ管理の中心要素です。PDF形式は、クロスプラットフォームの互換性とレイアウトの固定性から、特にレポートや調査結果の保存に適しており、ドキュメントの共有や印刷に優れています。しかし、PDFの非構造化特性はデータ分析の分野での利用を制限しています。対照的に、CSV形式はシンプルで汎用性があり、処理が容易なため、データ操作と分析に最適です。
PDFをCSVに変換することで、データの実用価値が大幅に向上します。Pythonはこの変換タスクを効率的に実行できる強力なプログラミング言語です。本記事では、Pythonを使用してPDFからCSVへの変換を実現する方法について紹介します。

この記事で使用する方法は、Spire.PDF for Pythonを使用します。PyPIからインストールします:pip install Spire.PDF

PDFの表データをCSVファイルに変換する方法

CSVは構造化された汎用の表データ形式として、シンプルな形式で表データを保存できますが、複雑な書式設定や表情報はサポートしていません。そのため、PDFドキュメントをCSVファイルに変換する際には、通常PDFドキュメント内の表のみをCSVファイルに変換します。
ライブラリには、PDFドキュメントの表抽出操作を処理するためのPdfTableExtractorクラスが提供されており、個々のセルのテキストを取得することもできます。これらのクラスとメソッドを使用して、PDFの表をCSVファイルに変換することができます。
操作手順は以下の通りです:

  1. 必要なモジュールをインポートします。
  2. PdfDocumentオブジェクトを作成します。
  3. PdfDocument.LoadFromFile()メソッドを使用してPDFドキュメントを読み込みます。
  4. 表抽出操作を処理するためにPdfTableExtractorオブジェクトを作成します。
  5. PDFドキュメントのページをループします:
    • PdfTableExtractor.ExtractTable()メソッドを使用して、現在のページの表をコレクションとして抽出します。
    • コレクション内の表をループします:
      • 表の行数と列数を取得します。
      • 表の行と列をループします:
        • Utilities_PdfTable.GetText()メソッドを使用してセルデータを取得します。
        • データをリストとして保存します。
    • csvモジュールを使用して、表データをCSVファイルに書き込みます。
  6. リソースを解放します。

コード例

from spire.pdf import PdfDocument, PdfTableExtractor
import csv

# PdfDocumentのインスタンスを作成
pdf = PdfDocument()

# PDFドキュメントをロード
pdf.LoadFromFile("Sample.pdf")

# PdfTableExtractorのインスタンスを作成
extractor = PdfTableExtractor(pdf)

# PDFドキュメントのページを反復処理
for i in range(pdf.Pages.Count):
    # 現在のページからテーブルを抽出
    tables = extractor.ExtractTable(i)
    # テーブルを反復処理
    for j in range(len(tables)):
        table = tables[j]
        tableData = []
        # 行数と列数を取得
        rowCount = table.GetRowCount()
        colCount = table.GetColumnCount()
        # 行と列を反復処理
        for row in range(rowCount):
            rowData = []
            for col in range(colCount):
                # セルのテキストを取得
                text = table.GetText(row, col)
                text = text.replace("\n", "").replace("\r", "")
                rowData.append(text)
            tableData.append(rowData)
        # テーブルデータをCSVファイルに保存
        with open(f"output/Tables/Table{i+1}_{j+1}.csv", "w", newline="", encoding="utf-8") as csvFile:
            writer = csv.writer(csvFile)
            writer.writerows(tableData)

# リソースを解放
pdf.Dispose()

変換結果
PythonでPDFをCSVに変換

本記事では、Spire.PDF for Pythonを使用してPDFの表をCSVファイルに変換する方法を紹介しました。

より多くのPDFドキュメント処理のテクニックについては、Spire.PDF for Pythonのチュートリアルをご覧ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?