Pythonで画像から文字を読み取る方法:OCR活用ガイド

画像から文字情報を抽出したいとき、手作業で入力するのは時間がかかります。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)

  1. Tesseract OCR公式サイトからインストーラーをダウンロード
  2. インストーラーを実行し、インストールを進める
    • インストール先フォルダを確認(例:C:\Program Files\Tesseract-OCR
  3. 日本語対応(オプション)
    • Tesseractのインストール時に「Additional language data (download)」で日本語(jpn)も選択してください。
  4. PATHの手動設定
    • スタートメニューで「システム環境変数」と検索し、「システムの詳細設定」→「環境変数」を選択
    • 「システム環境変数」欄の「Path」を選択し、「編集」をクリック
    • 「新規」をクリックし、インストールフォルダのパス
      (例:C:\Users\{ユーザー名}\AppData\Local\Programs\Tesseract-OCR)を入力
    • 「OK」をクリックして保存
  5. インストール確認
    • コマンドプロンプトまたは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の設定を忘れずに、自分でしっかり環境構築を行いましょう。

にいやん

出身 : 関西 居住区 : 関西 職業 : 組み込み機器エンジニア (エンジニア歴13年) 年齢 : 38歳(2022年11月現在) 最近 業務の効率化で噂もありPython言語に興味を持ち勉強しています。 そこで学んだことを記事にして皆さんとシェアさせていただければと思いブログをはじめました!! 興味ある記事があれば皆さん見ていってください!! にほんブログ村