Pythonを使用してPDFからテキストを抽出する方法

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

PDFは、文書を一貫したスタイルとフォーマットで表示、保存、交換するための非常に一般的なフォーマットです。

しかし、これらのPDFファイルから情報を抽出するのは一筋縄ではいきません。特に、画像ベースのPDFや複数ページから成るPDFからテキストを抽出するのは困難です。

今回は、Pythonを使ってPDFからテキストデータを抽出する方法について解説します。さらに、画像ベースのPDFからテキストを抽出するためのOCR(Optical Character Recognition)の利用方法も取り上げます。

目次

ライブラリのインストール

今回はpdf2imagepytesseractを使用します。pdf2imageはPDFを画像に変換するライブラリで、pytesseractはOCRエンジン「Tesseract」をPythonから利用するためのライブラリです。

pip install pdf2image
pip install pytesseract

なお、これらのライブラリはそれぞれpopplerTesseractという外部ツールに依存しています。popplerはPDFを画像に変換するためのツールで、TesseractはOCR(Optical Character Recognition)エンジンです。

popplerのインストール方法はOSによって異なります。例えば、Ubuntuでは以下のコマンドでインストールできます。

sudo apt-get install poppler-utils

一方、Windowsでは公式のpopplerウェブサイトからバイナリをダウンロードし、適切な場所に展開する必要があります。
Anacondaを使っている場合には、以下のコマンドでインストールすることができます。

conda install -c conda-forge poppler

作成したPythonコード

ここからは実際にPythonで実装するためのコードを解説します。

Pythonコード解説

ocr_from_pdf関数

PDFからテキストを抽出する関数ocr_from_pdfを定義します。この関数ではまず、convert_from_path関数を使ってPDFファイルを画像に変換します。

次に、画像のリストの各画像について、pytesseract.image_to_string関数を使って画像からテキストを抽出します。このとき、langパラメータに'jpn'を指定して、日本語のテキストを認識できるようにします。

def ocr_from_pdf(file_path):
    images = convert_from_path(file_path)
    text = ''
    for i in range(len(images)):
        text += pytesseract.image_to_string(images[i], lang='jpn')
    return text

作成した全体のソースコード

作成した全体のコードは以下の通りです。

from pdf2image import convert_from_path
import pytesseract

# PDFからテキストを抽出する関数を定義
def ocr_from_pdf(file_path):
    # convert_from_path関数を使ってPDFファイルを画像に変換
    images = convert_from_path(file_path)

    # 抽出したテキストを保存するための空の文字列を作成
    text = ''

    # 画像リストの各画像について
    for i in range(len(images)):
        # pytesseractのimage_to_string関数を使って画像からテキストを抽出し、
        # text変数に追加。langパラメータに'jpn'を指定して日本語のテキストを認識
        text += pytesseract.image_to_string(images[i], lang='jpn')

    # 全ての画像から抽出したテキストを返す
    return text

# 対象となるPDFファイルのパスを指定
file_path = 'raspberrypi.pdf'

# ocr_from_pdf関数を使ってPDFからテキストを抽出
text = ocr_from_pdf(file_path)

# 抽出したテキストを表示
print(text)

実行結果

今回はテスト用のサンプルとして、当ブログのRaspberry Pi4のレビュー記事をPDFで使用したものを読み込んで、文字列として抽出できるかをテストします。

抽出された文字列

プログラムを実行した結果、以下のように文字列を抽出することができました。

2023705719 12:57                                                  ラズベリーバパイ4(Raspberry Pi 4)をレビュー | Murasan Lab

ラズベリーバパイ4(Raspberry Pi 4)をレ
ビュー

画 RaspberryPi 〇①2022年5月2日 ご 2023年1月8日

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                      
                             1719
2023705/19 12:57                                                ラズベリーバイ4(Raspberry Pi 4)をレビュー | Murasan Lab

新サーバーへの
移行ツールを、
2022年7月より
提供開始

さくらインターネット

い/

