EasyOCRをインストールしてPythonで文字認識を行う

EasyOCRをインストールしてPythonで文字認識を行う プログラミング

EasyOCRは、名前だけ見るとお手軽なOCRのように感じます。
でも、 EasyOCRはディープラーニングをベースにしています。

本記事の内容

  • EasyOCRとは?
  • EasyOCRのシステム要件
  • EasyOCRのインストール
  • EasyOCRの動作確認

それでは上記に沿って解説していきます。

EasyOCRとは?

EasyOCRとは、オープンソースのPython製OCRです。

80以上もの言語に対応しています。
そして、EasyOCRの開発には50人以上の開発者が参加しているということです。

技術的には、EasyOCRは機械学習ベースです。
より正確に言うと、EasyOCRはディープラーニングを技術基盤としています。

EasyOCRのフレームワーク上に、ディープラーニングっぽい以下の用語が出てきています。

  • CRAFT
  • ResNet
  • LSTM
  • CTC

では、ディープラーニングによる文字認識の精度を確認していきましょう。

GitHub上のEasyOCRページ
https://github.com/JaidedAI/EasyOCR

上記ページで、EasyOCRの文字認識した結果を確認できます。
サンプルの結果として、日本語もあります。
(以下では、日本語サンプルと呼びます)

また、EasyOCRには公式サイトが存在しています。
その公式サイトでは、デモを試すことができます。
https://www.jaided.ai/easyocr/

このデモ画面で「ポイ捨て禁止!」の画像を試してみましょう。
画像は、GitHub上にあります。
https://github.com/JaidedAI/EasyOCR/blob/master/examples/japanese.jpg

そして、言語を「en,ja」にしてデモ画面で試した結果は以下。

まあまあですね。
驚くほど精度が高いわけでもなく、使えないと言うレベルでもありません。

でも、日本語サンプルより認識の精度が落ちています。
デモ画面は、もっと気合いを入れるべきなのですけどね。

以上、EasyOCRについての説明でした。
次は、EasyOCRのシステム要件を確認します。

EasyOCRのシステム要件

現時点(2021年5月)でのEasyOCRの最新バージョンは、1.3.1となります。
この最新バージョンは、2021年4月24日にリリースされています。

ここでの注意点は、ただ一つ。
PyTorchが動くことです。

EasyOCRは、ディープラーニングをベースにしていました。
そして、EasyOCRはディープラーニングをPyTorchに任せています。

したがって、EasyOCRにはPyTorchが必須となります。

PyTorchのシステム要件と同じ

macOSとLinuxは、それほど注意する必要はありません。
EasyOCRのインストールの際に、自動的にPyTorchがインストールされるからです。

それに対して、Windowsは手動でインストールしておく必要があります。
「うわっ、面倒~」と思うかもしれません。

でも、安心してください。
TensorFlowと比べると、断然に簡単です。
詳細は、次の記事で解説しています。

EasyOCRは、PyTorchに依存しています。
したがって、PyTorchのシステム要件を満たす必要があるのです。

それが理由かどうかはわかりませんが、EasyOCRには情報が不足しています。
念のため、setup.pyも確認しました。

結構、適当なsetup.pyです。
普通は、setup.pyにシステム要件が記載されています。

サポート対象となるOSやPythonバージョンが記載されているはずなのです。
でも、そのような情報が全く記載されていません。

今回は、現時点での最新バージョンのPythonで検証します。

>python -V
Python 3.9.4

WindowsへのPyTorchのインストール

Windows以外のOSの場合、ここをスルーしても問題ありません。
今回の検証で利用した、PyTorchは次の設定でインストールしています。

もちろん、この設定は時期や各自の環境により異なります。

最終的には、次のコマンドでPyTorchをインストールしています。

pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

まとめ

EasyOCRには、詳しいシステム要件が公式などに載っていません。
参考とするべきは、EasyOCRの基盤技術となるPyTorchです。

したがって、PyTorchのシステム要件がEasyOCRのシステム要件と言えます。
なお、PyTorchはPython 3系でしか動きません。

以上、EasyOCRのシステム要件を説明しました。
次は、EasyOCRをインストールしていきましょう。

EasyOCRのインストール

最初に、現状のインストール済みパッケージを確認しておきます。
PyTorchをインストールしただけの状況です。

>pip list
Package           Version
----------------- -----------
numpy             1.20.2
Pillow            8.2.0
pip               21.1.1
setuptools        56.0.0
torch             1.8.1+cu111
torchaudio        0.8.1
torchvision       0.9.1+cu111
typing-extensions 3.7.4.3

次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip

では、EasyOCRのインストールです。
EasyOCRのインストールは、以下のコマンドとなります。

pip install easyocr

インストールは、結構時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list
Package           Version
----------------- -----------
cycler            0.10.0
decorator         4.4.2
easyocr           1.3.1
imageio           2.9.0
kiwisolver        1.3.1
matplotlib        3.4.1
networkx          2.5.1
numpy             1.20.2
opencv-python     4.5.1.48
Pillow            8.2.0
pip               21.1.1
pyparsing         2.4.7
python-bidi       0.4.2
python-dateutil   2.8.1
PyWavelets        1.1.1
PyYAML            5.4.1
scikit-image      0.18.1
scipy             1.6.3
setuptools        56.0.0
six               1.15.0
tifffile          2021.4.8
torch             1.8.1+cu111
torchaudio        0.8.1
torchvision       0.9.1+cu111
typing-extensions 3.7.4.3

結構多くのパッケージが、インストールされました。
PyTorchも含めて、EasyOCRは多くのパッケージに依存しています。

以上、EasyOCRのインストールについての説明でした。
最後は、EasyOCRの動作確認を行います。

EasyOCRの動作確認

デモ画面で試した画像を「japanese.jpg」とします。
この画像をOCRするサンプルコードは、以下。

import easyocr

# 言語選択(デフォルトでGPU利用、CPUのみの場合はgpu=False)
reader = easyocr.Reader(['en', 'ja'], gpu=True)
# 画像読み込み=文字認識
result = reader.readtext('japanese.jpg', detail=0)

print(result)

上記を実行した結果は、以下。

['ポイ橋て禁止』', 'NOLTTB', '清潔できれいな港区を', '潜 区 MNATOCITY']

デモ画面と同じ結果になりました。
つまり、日本語サンプルには認識精度が及ばないということです。

パラメータとか、読み込む画像の質を変えれば精度が上がるのもかしれません。
とりあえず、デフォルトでは「まあまあ」の文字認識の精度ということがわかりました。

今後は、精度を上げるためにEasyOCRを触ってみます。
それで成果があれば、また記事にします。

以上、これにて本記事を終了とします。

タイトルとURLをコピーしました