画像から文字情報を抽出したいとき、手作業で入力するのは時間がかかります。Pythonを使えば、OCR(光学文字認識)技術を活用して、簡単に画像内のテキストを自動抽出できます。本記事では、Pythonで画像から文字を読み取る方法や、精度を上げるための工夫、業務自動化やコンテンツ作成への応用例まで詳しく解説します。
OCR(Optical Character Recognition)とは、画像やPDFなどのデータから文字を認識し、テキストデータに変換する技術です。名刺やチラシ、書籍のスキャン画像など、さまざまな場面で活用されています。
PythonでOCRを利用するには、以下の準備が必要です。
pytesseract
(TesseractのPythonラッパー)Pillow
(画像処理ライブラリ)opencv-python
(画像前処理用)pip install pytesseract Pillow opencv-python
C:\Program Files\Tesseract-OCR
)C:\Users\{ユーザー名}\AppData\Local\Programs\Tesseract-OCR
)を入力tesseract --version
※インストーラーによっては「Add to PATH」などのオプションがない場合があります。その場合は必ず自分でPATHを設定してください。
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
PythonとOCR技術を組み合わせることで、画像からテキストを簡単に抽出できます。業務自動化やコンテンツ作成、データ管理など、さまざまなシーンで活用できるため、ぜひ試してみてください。
インストール時はPATHの設定を忘れずに、自分でしっかり環境構築を行いましょう。