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のシステム要件を確認します。
追記 2024年4月26日
EasyOCRは、この3年間でほとんど進化していません。
今なら、paddleOCRをオススメします。
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を触ってみます。
それで成果があれば、また記事にします。
以上、これにて本記事を終了とします。