本文へスキップ
BecomeCoder

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

EasyOCRとディープラーニング系 ― もう一つの選択肢

ローカル実施

導入

Tesseract のほかに、ディープラーニングを前面に出した OCR も広く使われます。代表格が EasyOCR です。手書きや斜めの文字、多言語に強い反面、モデルが大きく重いのが特徴です。

説明

# pip install easyocr  (PyTorch も一緒に入る。数百MB〜)
import easyocr

# 使う言語を指定してリーダーを作る(初回はモデルをダウンロード)
reader = easyocr.Reader(["ja", "en"])

# 画像を読む。結果は (位置, テキスト, 信頼度) のリスト
results = reader.readtext("sample.png")
for box, text, conf in results:
    print(f"{text!r}  conf={conf:.2f}")
  • easyocr.Reader(["ja", "en"]) … 日本語+英語のモデルを読み込みます。初回はモデルの自動ダウンロードが走ります。
  • reader.readtext(画像) … 検出した文字ブロックごとに (4点の座標, テキスト, 信頼度) を返します。位置と信頼度が最初から付いてくるのが便利です。
  • PyTorch に依存するため、環境が重くなります。GPU があれば速く動きます。

Tesseract と EasyOCR の使い分けの目安:

TesseractEasyOCR
仕組みLSTM ベースディープラーニング(検出+認識)
導入本体+言語データpip(PyTorch 同梱・大きい)
得意きれいな活字・軽量手書き・傾き・多言語
速度軽い重い(GPUで加速)

さらに高精度を求めるなら PaddleOCRクラウドなら Google Cloud Vision・Amazon Textract・Azure AI Vision といった選択肢もあります(第6章で触れます)。

どのエンジンでも、前処理の質が結果を大きく左右する点は共通です。第2〜4章で学んだ処理は、エンジンを変えても無駄になりません。

演習

このレッスンは読み物です。「軽くて活字向けの Tesseract」「重いが手書き・多言語に強い EasyOCR」という大きな性格の違いを、一言で言えるようにしておきましょう。案件の要件(速度・精度・言語・手書きの有無)でエンジンを選びます。