導入
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 の使い分けの目安:
| Tesseract | EasyOCR | |
|---|---|---|
| 仕組み | LSTM ベース | ディープラーニング(検出+認識) |
| 導入 | 本体+言語データ | pip(PyTorch 同梱・大きい) |
| 得意 | きれいな活字・軽量 | 手書き・傾き・多言語 |
| 速度 | 軽い | 重い(GPUで加速) |
さらに高精度を求めるなら PaddleOCR、クラウドなら Google Cloud Vision・Amazon Textract・Azure AI Vision といった選択肢もあります(第6章で触れます)。
どのエンジンでも、前処理の質が結果を大きく左右する点は共通です。第2〜4章で学んだ処理は、エンジンを変えても無駄になりません。
演習
このレッスンは読み物です。「軽くて活字向けの Tesseract」「重いが手書き・多言語に強い EasyOCR」という大きな性格の違いを、一言で言えるようにしておきましょう。案件の要件(速度・精度・言語・手書きの有無)でエンジンを選びます。