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

PDF OCR(光学文字認識)の実行は、スキャン済み文書を扱う際の一般的な要件です。標準的なデジタル PDF には検索可能なテキストレイヤーが含まれていますが、スキャン済み PDF は本質的に印刷文書の画像であるため、従来のテキスト抽出方法では効果的ではありません。
コンテンツにアクセス可能で編集可能にするために、開発者はまず PDF ファイルを画像に変換 し、その後 OCR 技術を使用してテキストを認識・抽出する必要があります。このプロセスを手動で実行するのは時間がかかり非効率的であり、特に複数の文書を扱う場合に問題となります。
このガイドでは、Spire.PDF for Python と Spire.OCR for Python を使用して、スキャン済み PDF からのテキスト抽出を自動化する完全な Python PDF OCR パイプライン の構築に焦点を当てています。このアプローチは、実世界の文書処理ワークフローに対応するスケーラブルなソリューションを提供します。
クイックナビゲーション
PDF ファイルからテキストを抽出する場合、アプローチを決定する重要な要素の一つが PDF の種類です。一般的に、PDF は 2 つのカテゴリーに分類されます:スキャン済み(画像ベース)PDF と検索可能 PDF です。それぞれに異なるテキスト抽出戦略が必要です。
スキャン済み PDF は通常、書籍、請求書、契約書、雑誌などの物理文書をデジタル化して作成されます。テキストは人間の目には読み取れるように見えますが、実際には画像として埋め込まれているため、従来のテキスト抽出ツールではアクセスできません。古いデジタルファイルやパスワード保護された PDF にも、実際のテキストレイヤーがない場合があります。
一方、検索可能 PDF には、コンピューターがコンテンツを検索、コピー、または解析できる隠しテキストレイヤーが含まれています。これらのファイルは通常、Microsoft Word や PDF エディターなどのアプリケーションから直接生成され、プログラムによる処理がはるかに容易です。
この違いは、スキャン済み PDF を扱う際の OCR(光学文字認識)の重要性を浮き彫りにしています。Python PDF OCR のようなツールを使用することで、これらの画像ベースの PDF を画像に変換し、OCR を実行してテキストを認識し、さらに使用するために抽出することがすべて自動化された方法で可能になります。
開始する前に、以下が準備されていることを確認してください:
Python 3.x がインストールされていること
Spire.PDF for Python がインストールされていること:
pip install spire.pdf
Spire.OCR for Python がインストールされていること:
pip install spire.ocr
公式の Spire.PDF および Spire.OCR ページにアクセスして手動でダウンロードおよびインストールすることもできます。
Spire.OCR 言語モデルファイルがダウンロードされていること(英語、中国語、フランス語、ドイツ語、その他の言語で利用可能)
このガイドでは、両方のライブラリを使用して完全な PDF OCR パイプラインを作成するワークフローを示します。
Python PDF OCR に取り組む前に、基本的なステップを理解することが重要です:OCR 技術は PDF ファイルを直接処理しません。特に画像ベースの PDF(スキャン済み文書から作成されたものなど)の場合、まず個々の画像ファイルに変換する必要があります。
Spire.PDF ライブラリを使用して PDF を画像に変換するのは簡単です。対象の PDF 文書を読み込み、各ページを反復処理するだけです。各ページに対して、PdfDocument.SaveAsImage() メソッドを呼び出して個別の画像ファイルとして保存します。このステップが完了すると、画像は後続の OCR プロセスの準備が整います。
以下は、PDF ページを PNG 画像に変換する方法の例です:
from spire.pdf import *
# PDF ファイルを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
# ページをループ処理して画像として保存
for i in range(pdf.Pages.Count):
# 各ページを画像に変換
with pdf.SaveAsImage(i) as image:
# 必要に応じて異なる形式で保存
image.Save(f"output/pdftoimage/ToImage_{i}.png")
# image.Save(f"output/ToImage_{i}.jpg")
# image.Save(f"output/ToImage_{i}.bmp")
# PDF 文書を閉じる
pdf.Close()
以下は変換結果のプレビューです:

i)を画像オブジェクトに変換この段階で、PDF は個別の画像ファイルに変換されています。これらの画像は現在、OCR 技術を使用してテキストコンテンツを抽出するために処理できます。
PDF 変換オプションの詳細については、次を参照してください:Python で PDF を画像形式に変換
スキャン済み PDF を画像に変換した後、Python で PDF OCR を実行して PDF からテキストを抽出する作業に進むことができます。Spire.OCR の OcrScanner.Scan() を使用すると、画像内のテキスト認識が簡単になります。英語、中国語、フランス語、ドイツ語など、複数の言語をサポートしています。テキストが抽出されると、.txt ファイルに簡単に保存したり、Word 文書を生成したりできます。
以下のコード例は、最初の PDF ページを OCR して Python でテキストにエクスポートする方法を示しています:
from spire.ocr import *
# OCR スキャナーインスタンスを作成
scanner = OcrScanner()
# OCR モデルパスと言語を設定
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'E:/win-x64/'
configureOptions.Language = 'Japanese'
scanner.ConfigureDependencies(configureOptions)
# 画像に対して OCR を実行
scanner.Scan(r'output/pdftoimage/ToImage_0.png')
# 抽出されたテキストをファイルに保存
text = scanner.Text.ToString()
with open('output/scannedpdfoutput.txt', 'a', encoding='utf-8') as file:
file.write(text + '\n')
以下は OCR 結果のプレビューです:

