オープンソースの Python PDF 注釈ライブラリ
PDF ドキュメントに注釈を追加したり抽出したりするには、この無料のオープンソース Python ライブラリをお試しください。
pypdfとは何ですか?
Pypdf は、Python 環境で PDF ドキュメントを処理するための多様な機能で知られる、無料のオープンソース Python ライブラリです。このツールはさまざまな PDF 操作に便利ですが、このレビューでは注釈関連の機能に焦点を当てます。
注釈に関連する pypdf の注目すべき機能は次のとおりです。
- 図形注釈の追加: PDF ページの特定の領域に、線、四角形、楕円、多角形などの図形を注釈として描画できます。
- テキスト注釈の追加: PDF ページの特定の位置にテキスト注釈を追加できます。
- リンク注釈の追加: PDF ドキュメントにリンク注釈 (ハイパーリンクなど) を追加することもできます。
- 注釈の抽出: pypdf ライブラリを使用して、PDF ドキュメント内のすべての注釈に関する情報を反復処理して抽出できます。
pypdf を使い始める
pypdf をインストールして使用するには、Python バージョン 3.6.0 以上が必要です。まず Python をインストールし、次に以下のコマンドを使用して pip と 仮想環境 を使用してマシンに pypdf をインストールします。
リナックス
python3 -m venv venv
source venv/bin/activate
pip install pypdf
MacOS
python -m venv venv
source venv/bin/activate
pip install pypdf
ウィンドウズ
python3 -m venv venv
venv\Scripts\activate.bat
pip install pypdf
PDFに長方形注釈を追加する
pypdf ライブラリを使用して、PDF ドキュメントに四角形の注釈を追加できます。四角形を定義するには、pypdf ライブラリの pypdf.annotations モジュールの Rectangle クラスを使用します。次に、PDFWriter クラスの add_annotations メソッドを使用して、PDF に四角形の注釈を追加します。
詳細については、以下のコード スニペットを確認してください。
出力
以下のスクリーンショットでは、Open Source という単語に注釈を付けるために四角形が追加されていることがわかります。
PDFにテキスト注釈を追加する
pypdf ライブラリの pypdf.annotations モジュールの Text クラスを使用して、テキスト注釈を作成します。その後、pypdf ライブラリの PDFWriter クラスの add_annotations メソッドを使用して、PDF に注釈を追加できます。テキスト注釈はアイコンとして追加され、アイコンをクリックすると展開してテキストが表示されます。詳細については、以下のコード スニペットを確認してください。
出力
以下のスクリーンキャストからわかるように、上記のコードは PDF の指定された位置にアイコンを追加し、アイコンをクリックするとテキスト注釈が表示されます。
PDFにリンク注釈を追加する
リンク注釈は、pypdf.annotations モジュールの Link クラスを使用して作成されます。ただし、リンク注釈の問題は、リンクを追加するだけで、表示されないことです。この問題に対処するには、前に説明したように、pypdf.annotations モジュールの Rectangle クラスを使用して四角形を組み込みます。これにより、ユーザーはリンク注釈が追加された場所を視覚的に識別できます。理解を深めるために、以下のコード スニペットを確認してください。
出力
出力からわかるように、四角形は、クリックするとユーザーを指定されたリンクにリダイレクトする領域として機能します。
PDFから注釈を抽出する
pypdf ライブラリを使用して PDF から注釈を抽出できます。PDF ページのすべての注釈を反復処理し、get_object メソッドを使用して注釈オブジェクトを取得します。次に、オブジェクトから関連情報を抽出します。詳細については、以下のコード スニペットを確認してください。
出力
以下のスクリーンショットからわかるように、プログラムは注釈の種類と PDF ドキュメント内の注釈の座標を返しました。
結論
Pypdf を使用すると、Python 開発者は PDF にさまざまな種類の注釈を追加し、注釈の種類や場所などの注釈に関する重要な情報にアクセスできるため、注釈の追加や注釈に関するデータの抽出を必要とするタスクに最適です。