PDFは、文書を一貫したスタイルとフォーマットで表示、保存、交換するための非常に一般的なフォーマットです。
しかし、これらのPDFファイルから情報を抽出するのは一筋縄ではいきません。特に、画像ベースのPDFや複数ページから成るPDFからテキストを抽出するのは困難です。
今回は、Pythonを使ってPDFからテキストデータを抽出する方法について解説します。さらに、画像ベースのPDFからテキストを抽出するためのOCR(Optical Character Recognition)の利用方法も取り上げます。
ライブラリのインストール
今回はpdf2image
とpytesseract
を使用します。pdf2image
はPDFを画像に変換するライブラリで、pytesseract
はOCRエンジン「Tesseract」をPythonから利用するためのライブラリです。
pip install pdf2image
pip install pytesseract
なお、これらのライブラリはそれぞれpoppler
とTesseract
という外部ツールに依存しています。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がテキストベースであればPyPDF2
やPDFMiner
のようなライブラリを使用するだけで十分な場合が多いです。
しかし、PDFが画像ベースであったり、スキャンした文書から作成されている場合は、pdf2image
とpytesseract
のようなOCRツールを使用することでテキストデータを抽出することが可能になりますので、ぜひ活用してみてください。。
また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。
スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。
それでは、また次の記事でお会いしましょう。
コメント