PythonでOCR

昔から tesseract というオープンソースのOCRエンジンが有名です。Pythonからは pytesseract で使えます。ここではより新しい EasyOCR と、Mac限定ですがmacOSのOCRエンジンを使う方法を解説します。

EasyOCR

EasyOCR はたいへん優れたOCRエンジンです。Apple Silicon もサポートされています。コマンドラインでも使えます。

pip install easyocr でインストールできます。

import easyocr

reader = easyocr.Reader(['en']) # en, ja, ...
result = reader.readtext('filename.png', detail=0)

print(" ".join(result))

初回実行時にモデル(パラメータのファイル)がダウンロードされます:

Downloading detection model, please wait. This may take several minutes depending upon your network connection.

Downloading recognition model, please wait. This may take several minutes depending upon your network connection.

モデルはデフォルトでは ~/.EasyOCR/ の下に入りますが、環境変数 EASYOCR_MODULE_PATH を設定しておけばそちらに入ります。

Surya

Surya という新しいOCRツールがあるようです。pip install surya-ocr でインストールできます。

MacのOCR機能を使う

Macはたいへん優れたOCR機能を持っています。画像ファイルをマウスでテキスト範囲指定してコピーできます。この機能をコマンドラインで使う方法が macOS のデフォルト状態でコマンドラインからOCR処理を行う という記事で解説されています。

MacのOCR機能をPythonで使うための ocrmac というパッケージがあります。pip install ocrmac でインストールできます。コマンドラインでも使えます。Pythonからは例えば次のようにして使います。

from ocrmac import ocrmac

annotations = ocrmac.OCR('filename.png', language_preference=['ja-JP','en-US']).recognize()
print(" ".join([a[0] for a in annotations]))


Last modified: