チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション

PDF ファイルは至る所にあります。契約書や研究論文から電子書籍や請求書まで。フォーマットを完璧に保持できますが、PDF からのテキスト抽出は、特に大規模または複雑なドキュメントの場合、課題となる可能性があります。手動でのコピーは遅いだけでなく、正確性に欠けることも多いです。
ワークフローを自動化する開発者、コンテンツを処理するデータアナリスト、あるいは単に迅速なテキスト抽出が必要な方にとって、プログラムによる方法は貴重な時間と労力を節約できます。
この包括的なガイドでは、Spire.PDF for Python を使用して Python で PDF ファイルからテキストを抽出する方法を学びます。これは強力で使いやすい PDF 処理ライブラリです。すべてのテキストの抽出、特定のページや領域のターゲット指定、非表示テキストの無視、テキストの位置やサイズなどのレイアウト情報の取得について解説します。
クイックナビゲーション
PDF からのテキスト抽出は、多くのユースケースで不可欠です:
プログラムによるテキスト抽出は、手動の方法では実現できない精度、速度、スケーラビリティを提供します。
Spire.PDF for Python は、すべての PDF 操作ニーズを簡素化する包括的で使いやすい PDF 処理ライブラリです。単純な PDF ドキュメントと複雑な PDF ドキュメントの両方でシームレスに動作する高度なテキスト抽出機能を提供します。
ライブラリは pip を介して簡単にインストールできます。ターミナルを開き、次のコマンドを実行してください:
pip install spire.pdf
また、Spire.PDF for Python パッケージをダウンロードして、プロジェクトに手動で追加することもできます。
PDF からすべてのテキストをすばやく読み取りたい場合、この簡単な例がその方法を示しています。各ページを反復処理し、PdfTextExtractor を使用して完全なテキストを抽出し、スペースと改行を保持した状態でテキストファイルに保存します。
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成
doc = PdfDocument()
# PDF ドキュメントを読み込む
doc.LoadFromFile('/Sample.pdf')
# 抽出したテキストを保持する変数を準備
all_text = ""
# PdfTextExtractOptions オブジェクトを作成
extractOptions = PdfTextExtractOptions()
# 空白を含むすべてのテキストを抽出
extractOptions.IsExtractAllText = True
# すべてのページをループしてテキストを抽出
for i in range(doc.Pages.Count):
page = doc.Pages.get_Item(i)
textExtractor = PdfTextExtractor(page)
text = textExtractor.ExtractText(extractOptions)
# 各ページのテキストを追加
all_text += text + "\n"
# 抽出したすべてのテキストをファイルに書き込む
with open('output/全ページのテキスト.txt', 'w', encoding='utf-8') as file:
file.write(all_text)
True に設定すると、空白とフォーマットを保持この基本的なアプローチは、レイアウトや位置を気にせずに完全なテキストコンテンツが必要な単純なドキュメントに最適です。
何をどのように抽出するかをより細かく制御するために、Spire.PDF for Python は高度なオプションを提供します。特定のページや領域からコンテンツを選択的に抽出したり、テキストの位置やサイズなどのレイアウト詳細情報を取得したりすることで、特定のデータ処理ニーズに適切に対応できます。
PDF 全体を処理する代わりに、テキスト抽出のために特定のページをターゲットにすることができます。これは、タスクに関連するセクションのみが必要な大規模なドキュメントで特に役立ちます。
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成
doc = PdfDocument()
# PDF ドキュメントを読み込む
doc.LoadFromFile('/Sample.pdf')
# PdfTextExtractOptions オブジェクトを作成し、完全なテキスト抽出を有効化
extractOptions = PdfTextExtractOptions()
# 空白を含むすべてのテキストを抽出
extractOptions.IsExtractAllText = True
# 特定のページを取得 (例: 2 ページ目)
page = doc.Pages.get_Item(1)
# PdfTextExtractor オブジェクトを作成
textExtractor = PdfTextExtractor(page)
# ページからテキストを抽出
text = textExtractor.ExtractText(extractOptions)
# UTF-8 エンコーディングを使用して抽出したテキストをファイルに書き込む
with open('output/ページのテキスト.txt', 'w', encoding='utf-8') as file:
file.write(text)
以下は抽出結果のプレビューです:

フォームや請求書などの構造化ドキュメントを扱う場合、特定の領域からテキストを抽出する方が効率的です。矩形領域を定義し、ページ上のその境界内にあるテキストのみを抽出できます。
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成
doc = PdfDocument()
# PDF ドキュメントを読み込む
doc.LoadFromFile('/利用規約.pdf')
# 特定のページを取得 (例: 2 ページ目)
page = doc.Pages.get_Item(1)
# PdfTextExtractor オブジェクトを作成
textExtractor = PdfTextExtractor(page)
# PdfTextExtractOptions オブジェクトを作成
extractOptions = PdfTextExtractOptions()
# テキストを抽出する矩形領域を定義
# RectangleF(左, 上, 幅, 高さ)
extractOptions.ExtractArea = RectangleF(0.0, 100.0, 890.0, 80.0)
# 指定された領域から空白を保持してテキストを抽出
text = textExtractor.ExtractText(extractOptions)
# UTF-8 エンコーディングを使用して抽出したテキストをファイルに書き込む
with open('output/矩形領域のテキスト.txt', 'w', encoding='utf-8') as file:
file.write(text)
以下は抽出結果のプレビューです:

