【Python】英文PDFファイルをスクレイピングして結合・一括翻訳する方法 

スポンサーリンク
Python

前回の記事でめちゃくちゃ便利なGoogle翻訳を徹底解説しました。

【英語学習】自宅学習の強い味方!Google翻訳【無料】の便利な使い方を徹底解説:学習効率をUPさせる7つのポイント!
Google翻訳を使えば、英語学習の効果が格段にUP!在宅学習にもってこい!グーグル翻訳の便利な使い方を徹底解説します!相乗効果でタッチタイピングまで上達!グーグル翻訳をあなたの英語学習の手許に!

 

今回はPythonを使い、

  1. たくさんのPDFファイルをwebスクレイピングして、
  2. PDFファイルの特定ページ(英語問題ページ)を抽出し、
  3. ページ抽出したPDFデータを結合して、最後に
  4. 結合データをGoogle翻訳で翻訳

してみたいと思います。

スポンサード リンク

PythonでPDFファイルをwebスクレイピング+結合

まずは翻訳対象のファイルをwebページから集めます。

参照するwebページ:中小企業診断士試験の過去問はこちら

中小企業診断士試験問題

 

今回はPyPDF2(サードパーティライブラリ)を使いますので、インストールが未だの方は pip ( pip3 )でインストール↓。

 

今回書いたコードはこちら↓。

結合されたPDFファイルの作成・保存

↓無事、結合されたPDFファイルが作成・保存されました。

 

↓こちらが作成されたPDFファイルです。

pdf_mergered_data(PDF)

コード実装のポイント

URLリストの作成

りすくん
りすくん
2018年度を境にPDFファイルのurlが微妙に変わっていたため( \\e1ji2017.pdf\\E1ji2018.pdf )、 urls_list1urls_list2 に分けました( for 文を回すため)。
ふむふむ
ヒゲ社長
ヒゲ社長

 

暗号化されたPDFファイル

りすくん
りすくん
2011年度以前のPDFファイルは merger.append の際、以下のエラーが出てしまいます。

file has not been decrypted

ほう。
ヒゲ社長
ヒゲ社長
りすくん
りすくん

調べてみるとPDFのパスワード(暗号化)に関するエラーのようでした。修正がちょっと大変そうだったので今回は除外しました。

なるほど
ヒゲ社長
ヒゲ社長

 

まだまだ、きれいなcodeを書けません。。。

りすくん
りすくん
merger.append のところは正規表現とかfor文つかってシンプルにかけそうですね。。。良い方法を思いつきませんでした。まだまだ勉強が足りませんね。
そうだね
ヒゲ社長
ヒゲ社長

 

Pythonを活用すれば生産性がグッと増す

りすくん
りすくん
処理時間を計測するため、今回はデコレーター( @processing_time )を作ってみました。結果は次のとおりです↓

りすくん
りすくん
しかし、13ものPDFデータの取得に5秒もかからないとは。。。
Good job
ヒゲ社長
ヒゲ社長

Google翻訳でPDFファイルを翻訳

ドキュメント翻訳でサクッと簡単翻訳

Pythonで作成したPDFファイルをGoogle翻訳で翻訳してみましょう。

まずはGoogle翻訳を開きます。

Google Translate
Google's free service instantly translates words, phrases, and web pages between English and over 100 other languages.

 

↓ドキュメントをまるごと翻訳します。

 

テキストまるごと翻訳する方法は前回の記事にまとめてあります。よろしければ参考にして下さい。

【英語学習】自宅学習の強い味方!Google翻訳【無料】の便利な使い方を徹底解説:学習効率をUPさせる7つのポイント!
Google翻訳を使えば、英語学習の効果が格段にUP!在宅学習にもってこい!グーグル翻訳の便利な使い方を徹底解説します!相乗効果でタッチタイピングまで上達!グーグル翻訳をあなたの英語学習の手許に!

 

翻訳結果

↓翻訳結果はこちら。訳文をWord文書にコピーペーストしたリンクも下に貼っておきます。

原文ファイルと訳文ファイル

原文:pdf_mergered_data(PDF)

訳文:Translated questions(Word)

参考サイトと講座

今回、以下のサイトと講座を参考にコーディングしました。

– DATA SCIENCE LIFE –

アメリカ在住データサイエンティストのかめさん(@usdatascientist)のブログ。

Pythonのコーディングについて、めちゃくちゃわかりやすく解説してあります。超ハイクオリティな講座でほんとにぜんぶ無料なの?ってなるくらいすごいブログです。

Python初心者の方にはかなりお勧めです。

データサイエンスのためのPython入門講座全33回〜目次とまとめ〜

 

note.nkmk.me

nkmkさん(@nkmk_me)のブログです。

こちらもPythonプログラミングについて、かなり詳しく書いてあります。今回使ったPyPDF2の扱い方も詳しく書かれてありました。

ぜひ参考にされてください。

Python, PyPDF2でPDFを結合・分割(ファイル全体・個別ページ) | note.nkmk.me
PythonのサードパーティライブラリPyPDF2を使うと、複数のPDFファイル全体を結合したりページを抽出して結合したり、PDFファイルをページごとに複数のファイルに分割したりすることができる。mstamy2/PyPDF2: A utility to read and write PDFs with Python こ...
Python, PyPDF2でPDFのパスワードを設定・解除(暗号化・復号) | note.nkmk.me
PythonのサードパーティライブラリPyPDF2を使うと、PDFファイルのパスワードの設定や解除(暗号化・復号)ができる。mstamy2/PyPDF2: A utility to read and write PDFs with Python 既存のPDFファイルにパスワードを設定して保護したり、パスワード付きの暗号...

 

現役シリコンバレーエンジニア(酒井 潤さん)が教えるPython 3 入門(Udemy)

現役シリコンバレーエンジニアの酒井 潤さん(@sakaijun)がUdemyで教えるPython講座もおすすめです。なんといっても解説がとても分かりやすい。

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

ちなみに今回の記事で書いた @processing_timeというコードはデコレーターという手法で、ちょっと概念の説明が難しい技術なのですが、酒井 潤さん(@sakaijun)の講座ではデバッガーを使って、とても分かりやすく解説してあります。

この講座ではPython3の基礎はもちろんのこと、応用編では

  • データーベースアクセス(SQLite, MySQL, MongoDB, SQLAlchemy etc)、
  • WEB(Flask, socket, RPC etc)、
  • インフラ自動化(Fabric, Ansible)、
  • データ解析(numpy, pandas, matplotlib, scikit-learn),

などなど、盛りだくさんの内容となっております。

こちらの講座は無料ではありませんが、たまに(感覚では月2回程度かな?)大幅割引(90%以上)をやっているので、そのタイミングを狙うのも良いかと思います。

ぜひ、おすすめです。

まとめ

Pythonを活用すれば、情報収集などの作業効率が一気に向上しますね。

Pythonの勉強はじめて、3~4カ月ほど経ちましたが、まだまだ、Pythonを使いこなせていません。もうちょっと上手く使えるように、さらにプログラミングの勉強に励みたいと思います。

中小企業診断士試験、第一次試験まであと2か月を切りました。

受験生のみまさま、受験勉強に忙しい中、いろいろと大変かと思いますが今回の記事が少しでもお役に立てれば幸いです。

それでは。