.txt ファイルに保存このセクションでは、単一の画像からテキストを抽出するためのコア OCR ワークフローを示しています。次のセクションでは、このアプローチを拡張して すべてのページを自動的に 処理する方法を説明します。
以下は、PDF OCR からテキスト抽出までの完全なワークフローを示す実行可能な例です:
from spire.pdf import *
from spire.ocr import *
import os
# ---------------------------
# 設定
# ---------------------------
pdf_path = "AI生成アート.pdf"
output_image_dir = "output/pdftoimage"
output_text_file = "output/scannedpdfoutput.txt"
ocr_model_path = r"E:/win-x64/"
ocr_language = "Japanese"
# 出力ディレクトリが存在しない場合は作成
os.makedirs(output_image_dir, exist_ok=True)
os.makedirs(os.path.dirname(output_text_file), exist_ok=True)
# ---------------------------
# ステップ 1: PDF を画像に変換
# ---------------------------
pdf = PdfDocument()
pdf.LoadFromFile(pdf_path)
image_paths = []
for i in range(pdf.Pages.Count):
# 各ページを画像に変換
with pdf.SaveAsImage(i) as image:
image_path = f"{output_image_dir}/ToImage_{i}.png"
image.Save(image_path)
image_paths.append(image_path)
print(f"ページ {i} を {image_path} に変換しました")
pdf.Close()
print(f"変換された総ページ数: {len(image_paths)}")
# ---------------------------
# ステップ 2: すべての画像に対して OCR を実行
# ---------------------------
# OCR スキャナーインスタンスを作成
scanner = OcrScanner()
# OCR モデルパスと言語を設定
configureOptions = ConfigureOptions()
configureOptions.ModelPath = ocr_model_path
configureOptions.Language = ocr_language
scanner.ConfigureDependencies(configureOptions)
# 以前の出力ファイルをクリア
if os.path.exists(output_text_file):
os.remove(output_text_file)
# 各画像を処理
for i, image_path in enumerate(image_paths):
print(f"ページ {i} を処理中: {image_path}")
# 画像に対して OCR を実行
scanner.Scan(image_path)
# テキストを抽出して保存
text = scanner.Text.ToString()
with open(output_text_file, 'a', encoding='utf-8') as file:
file.write(f"--- ページ {i} ---\n")
file.write(text + '\n\n')
print(f"ページ {i} の OCR が完了しました")
print(f"\nOCR が完了しました。テキストは次の場所に保存されました: {output_text_file}")
この完全な例は、PDF OCR パイプライン全体を示しています:
このコードを直接実行して、スキャン済み PDF を編集可能なテキストファイルに変換できます。出力には、より良い整理のためにページ区切りが含まれています。
PDF OCR を実行するプロセスは単純に見えるかもしれませんが、いくつかの実用的な課題が発生する可能性があります。
低解像度のスキャンやぼやけた画像は、OCR の精度を低下させる可能性があります。
解決策:
マルチカラムレイアウト、表、または混合コンテンツを含む PDF は、OCR エンジンを混乱させる可能性があります。
解決策:
特殊なフォント、手書きのテキスト、装飾的なテキストは、正確に認識されない場合があります。
解決策:
間違った言語モデルを使用すると、認識精度が大幅に低下します。
解決策:
数百ページの処理には時間がかかる可能性があります。
解決策:
数学記号、図、または非標準の文字は正しく抽出されない可能性があります。
解決策:
これらの問題を予測することで、より信頼性の高い PDF OCR ワークフロー を構築し、全体的な抽出品質を向上させることができます。
Python で PDF OCR を実行することは、ワンステップの操作ではなく、PDF を画像に変換し、その後 OCR 技術を使用してテキストコンテンツを認識・抽出する構造化されたプロセスです。
2 段階のパイプライン(PDF から画像への変換、その後に OCR テキスト抽出)に焦点を当て、Spire.PDF と Spire.OCR を備えた Python を使用することで、完全な PDF OCR ソリューション を効率的に実装でき、文書処理タスクの自動化が容易になります。
このアプローチは、編集可能で検索可能なテキストに変換する必要があるスキャン済みの請求書、契約書、レポート、その他の画像ベースの PDF を処理する場合に特に有用です。
Spire.PDF for Python と Spire.OCR for Python のパフォーマンスを評価し、制限を解除したい場合は、30 日間の無料トライアルを申請できます。
PDF OCR(光学文字認識)は、スキャン済みまたは画像ベースの PDF を検索可能で編集可能なテキストに変換するプロセスです。スキャン済み PDF には実際のテキストではなく画像が含まれているため、画像内の文字を認識して機械可読のテキストに変換するには OCR 技術が必要です。
いいえ。Python は PDF ファイルに対してワンステップで直接 OCR を実行できません。典型的なワークフローには以下が含まれます:
Spire.OCR は、英語、中国語(簡体字および繁体字)、フランス語、ドイツ語、日本語、韓国語など、複数の言語をサポートしています。適切な言語モデルファイルをダウンロードし、Language パラメーターを適切に設定する必要があります。
OCR の精度はいくつかの要因に依存します:
高品質のスキャンと明確なフォントは通常 95% 以上の精度を達成します。画質が悪い画像や特殊なフォントは手動修正が必要になる場合があります。
はい。複数の PDF ファイルをループ処理し、同じ OCR パイプラインをそれぞれに適用できます。大規模な処理の場合は、パフォーマンスを向上させるために並列処理の実装を検討してください。
この違いを理解することは、PDF 処理ワークフローに OCR が必要かどうかを判断するのに役立ちます。