PytesseractのTesseractNotFoundError解決方法
エラー内容
pytesseractはPythonのラッパーライブラリであり、Tesseract OCRバイナリが別途インストールされていないと動作しない。
原因
pip install pytesseract しただけでは不十分。TesseractのOCRバイナリ本体を別途インストールし、パスを通す必要がある。
解決手順
ステップ1: Tesseractバイナリのインストール
Windows
UB-Mannheim/tesseract からインストーラーをダウンロードしてインストール。
デフォルトインストールパス(変更される場合があるため確認すること):
または:
Linux (Ubuntu)
Mac
Conda (全OS共通)
ステップ2: Pythonスクリプトにパスを設定
TesseractがシステムのPATH環境変数に含まれていない場合、スクリプト内で明示的にパスを指定する。
import pytesseract
# Windowsの場合
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# または(32bitインストール先の場合)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'
# ユーザーフォルダ配下にインストールした場合
import getpass
username = getpass.getuser()
pytesseract.pytesseract.tesseract_cmd = f'C:\\Users\\{username}\\AppData\\Local\\Tesseract-OCR\\tesseract.exe'
ステップ3: 動作確認
from PIL import Image
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
im = Image.open("sample.jpg")
text = pytesseract.image_to_string(im, lang='eng')
print(text)
Windows でインストールパスを調べる
または Anaconda 環境でインストール先を探す場合:
言語ファイルが見つからない場合
lang パラメータで指定した言語がインストールされていない場合にも同様のエラーが出ることがある。
# インストール済み言語の確認
tesseract --list-langs
# 日本語を追加する場合(Linux)
sudo apt-get install tesseract-ocr-jpn
# スペイン語を追加する場合(Linux)
sudo apt-get install tesseract-ocr-spa
画像前処理を含む完全なサンプルコード
import cv2
import numpy as np
import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def get_string(img_path):
# 画像の読み込み
img = cv2.imread(img_path)
# グレースケール変換
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# ノイズ除去(膨張・収縮)
kernel = np.ones((1, 1), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)
img = cv2.erode(img, kernel, iterations=1)
# 一時ファイルに保存してOCR
cv2.imwrite("processed.png", img)
result = pytesseract.image_to_string(Image.open("processed.png"))
return result
print(get_string("image.png"))
よくあるミス
- バックスラッシュのエスケープ忘れ → raw文字列
r'...'を使う pip install pytesseractのみでバイナリ未インストール → Tesseractバイナリを別途インストールすること