本文へスキップ
BecomeCoder

Python画像認識コース · 第5章 OCRエンジンで文字を読む · レッスン17

Tesseractとpytesseract ― 定番エンジンで読む

ローカル実施

導入

Tesseract は最も広く使われるオープンソースの OCR エンジンです。Python からは pytesseract という薄いラッパー経由で呼びます。まず、いちばん基本の「画像 → 文字列」を見ましょう。

説明

手元の環境では、次の2つを入れます。

# 1) Tesseract 本体(OSごとに導入方法が違う)
#    macOS:   brew install tesseract
#    Ubuntu:  sudo apt install tesseract-ocr
#    Windows: 公式インストーラを使う
# 2) Python ラッパー
pip install pytesseract pillow

基本の読み取りコードはこれだけです。

import pytesseract
from PIL import Image

# 読み取りたい画像を開く(前章までの前処理済み画像が理想)
img = Image.open("sample.png")

# 画像から文字列を取り出す
text = pytesseract.image_to_string(img)
print(text)
  • pytesseract.image_to_string(画像) … 画像に写った文字を、まとめて1つの文字列で返します。
  • 渡す画像は 前処理済み(グレースケール → 二値化 → ノイズ除去)だと精度が上がります。第2〜4章の処理はこのためにあります。
  • Tesseract 本体が見つからないと TesseractNotFoundError が出ます。その場合は本体のインストールと、必要なら pytesseract.pytesseract.tesseract_cmd にパスを設定します。

前処理と組み合わせた実務の型は、次のようになります。

import cv2, pytesseract

gray = cv2.imread("sample.png", cv2.IMREAD_GRAYSCALE)
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
text = pytesseract.image_to_string(binary)
print(text)

演習

このレッスンは読み物です。「Tesseract 本体」と「pytesseract」は別物である、という点を押さえましょう。pytesseract だけを pip install してもエンジン本体が無ければ動かない——理由を説明できるようにしておいてください。