半導体不足の影響でずっと品薄の状況が続いていたRaspberry Pi 4ですが、ついに入手する
ことができました。パッケージの内容やラズパイ3との違いを見ていきたいと思います。

③ Python習得までのステップを解説! 初心者におすすめの勉強法
① 学んだ知識を発信しよう | WordPressで技術ブログの始め方を解説
③ Pythonの知識を活かして収益化! プログラミンでできる副業3選

2

Loupedeck (ループデック) LoupedeckLiveS PC作業効率化デだバイス

created by Rinker

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                     2719
2023705719 12:57                                                  ラズベリーバパイ4(Raspberry Pi 4)をレビュー | Murasan Lab

へ Raspberry Piを使ったアプリ開発を学びたい人には自宅で学べるUdemyがおすすめ !

UdemyでRaspberry Piの講座を見てみる

講座単位で購入できます!

1 | Raspberry Pi (ラズベリーパイ) とは
2 | 購入したパッケージ
3 | 実際に動かしてみる
4 | まとめ

5 | おすすめ記事

Raspberry Pi (ラズベリーパイ) とは

Raspberry Pi (ラズベリーパイ) はイギリスのラズベリーパイ財団が教育用に開発したボー
ドコンピュータです。

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                      
                             3719
2023705719 12:57                                                  ラズベリーバパイ4(Raspberry Pi 4)をレビュー | Murasan Lab

最新のRaspberry Pi 4では、ARMアーキテクチャを採用したBroadcom製の高性能SoC
BCM2711を搭載しており、1.5GHzで動作するARM Cortex-A72が4コアとマイコンボードの
中では非常に高速な処理能力を持っています。また、ユーザーがアクセス可能な40ピンの
GPIOも搭載しており、外部ハードウェアを制御することが可能です。

詳細なスペック等は以下の記事で解説していますので、あわせてご覧ください。

マン あわせて読みたい

に 製宅> ラズベリーパイ(Raspberry P)でで
mita さること!活用加人人
活

事例集

【数量限定】 Raspberry Pi 4 Model B/4GB element14 【送料無料】

created by Rinker

Amazon

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                      
                             4/19
2023705/19 12:57                                                ラズベリーバイ4(Raspberry Pi 4)をレビュー | Murasan Lab

ュ

JANRI Raspberry Pi 3 Model B B+ A+ 対応 電源アダプター PSE認証 5V 3A
電源スイッチ付き ケーブル長150CM

created by Rinker

NspeT
AIる

Raspberry Pi 十 Al 電子工作超入門 [ 吉田顕一 ]

created by Rinker

https:/murasan-net.com/index.php/2022/05/02/post-1816/

5719
2023705719 12:57                                              ラズベリーバパイ4(Raspberry Pi 4)をレビュー | Murasan Lab
それではラズパイの実機を見ていきたいと思います。
今回購入したのはelement14版です。

だ=っ=pberry Pi ス ごOrmいいてでで
トンシルバo【ニ】 胡三】

についいさいるいさ
SernwentA.cowwv

箱の裏にはラズパイ4のスペックが書かれていました。

https:/murasan-net.com/index.php/2022/05/02/post-1816/

6719
ラズベリーバパイ4(Raspberry Pi 4)をレビユー | Murasan Lab

2023/05/19 12:57

Raspbery Pi 4 Computer Miodel B 4GB RANM

Ger started
raSpberrypi-Org/products/raSpberry-Di-4-rmnodeLb
・802.11b/g/n/ac wireless

・64-5 quad-Core Cortex-AZ2 processor
・4GB しPDDR4 RAAM4                                 ・Bluetooth 50
・PoE-capable
(requires PoE HAT. sold separave\y)

・2 rmicro DAMI DortS

(supports up TO 4Kp60)
・5V/3A USB-C power supply reuired

(sold separately)

・2 USB 30 ports
・2 0S8 2.0 ports
・Ggabit Ethernet port
    eee をみい
