Tesseract OCR
Tesseract OCRのインストール
公式GitHubリリースページから最新版のWindows向けインストーラーをダウンロードします。
PATHを通す
「システムの環境変数」と検索し、「PATH」を選択して「編集」をクリックし、
C:\Program Files\Tesseract-OCR をPATHに追加します。
これによって、コマンドプロンプトからtesseractコマンドを実行できるようになります。
import cv2
import pytesseract
from PIL import Image
image_path = "sample.png"
image = cv2.imread(image_path)
# TesseractOCRのインストールパスを指定
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
# 対象領域を切り抜く
x1, y1 = 100, 100
x2, y2 = 135, 135
cropped_image = image[y1:y2, x1:x2]
# グレースケールに変更
gray_image = cv2.cvtColor(cropped_image, cv2.COLOR_BGR2GRAY)
# ノイズ除去
#denoised_image = cv2.GaussianBlur(gray_image, (5, 5), 0)
# ヒストグラム均等化(コントラスト調整)
# equalized_image = cv2.equalizeHist(denoised_image)
# 二値化処理
_, binary_image = cv2.threshold(gray_image, 128, 255, cv2.THRESH_BINARY)
# サイズ変更
scaled_image = cv2.resize(binary_image, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)
# 切り取った画像を表示する
cv2.imshow("CROPPED IMAGE", cropped_image)
cv2.imshow("BINARY_IMAGE", scaled_image)
# キー入力待ち
cv2.waitKey(0)
cv2.destroyAllWindows()
# --psm 6は単一ブロックのテキスト認識、 digitsは数字に限定
custom_config = "--psm 6 -c tessedit_char_whitelist=0123456789"
# 数字の認識
recognized_text = pytesseract.image_to_string(Image.fromarray(scaled_image), config=custom_config)
# 結果の出力
print("認識された数字", recognized_text.strip())
実行結果
精度が足りないのか3が7として認識されてしまった。
・文字の間に白い空白があるので、これをうめるべき?
・画像サイズを正方形にすべき?