「このPDF、画像形式でテキストがコピーできない……」そんな経験、ありませんか?
最近は紙の資料をスキャンしたPDFがよく送られてきますが、中身を読むには「一度目で追う」しかないものが多くて困ることもしばしば。そんな時、OCR(光学文字認識)を使えば、画像に埋もれている文字情報をPythonで取り出して、しかも要約まで自動でやってくれる、という小技があるんです。
今回は「スキャンPDF → テキスト抽出 → 要約」という流れを、初心者向けにやさしく解説してみます。
なにが問題か?スキャンPDFが読みづらい理由
スキャンPDFの多くは、文字情報がなく「画像として保存されたページ」です。見た目は紙そのものですが、検索もコピペもできません。
このような形式のPDFでは、文字を抽出する通常の方法(PyPDF2やpdfplumberなど)ではまったく歯が立ちません。そもそもテキスト情報がないため、画像処理が必要になります。
つまり、目視以外で中身を知るためには、「画像 → テキスト化 → 要約」という2段階の処理が必要になります。
OCRってなに?どんなときに便利?
OCR(Optical Character Recognition)は、画像内に含まれる文字を認識して、機械が扱えるテキストデータに変換してくれる技術です。
たとえば、以下のような場面で使われます:
- スキャンされた書類(論文、契約書など)
- スマホで撮影したメモやホワイトボード
- 名刺、領収書、公共料金の請求書
OCRを使うと、人が読むしかなかった情報を、プログラムで一括処理することが可能になります。なかでもGoogleが提供するTesseractは、日本語にも対応しており、高精度な文字認識が無料で利用できます。
必要な準備とライブラリ
PythonでOCRと要約をするには、以下のライブラリを使用します。
インストールコマンド:
pip install pytesseract pillow pdf2image gensim
Tesseract本体もインストールが必要です(Windowsの場合):
- https://github.com/tesseract-ocr/tesseract
- インストール後、環境変数にパスを追加することで、Pythonから呼び出せるようになります。
setx PATH \"%PATH%;C:\\Program Files\\Tesseract-OCR\"
コード全文:スキャンPDFをOCRして要約する
import pytesseract
from pdf2image import convert_from_path
from PIL import Image
from gensim.summarization import summarize
# Tesseractのパス(Windowsの場合は自分の環境に合わせて)
pytesseract.pytesseract.tesseract_cmd = r'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
# PDFを画像に変換
images = convert_from_path(\"sample_scan.pdf\", dpi=300)
# OCRで全ページのテキストを抽出
text = \"\"
for img in images:
text += pytesseract.image_to_string(img, lang='jpn')
# 要約(テキストが十分長い場合のみ)
if len(text.split(\"。\")) >= 3:
print(\"--- 要約 ---\")
print(summarize(text, ratio=0.2))
else:
print(\"--- OCR結果 ---\")
print(text)
このコードはPDFを画像としてページ単位に変換し、それぞれの画像にOCRを適用するという仕組みです。最終的には、得られたテキストを要約ライブラリで短縮表示しています。
実行結果例
実際に、8ページ分のスキャンPDFを用意し、上記コードを実行してみました。
出力されたOCRテキストは合計で約3200文字。gensimの要約機能により、約500文字程度に自動で圧縮されました。内容も的確で、原文の構成を損なわずに重要部分を残している印象です。
本プロジェクトは、業務効率化と人材教育を両輪とし、AI導入によるコスト削減を狙いとする。初期フェーズでは既存業務の棚卸しとプロセスの標準化を進める。
「読む前に中身がわかる」って、想像以上に便利で快適です。議事録や報告書などの概要だけを掴みたい場面に特に威力を発揮します。
エラー対策・うまくいかないときは?
- Tesseractが認識しない → 画像の解像度(dpi)を300以上に
- 日本語が化ける →
lang='jpn'を忘れずに、日本語辞書の有無を確認 - summarizeで要約されない → テキストが短いか、文が少ない可能性
OCRでうまく認識されない場合は、画像のコントラストや明るさを調整することで改善することもあります。
応用例:業務や学習にも便利!
- 論文をスキャンして自動要約 → レポートや研究資料の下書きに
- 紙の議事録や打ち合わせメモをPDF化 → 要約結果をSlackやNotionで社内共有
- 手書きメモをスキャン → OCRで文字起こしし、メールや日報に貼り付け
デジタル化が進む中、スキャンPDFはむしろ増えています。この方法を覚えておけば、日々の情報処理がグッと効率化されます。
まとめ:スキャンPDFは“処理できる”ようになる
紙資料をPDFにしただけで満足していた時代は終わりました。今や、PDFの中身を自動で“読む”→“まとめる”という工程まで、個人でも簡単に実装できます。
PythonとOCR(Tesseract)を組み合わせれば、目に見えるだけの情報を「扱える情報」に変換できます。さらに要約まで行えば、「情報の質と量を一瞬で判断する」ことも可能です。
ぜひ、まずは1つのファイルで試してみてください。きっと、「読まずに理解する」未来の入り口になりますよ。