PythonでPDFからハイパーリンク(URL)を抽出する方法
Pythonには、さまざまな処理に対応できる豊富なライブラリが揃っています。PDFからデータやメタ情報を抽出したいときに便利なのが、PyPDF2パッケージです。PyPDF2は使い方がシンプルで、PDFからのデータ抽出、ドキュメント内のキーワード検索、ハイパーリンクやURLなどのメタ情報の取得など、多彩な機能を提供しています。
この記事では、PyPDF2を使ってPDFドキュメントからハイパーリンクを抽出する方法を解説します。
ハイパーリンク抽出の手順
コマンドシェルでpip install PyPDF2を実行し、ローカル環境にPyPDF2をインストールします。
Pythonスクリプト内でPyPDF2をインポートします。
対象のPDFファイルをバイナリモード('rb')で開きます。
特定のページからリンクを抽出するための関数を定義します。
すべてのページをループ処理し、extractText()関数でページごとのテキストを取り出します。
ハイパーリンクの抽出にはPythonのパターンマッチングの仕組みを利用します。import reとして正規表現モジュールを読み込みましょう。
findall(regex, string)を使い、「https://」または「https://」で始まるパターンに一致する文字列を検索します。
URLが見つかった場合はそれを返し、画面に出力します。
サンプルコード
# 必要なパッケージをインポート
import PyPDF2
import re
# ファイルをバイナリモードで開く
file = open("newfile.pdf", 'rb')
readPDF = PyPDF2.PdfFileReader(file)
def find_url(string):
# パターンに一致するすべての文字列を検索
regex = r"(https?://\S+)"
url = re.findall(regex, string)
for url in url:
return url
# ファイルの全ページを反復処理
for page_no in range(readPDF.numPages):
page = readPDF.getPage(page_no)
# ページからテキストを抽出
text = page.extractText()
# 抽出したURLを出力
print(find_url(text))
# ファイルを閉じる
file.close()
実行結果
上記のコードを実行すると、指定したPDFドキュメント内に含まれるすべてのハイパーリンクが画面に出力されます。URLが存在しないページでは「None」が表示されます。

補足:最新環境では「pypdf」ライブラリを推奨
PyPDF2はすでに開発が終了しており、後継となるpypdfライブラリへ統合されています。新規プロジェクトでは以下のように書き換えることをおすすめします。
from pypdf import PdfReader
import re
reader = PdfReader("newfile.pdf")
def find_url(string):
return re.findall(r"(https?://\S+)", string)
for page in reader.pages:
text = page.extract_text()
urls = find_url(text)
for url in urls:
print(url)
このように、PyPDF2時代の「PdfFileReader」「numPages」「getPage」「extractText」は、pypdfでは「PdfReader」「pages」「extract_text()」といった新しいAPIに置き換えられています。基本的な流れ(バイナリモードで開く→テキスト抽出→正規表現でURLを検索)は変わりませんので、どちらのバージョンでも同じ考え方でハイパーリンク抽出が実現できます。
-
Python TkinterとPyPDF2でPDFビューアを作成する方法
Pythonは、多様な機能や用途に対応した豊富なライブラリと拡張モジュールを備えていることで広く知られています。PDFファイルを扱う場合にはPyPDF2というツールキットが利用でき、PDFの処理やテキスト抽出、複数ページの結合、暗号化など、さまざまな操作が可能です。PDFのようなファイルストリームの管理・操作において非常に便利なパッケージです。本記事では、PyPDF2を活用して、ユーザーがローカルディレクトリからPDFファイルを選択して開き、その内容を表示できるTkinterアプリケーションを作成する方法を解説します。 アプリケーション作成の手順 以下の手順に従ってアプリケーションを構築してい
-
PythonでPDFをCSVに変換する方法|tabula-pyの使い方を徹底解説
Pythonは、膨大なパッケージライブラリを擁することで広く知られています。本記事では、これらのライブラリを活用して、PDFファイルをCSVファイルへ変換する方法を詳しく解説します。CSVファイルとは、行と列という形式で整理されたデータの集合体のことです。PythonのライブラリにはPDFをCSVに変換できるパッケージが複数存在しますが、ここではtabula-pyモジュールを使用します。tabula-pyの主要部分はJavaで実装されており、まずPDFドキュメントを読み込み、その内容をPythonのDataFrame、さらにJSONオブジェクトへと変換する仕組みになっています。tabula-p