LCPZR RPAB          lon9o067007         APPROVED            6
Tc: so oec9zoo9ec         い

Atek oeoo<1o-0e29

CC /D: 2ABCB-RP!4B        [起CCAon9rPnn2orz
CN oo 0 iANE4sn

/C の: 20953-RPI4B
にKOアン生に/介1CTYH
HDMIキthe HDMI" logo. and

High-Definition Multmedia Interface

「あデリ 六0
tradermarks of HDMI" Licensing LLC
           0 "76575S6 " 93118

yerocrwrriow eurawrou errmyAce

ノ人 WARING: Cancer and Reproductive Harm - www P65Warnnos Ca nov

パッケージ内容は以下の通りです。
ボード本体の他に、マニュアルと注意書きのカードのようなものが入っていました。カード

は書いてあることの意味がイマイチ良くわかりません。

719

https:/murasan-net.com/index.php/2022/05/02/post-1816/
2023705719 12:57                                                  ラズベリーバパイ4(Raspberry Pi 4)をレビュー | Murasan Lab

こちらがボード本体です。 見た目で大きく変わったのは左上のシルバーのチップでWifi、
Bluetoothモジュールがかなり大きくなっています。またディスプレイ出力が通常のHDMIコ
ネクタからMicro HDMIに変更され2つに増えています。

https:/murasan-net.com/index.php/2022/05/02/post-1816/

8719
2023/05/19 12:57

ラズベリーバパイ4(Raspberry Pi 4)をレビュー | Murasan Lab

eccyaPt 4
<) Wspberry P

-           m
げCC 】0、 248C8-RPI4B.

rfC: 20953-RPT4B