RectangleF パラメーターは抽出領域を定義します:
座標はポイント単位で測定されます (1 ポイント = 1/72 インチ)。原点 (0, 0) はページの左上隅にあります。
一部の PDF には、アクセシビリティや OCR レイヤーによく使用される非表示または不可視のテキストが含まれています。ユーザーに実際に見えるコンテンツのみに焦点を当てるために、抽出中にこのようなコンテンツを無視することを選択できます。
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成
doc = PdfDocument()
# PDF ドキュメントを読み込む
doc.LoadFromFile('/利用規約.pdf')
# PdfTextExtractOptions オブジェクトを作成
extractOptions = PdfTextExtractOptions()
# 抽出中に非表示テキストを無視
extractOptions.IsShowHiddenText = False
# 特定のページを取得 (例: 2 ページ目)
page = doc.Pages.get_Item(1)
# PdfTextExtractor オブジェクトを作成
textExtractor = PdfTextExtractor(page)
# ページからテキストを抽出
text = textExtractor.ExtractText(extractOptions)
# UTF-8 エンコーディングを使用して抽出したテキストをファイルに書き込む
with open('output/非表示テキストを除く.txt', 'w', encoding='utf-8') as file:
file.write(text)
この機能は、OCR ソフトウェアで処理されたスキャン済みドキュメントを扱う場合に特に重要です。
レイアウトに敏感なアプリケーション (PDF コンテンツを編集可能な形式に変換したり、ページ構造を再構築したりするなど) では、テキストをその位置とサイズとともに抽出できます。これにより、コンテンツの解釈と使用方法を精密に制御できます。
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成
doc = PdfDocument()
# PDF ドキュメントを読み込む
doc.LoadFromFile('/利用規約.pdf')
# ドキュメントのすべてのページをループ
for i in range(doc.Pages.Count):
page = doc.Pages.get_Item(i)
# 現在のページ用に PdfTextFinder オブジェクトを作成
finder = PdfTextFinder(page)
# ページ上のすべてのテキストフラグメントを検索
fragments = finder.FindAllText()
print(f"{i + 1} ページ:")
# すべてのテキストフラグメントをループ
for fragment in fragments:
# 現在のテキストフラグメントからテキストコンテンツを抽出
text = fragment.Text
# 位置とサイズ情報を含むバウンディング矩形を取得
rects = fragment.Bounds
print(f'テキスト: "{text}"')
# すべての矩形を反復処理
for rect in rects:
# 現在の矩形の位置とサイズ情報を出力
print(f"位置: ({rect.X}, {rect.Y}), サイズ: ({rect.Width} x {rect.Height})")
print()
このレベルの詳細により、単純なテキスト抽出を超えた高度なドキュメント処理ワークフローが可能になります。
Spire.PDF for Python を使用すると、Python での PDF ファイルからのテキスト抽出が効率的かつ柔軟になります。ドキュメント全体を処理する必要がある場合でも、特定のページや領域からテキストを抽出する必要がある場合でも、Spire.PDF はニーズを満たす堅牢なツールセットを提供します。
テキスト抽出を自動化することで、以下のことが可能になります:
基本的な抽出、選択的ページ処理、領域ベースの抽出、非表示テキストのフィルタリング、位置認識抽出の組み合わせにより、PDF コンテンツ処理を完全に制御できます。
Spire.PDF for Python のパフォーマンスを評価し、制限を解除したい場合は、30 日間の無料トライアルを申請できます。
はい、Spire.PDF for Python は、PDF ドキュメントを読み込む際に正しいパスワードを提供することで、保護されたファイルを開いてテキストを抽出できます。LoadFromFile メソッドにパラメーターとしてパスワードを渡すだけです。
はい、Spire.PDF for Python を使用して、PDF ファイルのディレクトリをプログラムで反復処理し、各ファイルに効率的にテキスト抽出を適用できます。これは大規模なドキュメントコレクションの処理に理想的です。
このガイドはテキスト抽出に焦点を当てていますが、Spire.PDF for Python は画像抽出と表抽出もサポートしています。表抽出については、表の抽出に関する詳細については、Python を使って PDF の表を簡単に抽出する方法に関するガイドをご覧ください。
スキャン済み PDF からのテキスト抽出には OCR (光学文字認識) が必要です。Spire.PDF for Python には組み込みの OCR は含まれていませんが、Spire.OCR for Python などの OCR ライブラリと組み合わせて画像からテキストへの変換を行うことができます。
Spire.PDF for Python は、ネイティブ PDF ファイル (スキャンではなくデジタルで作成されたもの) に対して高精度のテキスト抽出を提供します。精度は PDF の内部構造とフォントエンコーディングによって異なります。最良の結果を得るには、画像としてではなく選択可能なテキストで作成された PDF を使用してください。
生のテキストコンテンツが必要か、位置メタデータが必要かに基づいてツールを選択してください。

