画像から文字情報を抽出したいとき、手作業で入力するのは時間がかかります。Pythonを使えば、OCR(光学文字認識)技術を活用して、簡単に画像内のテキストを自動抽出できます。本記事では、Pythonで画像から文字を読み取る方法や、精度を上げるための工夫、業務自動化やコンテンツ作成への応用例まで詳しく解説します。
OCRとは
OCR(Optical Character Recognition)とは、画像やPDFなどのデータから文字を認識し、テキストデータに変換する技術です。名刺やチラシ、書籍のスキャン画像など、さまざまな場面で活用されています。
Pythonで画像から文字を読み取るメリット
- 自動化による効率化:大量の画像からテキストを抽出し、手作業を大幅に減らせます。
- 多言語対応:日本語や英語など、さまざまな言語に対応しています。
- 業務やコンテンツ作成への応用:名刺管理や資料のデジタル化、ブログ記事やレポートへの引用など、幅広い用途があります12。
必要なツールと環境構築
PythonでOCRを利用するには、以下の準備が必要です。
- Tesseract OCRのインストール
- WindowsやMac、LinuxなどOSごとにインストール方法が異なります。公式サイトからダウンロードしてください。
- Pythonライブラリのインストール
pytesseract
(TesseractのPythonラッパー)Pillow
(画像処理ライブラリ)- 必要に応じて
opencv-python
(画像前処理用)
pip install pytesseract Pillow opencv-python
Tesseract OCRのインストール手順(Windows)
- Tesseract OCR公式サイトからインストーラーをダウンロード
- インストーラーを実行し、インストールを進める
- インストール先フォルダを確認(例:
C:\Program Files\Tesseract-OCR
)
- インストール先フォルダを確認(例:
- 日本語対応(オプション)
- Tesseractのインストール時に「Additional language data (download)」で日本語(jpn)も選択してください。
- PATHの手動設定
- スタートメニューで「システム環境変数」と検索し、「システムの詳細設定」→「環境変数」を選択
- 「システム環境変数」欄の「Path」を選択し、「編集」をクリック
- 「新規」をクリックし、インストールフォルダのパス
(例:C:\Users\{ユーザー名}\AppData\Local\Programs\Tesseract-OCR
)を入力 - 「OK」をクリックして保存
- インストール確認
- コマンドプロンプトまたはPowerShellで以下を実行
- バージョン情報が表示されればインストール成功です。
tesseract --version
※インストーラーによっては「Add to PATH」などのオプションがない場合があります。その場合は必ず自分でPATHを設定してください。
基本的なOCR処理のコード例
from PIL import Image
import pytesseract
# Tesseractの実行ファイルのパスを明示的に指定(必要に応じて)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# 画像ファイルの読み込み
image = Image.open("sample.png")
# OCRでテキスト抽出(日本語対応)
text = pytesseract.image_to_string(image, lang='jpn')
# 結果の出力
print("認識テキスト:", text)
実行結果
今回は、↓の本ブログのプロフィールを解析してみました。

実行結果は、以下の通りでした。
取れていない部分もあるけど、そこそこうまく取得できている感じです。
認識テキスト: にいやん
ンジニア
年齢 : 38歳(2022年11月現在)
業務の効率化で噂もありPython
言語に興味を持ち勉強しています。
そこで学んだことを記事にして皆さん
とシェアさせていただければと思いブ
ログをはじめました! !
興味ある記事があれば皆さん見ていっ
てください! !
にほんブログ本
画像前処理で精度を上げる
画像がぼやけていたり、背景が複雑な場合、前処理を行うことで認識精度が向上します2。
import cv2
import pytesseract
# 画像読み込み
img = cv2.imread("sample.png")
# グレースケール変換
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二値化(オプション)
ret, threshold_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
# OCRでテキスト抽出
text = pytesseract.image_to_string(threshold_img, lang='jpn')
print(text)
結果
同じデータを解析させたところ、以下になりました。
何もしないよりは、改善しているの確認できました。
にいやん
出身 : 関西
居住区 : 関西
職業 : 組み込み歓器エンジニア
(エンジーア歴13年)
年齢: 38歳(2022年11月現在)
最近 業務の効率化で噂もありPython
言語に届味を持ち勉強しています。
そこで学んだごとを記事にして皆さん
とシェアさせていただければと思いブ
ログをはCめました1! !
興味ある記事があれば皆さん見ていっ
てください! !
にほんブログ持
3
応用例
- 名刺管理
- スキャンした名刺から連絡先を自動抽出し、データベースに登録。
- 書籍や資料のデジタル化
- 書籍のスキャン画像からテキストを抽出し、検索可能なデータに変換。
- コンテンツ作成支援
- 画像内のテキストをブログ記事やレポートに引用しやすくする12。
注意点と改善ポイント
- 画像の鮮明さや文字サイズ、フォントによって認識精度が異なります。
- 手書き文字の場合は印刷文字よりも精度が落ちる場合があります。
- 前処理(グレースケール化や二値化)を工夫することで、精度を高められます。
まとめ
PythonとOCR技術を組み合わせることで、画像からテキストを簡単に抽出できます。業務自動化やコンテンツ作成、データ管理など、さまざまなシーンで活用できるため、ぜひ試してみてください。
インストール時はPATHの設定を忘れずに、自分でしっかり環境構築を行いましょう。
コメント