Pythonを用いたPDFおよび画像からのテキスト抽出とExcelへの出力

一般経費実務

はじめに

ビジネスの現場では、PDFや画像からテキストを抽出し、その情報をExcelシートにまとめるタスクがよく見られます。Pythonとそのライブラリを使用してこのタスクを自動化する方法を紹介します。

必要なライブラリのインストール

まずはじめに、このプロジェクトで使用するPythonのライブラリをインストールします。以下のライブラリが必要です:

  • pdf2image:PDFを画像に変換
  • pytesseract:OCRツール
  • pandas:データ分析ライブラリ(Excelへの出力に使用)

これらのライブラリは、以下のコマンドでインストールできます。

pip install pdf2image pytesseract pandas

PopplerとTesseract OCRエンジンのインストール

pdf2imageは内部でPopplerを使用し、pytesseractはTesseract OCRエンジンを使用します。したがって、これらもシステムにインストールする必要があります。

Popplerインストール

PopplerをWindowsにインストールし、環境変数に追加する手順は以下の通りです:

  1. popplerのWindows版をここからダウンロードします。
  2. ダウンロードしたファイルを解凍します。解凍するとpoppler-0.xx.xという名前のフォルダができます。このフォルダをC:\Program Filesなどに移動します。
  3. システム環境変数にpopplerbinフォルダへのパスを追加します。具体的には、以下の手順で行います:
    • スタートメニューを開き、「システム(コントロールパネル)」を選択します。
    • 「システムの詳細設定」をクリックします。
    • 「詳細」タブを開き、「環境変数」ボタンをクリックします。
    • 「システム環境変数」の下にある「Path」を選択し、「編集」をクリックします。
    • 「新規」ボタンをクリックし、popplerbinディレクトリへのパス(例:C:\Program Files\poppler-0.xx.x\bin)を入力します。
    • 全てのダイアログを「OK」で閉じます。
  4. 新たにコマンドプロンプトを開き、pdf2imageを使用するPythonスクリプトを再度実行します。

Tesseract-OCRインストール

Tesseract-OCRは、コマンドラインから直接インストールすることができます。そのため、まずはTesseract-OCRをインストールする必要があります。Windowsユーザーの場合は、公式GitHubリポジトリからインストーラをダウンロードしてインストールすることができます。インストールが完了したら、環境変数のPATHにTesseract-OCRのパス(デフォルトではC:\Program Files\Tesseract-OCR)を追加します。

Windowsの環境変数PATHの設定の仕方

Windowsの環境変数PATHを設定する方法は以下の通りです:

  1. コントロールパネルを開きます。スタートメニューを開き、検索ボックスに「コントロールパネル」と入力し、表示されたものをクリックします。
  2. 「システムとセキュリティ」をクリックします。
  3. 「システム」をクリックします。
  4. 左側のパネルにある「システムの詳細設定」をクリックします。
  5. 「詳細設定」タブを開き、「環境変数」ボタンをクリックします。
  6. 「システム環境変数」の一覧から「Path」を選択し、「編集」ボタンをクリックします。
  7. 新しいウィンドウが開きます。このウィンドウで、「新規」ボタンをクリックし、追加したいパスを入力します。
  8. 入力したら、「OK」ボタンをクリックしてウィンドウを閉じます。全てのウィンドウが閉じるまで、「OK」ボタンをクリックします。
  9. 環境変数の変更を反映するために、コマンドプロンプトを閉じて再開します。

注意:パスを追加するときは、既存のパスを上書きしないように注意してください。新しいパスを追加するだけで、既存のパスはそのままにしておきます。また、各パスはセミコロン(;)で区切られていることを確認してください。

OCRエンジンの言語データのダウンロード

OCRエンジンが日本語のテキストを認識できるようにするためには、日本語の言語データをダウンロードしてTesseractのtessdataディレクトリに追加する必要があります。以下のURLから日本語の言語データ(jpn.traineddata)をダウンロードできます:

tessdata/jpn.traineddata at main · tesseract-ocr/tessdata
Trained models with fast variant of the "best" LSTM models + legacy models - tesseract-ocr/tessdata

ダウンロードしたファイルを、Tesseract-OCRのインストールディレクトリ内にあるtessdataディレクトリに移動します。このディレクトリは、通常、Tesseractがインストールされた場所(例えば C:\Program Files\Tesseract-OCR\tessdata)にあります。

これで、Tesseractは日本語のテキストも認識できるようになります。なお、Windowsのユーザーアカウント制御(UAC)により、Program Files ディレクトリへの書き込みが制限されている場合があります。その場合、jpn.traineddata ファイルを tessdata ディレクトリにコピーする際には、管理者権限で操作を行う必要があります。

PDFからテキスト情報の抽出とExcelへの出力

以下のコードは、指定したPDFファイルからテキスト情報を抽出し、その情報を新しいExcelファイルに出力します。

import pdf2image
from PIL import Image
import pytesseract
import pandas as pd

# OCRエンジンのパスを指定(Tesseract-OCRのインストールパスを指定する)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# PDFファイルを開く
pdf_path = r'your_pdf_path_here'

# PDFを画像に変換
images = pdf2image.convert_from_path(pdf_path)

# 画像からテキストを抽出
text = pytesseract.image_to_string(images[0], lang='jpn')

# データをデータフレームに変換
df = pd.DataFrame({'Text': [text]})

# データフレームをExcelファイルに書き込む
df.to_excel('output.xlsx', index=False)

コードの解説

上記のコードは、以下の手順で動作します。

  1. まず、OCRエンジンのパスを指定します。ここではTesseract-OCRのインストールパスを指定しています。
  2. 次に、PDFファイルのパスを指定します。
  3. pdf2imageライブラリを使って、PDFファイルを画像に変換します。
  4. 画像をpytesseractに渡して、画像からテキストを抽出します。ここでは、OCRエンジンが日本語のテキストを認識できるように、lang='jpn'オプションを指定しています。
  5. テキストをpandasのデータフレームに変換します。
  6. 最後に、pandasを使って、データフレームを新しいExcelファイルに書き込みます。

このプログラムを実行すると、指定したPDFファイルからテキスト情報が抽出され、その情報がExcelファイル(’output.xlsx’)に出力されます。

まとめ

この記事では、Pythonとそのライブラリを使用してPDFや画像からテキストを抽出し、その結果をExcelに出力する方法を紹介しました。これにより、手動での情報抽出とデータ入力作業を自動化することが可能になり、作業効率を大幅に向上させることができます。

タイトルとURLをコピーしました