すず    (@先CO

【e過<」

GPIOのピン数については同じですが、信号のアサインが変わっています。

https:/murasan-net.com/index.php/2022/05/02/post-1816/

9719
2023705719 12:57                                                  ラズベリーバパイ4(Raspberry Pi 4)をレビュー | Murasan Lab

USBコネクタはType-Aが4つ搭載されていますが、Raspberry Pi 4から中央の2つのコネクタ
がUSB3.0に変更されています。外部ストレージなどと高速に通信できるのはうれしいです
ね。

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                      
                           10719
2023705/19 12:57                                                ラズベリーバイ4(Raspberry Pi 4)をレビュー | Murasan Lab

Raspberry Pi 4 Model B/4GB element14 【送料無料】画あす楽便対応・
高評価商品※再入荷しました※田工事設計認証 (技適・電波法) 設計認証
(電気通信事業法) 番号 : 007-AF0184/D190067007

created by Rinker

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                    11719
2023705719 12:57                                                    ラズベリーバパイ4(Raspberry Pi 4)をレビュー | Murasan Lab

実際に動かしてみる

早速、動作確認をしていきたいと思います。
電源は以前RSで発注したラズパイ4用に買っておいたものを使用します。

Smraza Raspberry Pi 4 USB-C (Type C) 電源、5V 3A ラズベリーACアダプター RPi 4b
Model B 1GB / 2GB / 4GB/ 8GB適用 PSE取得

ラズパイは0Sをシャットダウンした後に電源ケーブルを外す必要がありますが、今回用意
した電源はON/OFFスイッチがついているため毎回ケーブルを外す必要がなく便利です。

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                      
                           12719
2023705/19 12:57                                                ラズベリーバイ4(Raspberry Pi 4)をレビュー | Murasan Lab

ディスプレイを繋いで電源を入れると無事に起動しました。Raspberry PI OSのセットアッ
プ画面の背景が新しくなっています。

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                   13719
2023705/19 12:57                                                ラズベリーバイ4(Raspberry Pi 4)をレビュー | Murasan Lab

早速GPUメモリを拡張しようと思ったのですが、割り当てを1GBとかには設定できないよう
です。
とりあえず512MBに設定しました。

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                   14719
2023705/19 12:57                                                ラズベリーバイ4(Raspberry Pi 4)をレビュー | Murasan Lab

GPUメモリの設定について以下の記事でも解説しています。

「ー ツ あわせて読みたい

【Raspberry Pi】GPUメモリーを拡
張して描画速度をあげてみた

実際に動かしてみて感じたのはSoCの処理能力も上がってはいますが、メモリが4GBに増え
たためかデスクトップがめちゃくちゃ軽くなっていて快適だなという印象でした。

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                   15719
2023705/19 12:57                                                ラズベリーバイ4(Raspberry Pi 4)をレビュー | Murasan Lab

OWON USBオシロスコープ VDS1022i (isolation/絶緑機能付き版) 2ch PC
オシロスコープ バーチャルオシロスコープ 25MHz帯域幅 100M/sサンプリ
ングレート

created by Rinker

今回はラズパイ4の実物をついに手にすることができましたので記事にしてみました。まだ
デスクトップ環境を少し触っただけですが、ハードウェアの性能アップの恩恵を感じまし
た。このラズパイは今後SLAMを実装してロボットとして使っていきたいと思います。

また、Raspberry Piの基礎をしっかり学びたい方にはUdemyの以下の講座がおすすめです。

【Pythonではじめる】ラズベリーパイと電子工作入門

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                   16/19
2023705/19 12:57                                            ラズベリーバパイ4(Raspberry Pi 4)をレビユー | Murasan Lab
以下の記事ではラズパイ本体と合わせて電子工作を始めるにあたってそろえておきたいアイ
テムをまとめていますので、併せてご覧ください。

「ー ツ あわせて読みたい

電子工作を始める時に用意しておき
たいいアイテムまとめ

また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスク
ールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を
受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できる ようになりま
した。

スキルアップや副業にぜひ活用してみてください。

「ー ツ あわせて読みたい

Pythonが学べるプログラミングスク
ール5選 | 初心者にもおすすめ

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習
プラットフォームのUdemyがおすすめです。

講座単位で購入できるため、スクールに比べ非常に安価 (セール時1200円程度ご) に学ぶ
ことができます。 私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜ
ひ参考にしてみてください。

「ー ソ あわせて読みたい

Python初心者におすすめ! いつで
もどこでもスマホで学べるUdemy講
ノモーーーーミキラテト

https:/murasan-net.com/index.php/2022/05/02/post-1816/                                                                                                                                                   18719
2023705/19 12:57                                                ラズベリーバイ4(Raspberry Pi 4)をレビュー | Murasan Lab
「ー マ のわせてみただい

機械学習を習得したい方におすす
め ! Pythonで学ぶAl特化プログラミ
ングスクール2選

https:/murasan-net.com/index.php/2022/05/02/post-1816/              

プログラミングのスキルを活かすには

プログラミングのスキルを仕事に活かすには、フリーランスとして受けられる案件がおすすめです。

テックゲートフリーランスは、フリーランスエンジニアの案件紹介や契約交渉・債権管理などのサポートを行っているフリーランスエージェントです。

テックゲートフリーランスのココがおすすめ
  • リモートワーク可能な案件が50%以上
  • 週3〜4日の案件の豊富さ
  • 年収100万円アップのサポート

無料相談フォームからご登録いただくだけで、経験年数やスキルに合わせて案件をご紹介また、リモートワーク可能な案件や週3〜4日OKの案件も豊富に用意されています。

副業やフリーランスとして仕事を受けてみたいと考えている方には、テックゲートフリーランスが提供する多様なサポートが非常におすすめです。

無料で登録してみる!

まとめ

今回は、PDFからテキストを抽出する一例を紹介しました。

PDFがテキストベースであればPyPDF2PDFMinerのようなライブラリを使用するだけで十分な場合が多いです。

しかし、PDFが画像ベースであったり、スキャンした文書から作成されている場合は、pdf2imagepytesseractのようなOCRツールを使用することでテキストデータを抽出することが可能になりますので、ぜひ活用してみてください。。

また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。

スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。

講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次