PDF ファイルには、グラフ、図、スキャン画像などの重要なビジュアル情報が含まれていることが多くあります。
開発者にとって、PythonでPDFから画像を抽出する方法を知っておくことは、レポートの自動生成や画像解析、OCR などの機械学習タスクにおいて非常に有用です。
この記事では、Spire.PDF for Python を利用して、Python で PDF から画像を抽出する方法を次の観点から詳しく紹介します。
Python で Spire.PDF を使用して PDF から画像を抽出する前に、以下の準備を行ってください。
Python 環境:システムに Python がインストールされていることを確認します。
最新の安定版を使用することで、より良い互換性とパフォーマンスが得られます。
Python公式サイト からダウンロード可能です。
Spire.PDF for Python ライブラリ:
Python 用の PDF SDK をインストールします。pip を使うのが最も簡単です。
コマンドプロンプトまたはターミナルで以下を実行します:
pip install Spire.PDF
Spire.PDF をインストールしたら、すぐに PDF ドキュメントから画像を抽出できるようになります。 以下の例では、ページ単位および全ページから画像を抽出する方法を順に紹介します。
次のコードは、PDF の特定ページに含まれるすべての画像を抽出して保存する完全なスクリプトです。
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成
pdf = PdfDocument()
# PDFファイルを読み込む
pdf.LoadFromFile("template1.pdf")
# 最初のページを取得
page = pdf.Pages[0]
# PdfImageHelper インスタンスを作成
imageHelper = PdfImageHelper()
# ページ上の画像情報を取得
imageInfo = imageHelper.GetImagesInfo(page)
# 取得した画像情報をループ処理して保存
for i in range(0, len(imageInfo)):
imageInfo[i].Image.Save("Images/Image" + str(i) + ".png")
# リソースを解放
pdf.Dispose()
ポイント解説:
出力例プレビュー:

単一ページからの抽出を拡張し、すべてのページをループして全画像を抽出することも可能です。 以下のスクリプトでは、PDF 全体からすべての埋め込み画像を取得します。
from spire.pdf.common import *
from spire.pdf import *
# PdfDocument オブジェクトを作成
pdf = PdfDocument()
# PDFファイルを読み込む
pdf.LoadFromFile("template1.pdf")
# PdfImageHelper インスタンスを作成
imageHelper = PdfImageHelper()
# すべてのページをループ
for i in range(0, pdf.Pages.Count):
page = pdf.Pages[i]
imageInfo = imageHelper.GetImagesInfo(page)
for j in range(0, len(imageInfo)):
imageInfo[j].Image.Save(f"Images\\Page{i + 1}_Image{j + 1}.png")
# PDFを閉じる
pdf.Close()
出力例プレビュー:

PDF内の画像をさらに操作したい場合は、PythonでPDFに画像を追加・置換・削除する方法の記事も参考にしてください。
Spire.PDF for Python は、PNG、JPG/JPEG、BMP などさまざまな画像形式の抽出をサポートしています。 抽出した画像を保存する際、用途に合わせて最適なフォーマットを選択することができます。
主な画像形式と特徴:
| 形式 | 主な用途 | 備考 |
|---|---|---|
| JPG/JPEG | 写真・スキャン画像 | 圧縮で若干の劣化あり。PDFで最も一般的。 |
| PNG | 図表・スクリーンショット | 透過保持。ファイルサイズはやや大きめ。 |
| BMP | 一時保存やWindowsアプリ用 | 現在のPDFではまれ。Web用途には不向き。 |
| TIFF | 保存・印刷・OCR入力 | アーカイブや文書保存向け。複数ページ対応。 |
| EMF | ベクター画像編集 | IllustratorやInkscapeで編集可能。 |
Spire.PDF for Python には無料版と商用版があります。 Free Spire.PDF for Python は、1ファイルあたり最大10ページなどの制限があります。 制限のない試用版ライセンスを希望する場合は、こちらから申請してください。
可能です。全ページをループする代わりに、抽出したいページのインデックスを指定します。 例えば 2~5 ページの画像を抽出するには次のように書きます。
# ページ2~5の画像を抽出(ページは0始まり)
for i in range(1, 4):
page = pdf.Pages[i]
# 上記と同じ処理を実行
はい。スキャンPDFのように画像内に文字が含まれている場合は、Spire.OCR for Python を組み合わせることで、抽出画像から文字認識を行うことができます。
PythonでPDFから画像を抽出する作業は、Spire.PDF for Python を使うことで簡単かつ効率的に実現できます。 この記事で紹介したサンプルコードを活用すれば、特定ページや全ページから画像を抽出し、任意の形式で保存することが可能です。 さらに、OCRツールと組み合わせることで、画像からテキストを自動的に抽出することもできます。
この機能を活用すれば、レポート作成や画像解析などの業務効率を大幅に向上させ、PDFに埋め込まれたビジュアルデータを柔軟に再利用できます。