PythonでPDFファイルからテキストデータを抽出する方法

python3 Djyango 超初心者の備忘録

1週間前から、PythonとDjangoをネット上のチュートリアルを探しながら、試行錯誤で触っている初心者です。

現在の最終目標は、「お客様から送られてくる請求書PDFファイルから、必要なデータのみ取り出して請求情報Excelファイルへレコードを自動で追加する」処理をPythonで作成すること。

まだ完成していません。いろいろなモジュールを試してみてはダメで他のモジュールを探すといったトライアンドエラーの状態なのですが、このぐちゃぐちゃした作業記録も残しておこうと思います。どこかで同じように悩む方と未来の自分のために。

PythonでPDFからテキストを読み込む方法

Pythonを使ってPDFファイルからテキストを取得する方法は、今のところ次の2つのライブラリを使って実現できる方法があることを見つけました。

  1. pdfminer
  2. tesseract

pdfminer

PythonでPDFファイルを簡単に操作できるライブラリ。
ただし、画像ファイル形式のPDFには対応していない。
そのため、ExcelやWordなどOffice製品を使って作成されたPDFファイルなら読み込み可能だが、印刷したファイルをスキャナーで取り込んで保存されたPDFファイルからテキストを読み込むことはできない。

pdfminerで対応できる事例

Excelで請求書を作成しているお客様が、ExcelからそのままPDFにファイル変換し、請求書を送付してくれている場合ならpdfminerで操作可能。

pdfminerで対応できない事例

Excelで請求書ファイルを作成し、印鑑を押してからスキャナーで取り込みPDF化した場合は対応不可能。

pdfminerの使い方

  • pdfminerライブラリーをインストール
  • 必要なモジュールをimportで読み込み
$ pip install pdfminer.six
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage

>>>pdfminer公式サイト Git

tesseract

HPが開発し、その後Googleにより公開されたオープンソースのOCRエンジン。
画像データから高い識字率でテキスト抽出が可能。

tesseractで対応できる事例

スキャナーでスキャンされてPDFファイル化された請求書ファイルからテキストデータを取り込む。
ただし、PDFファイルからそのままテキスト抽出できないかもしれない。(現在調査中)

tesseractの使い方

  • tesseractのインストール
  • 日本語辞書の追加
  • pyocrをインストール
$ brew install tesseract

最初にHomebrewを使ってtesseract(テッセラクト)エンジンをPCにインストールします。

次に、日本語の辞書をダウンロードし、「usr/local/share/tessdata/(インストール方法によって異なる場合があるかも)」の下に移動して日本語辞書を追加します。

$ pip install pyocr

Pythonでtesseractを使いやすいようにpyocrをインストールします。

pyocrとはPython用のOCRツールラッパー。
ラッパーとは、元々のクラスや関数を使いやすいように包み込んでくれるツールのようなもの。今回は、pyocrラッパーを通じてtesseractエンジンを使うことで、より簡単にOCR操作ができるようになったり、機能を追加しやすくしてくれる。

>>>tesseractOCR公式サイト Git

Related Posts