皆さんこんにちは!
絶賛Python学習中のドケチ光秀です。
ついに私の住む地域にも雪が降ってきました。
外に出るのが億劫になりますが、こんな時こそ学習のチャンスです!
今回は、今までの記事が日記でしかなかったので、いよいよプログラミングを活用した業務改善に取り組む様子をお届けしたいなと思っております。
今回は、Pythonを使ってpdfデータから文字(テキスト)やグラフを抽出する方法に取り組んでみました。
特に私のような初学者の方や、Pythonに興味のある方には参考になるかと思いますので、ぜひご覧になっていただければと思います!
はじめに
おそらく、pdfデータに触れたことがない方ってほぼいないんじゃないでしょうか?
社会人の方はもちろん仕事で使いますよね。
スキャナー付きのプリンターで書類をスキャンして、pdf化することも多いですよね。
インターネット上にもpdfデータがありふれていて、活用できます。
私の例で言うと、現在プログラミングの勉強と並行して就職活動をやっていますが、求人に応募する際に、応募先から履歴書と職務経歴書の提出を100%求められます。
そして履歴書と職務経歴書はpdf形式で作成して提出してください。と言われることもあります。
学生さんも論文読んだり、学校のレポート作るときにpdfデータを使いますよね?
そして、pdf上の文章をコピペしたいなって思ったり、グラフや表を引用したいなって思ったことはありませんか?
そういった想像から、Pythonを使ってpdfデータから文字(テキスト)やグラフを抽出するツール(コード)を作りたいなと思いました。
では、やっていきましょう。
今回は文字の抽出に挑戦します。
準備(環境構築)
Pythonを自身のPCで扱うにあたって、「環境構築」が必要です。
これは、プログラムを書く・実行するにあたって必要な開発環境の準備をすることですね。
例えばウェブサイトを作りたい!と考えた際は、エディターをダウンロードして、htmlやcssファイルを作ってコードを書いて、それぞれを連動させれば、ブラウザを経由してサイトを表示できるのですが…
Pythonを使おうと思ったとき、まずは公式サイトからPythonシステムをダウンロードして、エディターを選んで、次に実行環境を決めて…と複数の工程を踏んでいかないとスタートラインに立つことができません。
しかも、環境構築のやり方が1つではなく、それぞれのメリットやデメリットがあるという複雑さがあります。
この環境構築がうまくできず、プログラミングの学習を脱落した方も多いのではないでしょうか…。
私はAnacondaとVScodeを連動させて環境構築しました。
最初はなんとなく動かしていって、調べながら試して、気が付けば出来ていました。
色々な方のブログサイトなどを読んでやったのですが、今から着手する方は下記の動画がすごく分かりやすいと思うのでお勧めです!
…意外と苦労しますよね💦
しかし、環境構築が上手くできなかった方にも朗報です。
Googleが提供している「Google Colaboratory」では、なんとブラウザ上でPythonを扱うことができます。
つまり、複雑な作業をしなくてもPythonを扱える状態になるということです。
Googleドライブから操作画面に飛んでいくので、Google系のサービスをよく使う方には大変おすすめです。
私も触ってみましたが、本当に操作が楽です。
しかも見やすい仕様になっており、感動しました。
今後、さらにPythonの学習を始める方が増えていきそうだなと感じます。
では、私はVScodeを使ってコードを書いていくことにします。
コーディング開始
まずAnaconda promptを使用して「PyPDF2」ライブラリをインストールします。
AnacondaとVScodeを連動させているので、Anaconda promptを通じてインストールするとVScodeから使えるようになります。
pip install PyPDF2
PyPDF2というのは、PythonでPDFを操作するためのライブラリです。
pdfの分割、結合、トリミング、変換、暗号化、復号化など、さまざまな操作を簡単に行うことができる多機能なツールとのことで。
めっちゃ便利そう。
では、インストールが終わったのでさっそく進めていきます。
#PyPDF2からPdfReaderを呼び出す
from PyPDF2 import PdfReader
#目的のpdfファイルを読み込む
file_path = "C:\\〇〇\\〇〇\\OneDrive\\デスクトップ\\Python\\pdf抽出\\石川県_業務改善.pdf"
reader = PdfReader(file_path)
# すべてのテキストを抽出
for page_number, page in enumerate(reader.pages, start=1):
print(f" --- Page{page_number} ---"}
print(page.extract_text())
--- Page1 ---
平成30年3月
石川県教育委員会
業務改善取組事例集学校現場における
--- Page2 ---
本県では、 平成2 9年4月より教職員の勤務時間調査を継続し て行い、 その実態を積極的
に公表するとともに、 同年8月には、 県教育委員会、 市町教育委員会、 校長会、 体育連盟など
の代表者から構成される 「教職員多忙化改善推進協議会」 を設置し、 教職員の多忙化改善に
ついての議論を重ね、 平成30年3月に 「石川県公立小学校、 中学校、 高等学校及び特別支
援学校における教職員の多忙化改善に向けた取組方針」 をとりまとめたところです。
この 「取組方針」 は、 協議会の委員から具体のご意見をいただくとともに、 平成29年
1 0月に行った教職員多忙化改善のための実践事例及び取組提案の募集で、 学校現場の教
職員のみなさんからいただいた、 4, 7 0 0件を超える提案も踏まえながら、 とりまとめたもの
です。
※以下省略
pdfplumberの使用
pip install pdfplumber
# pdfplumberの呼び出し
import pdfplumber
# pdfファイルの読み込み
file_path = "C:\\〇〇\\〇〇\\OneDrive\\デスクトップ\\Python\\pdf抽出\\石川県_業務改善.pdf"
# pdfファイルを開く(自動でオープン・クローズ)
with pdfplumber.open(file_path) as pdf:
# すべてのテキストを抽出
for page_number, page in enumerate(pdf.pages, start=1):
print(f" --- Page{page_number} ---"}
print(page.extract_text())
--- Page 1 ---
学校現場における
業 務 改 善 取 組 事 例 集
平成30年3月
石川県教育委員会
--- Page 2 ---
「学校現場における業務改善取組事例集」の
活用にあたって
本県では、平成29年4月より教職員の勤務時間調査を継続して行い、その実態を積極的
に公表するとともに、同年8月には、県教育委員会、市町教育委員会、校長会、体育連盟など
の代表者から構成される「教職員多忙化改善推進協議会」を設置し、教職員の多忙化改善に
ついての議論を重ね、平成30年3月に「石川県公立小学校、中学校、高等学校及び特別支
援学校における教職員の多忙化改善に向けた取組方針」をとりまとめたところです。
この「取組方針」は、協議会の委員から具体のご意見をいただくとともに、平成29年
10月に行った教職員多忙化改善のための実践事例及び取組提案の募集で、学校現場の教
職員のみなさんからいただいた、4,700件を超える提案も踏まえながら、とりまとめたもの
です。
※以下省略
コメント