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として認識されてしまった。

・文字の間に白い空白があるので、これをうめるべき?

・画像サイズを正方形にすべき?