AI-OCR技術紹介:EasyOCRの特徴と実用性

こんにちは、IXEの古賀です。今回はAI-OCR技術「EasyOCR」についてご紹介します。最近では生成AIが話題になることが多いですが、画像処理技術の進化も同様に目覚ましく、特にOCR(光学文字認識)技術は飛躍的に向上しています。EasyOCRは、そんな最新のAI技術を活用したオープンソースOCRツールです。今回はEasyOCRの特徴や活用シーンを具体的に解説しますので、ぜひご参考ください。

EasyOCRとは?

EasyOCRは、PythonベースのオープンソースAI-OCRライブラリで、以下のような特徴があります:

  • オフライン動作:インターネット接続が不要で、プライバシーを重視する環境でも利用可能
  • 多言語対応:日本語、英語を含む80以上の言語に対応
  • 画像からの自然な文字認識:看板や雑誌などの実世界の画像でも認識可能
  • シンプルな実装:Pythonの基本知識があれば導入可能
  • 商用利用可能なライセンス(Apache License 2.0)

基本的にPythonで動きますが、業務システムと連携する場合は他の言語(JavaなりC#なり)と連携しつつ処理を行うイメージとなります。

EasyOCRの技術的な特徴

1.ディープラーニングベースの認識エンジン
EasyOCRは、以下の2段階のプロセスで文字認識を行います。
Step1.テキスト検出処理。CRAFTアルゴリズムを用いて検出を試みます。
Step2.テキスト認識処理。CRNNモデルを用いて文字を識別します。
  
従来のルールベースOCRのに比べて、映像が暗かったり背景が複雑な場合でも高度な検知性能を見せます。

2.GPU対応による高速化
EasyOCRはGPUに対応しており、特にNVIDIAのCUDA対応GPUがある環境では高速な処理が可能です。大規模なデータ処理やリアルタイム認識が求められる場面では、GPUの活用が効果的です。CPUのみでも動作しますが、かなり遅くなります。OCR処理は速度も非常に重要なポイントとなりますので、GPU処理を推奨しています。

EasyOCRの活用シーン

1.定型フォーマットの数値読み取り
電気メーターやガスのメーター、固定レイアウトの帳票から数値を抽出する際に活用できます。認識対象を「数字のみに制限」し、撮影環境を一定にすることで、安定した認識精度が得られます。動体等も検知は可能と思いますが、適切なフォーカス設定・シャッタースピード調整などが必要です。

2.指示書などの簡易OCR補助ツール
作業で使用している書類を本OCRを用いて読み込みます。完全自動化は難しくとも、人間の目による最終確認と組み合わせることで作業効率化に寄与します。

3.特定業務での限定的な文字認識
商品の型番確認や書類の管理番号読み取りなど、比較的単純な文字認識が求められる場面に適しています。

4.既存システムの補助機能
例えば、バーコード読み取りシステムのバックアップとして、EasyOCRを組み込むことでシステムの安定稼働をサポートできます。

後述する動画を見て頂ければわかりますが、まだ理想とする状態へは通り状態です。とはいうものの精度は非常に向上していると考えているため補助的な用途は決まった用途にであれば、読み込み環境をしっかり整えることで活用が期待できます。

EasyOCRの課題と限界

1.認識精度の問題
特殊なフォントや手書き文字の認識精度が低下する場合があります。また複雑な背景や低コントラストの条件では認識が難しいことがあります。正直手書き文字の高精度化はまだ現実的では無さそうです。ただ、印刷部物であれば、ある程度の性能が期待できます。
補助的な用途であれば、十分活用可能と判断しています。

2.処理速度の問題
高解像度の画像や複雑なレイアウトの処理には時間がかかる場合があります。
高速処理を行うにはGPUなどの高性能ハードウェアが推奨されますが、CPUでも動作は可能です。ただし、GPU版に比べると処理時間は5倍以上かかる場合があります。
また、精度と速度には相関があり、1回のスキャンでは十分に読み取れない可能性があります。そのため、複数回のチェック処理を行うことが望ましいです。そのため、OCRにおいて速度は非常に重要な項目となります。

3.環境依存性
照明や撮影条件の影響を受けやすく、安定した認識には環境の調整が欠かせません。これはあらゆる画像処理に共通することですが、環境を一定に保つことで安定した読み取りが可能になります。反対に、環境が頻繁に変わると認識精度が低下する恐れがあります。
また、被写体 テキストの傾きや歪みによって認識精度が低下しますので、しっかり固定させることもポイントとなります。
その他、基本的に横文字しか読み込ませることはできませんでした。逆側になる場合等も想定する場合、4方向に回転させながらスキャン処理を実行するなどの対応が必要です。

デモ動画のご紹介

以下のデモ動画では、EasyOCRの性能や限界を映像で確認できます。是非閲覧頂き、どういうレベル感なのか把握頂ければ幸いです。

【動画検証条件】

カメラLogitech Logicool(ロジクール) BRIO (ブリオ) RightLight 3 採用 4K Ultra HDウェブカメラ
CPUIntel Core i7-13700
GPURTX4060Ti , CUDA 12.8
RAM32GB
OSWindows 11 Pro
OCRライブラリEasyOCR
検証言語Python
その他のライブラリOpenCV , NumPy
検証処理画質2K (2560 * 1440)に対し、0.8倍の圧縮処理を行った画像に対してOCR処理を実行
シャッタースピード若干調整
フォーカス調整フォーカス調整無し
照度(最奥部)130Lux
距離(最奥部)1150mm
各文字のサイズ(縦幅)大(上段):28mm   中(中段):23mm   小(下段):13mm
  • 動画1:数字のみの認識

  高精度で読み込めている事がわかります。

  • 動画2:英数字の混在認識

  App1e 及び AB85EF を誤検知していることがわかります。このことから、英数混在には弱いことがわかります。

  • 動画3:漢字の認識

  今回は漢字のみに絞って読み込ませています。なかなか高精度ですが、もっと難しい漢字の場合への想定が出来ないので、実務では怖くて使用できませんね。

  • 動画4:カタカナの認識

  カタカナに絞って読み込ませています。これであれば使用できる範囲かもしれません。

  いかがだったでしょうか。期待外れと感じる人もいれば、かなり進化していると感じる人もいると思います。私の所感としては、特定フォーマットの文字かつ英数程度なら使用できると感じています。

まとめ

EasyOCRは、思ったより気軽に導入できるのが良いところです。私自身、特に「数字の読み取り」や「固定されたレイアウトの帳票処理」で効果を感じました。とはいえ、万能ではないので「ここは人の目で確認する」といった割り切りも大事ですね。試しに使ってみて、うまくハマるシーンがあれば取り入れるのがオススメです。実際に業務で使うとした場合、特定の固定フォーマットの文字列・英数かつ、複数回のエラーチェックを行うことで、やっと使用できるかなという感覚です。

他にもいくつもAI-OCRは存在するのですが、いくつか試した中でEasyOCRが一番手軽かつ高精度に読み込む事ができました。クラウドOCRについては検証は実施できていないものの、かなりの精度が出せるようです。読み込み頻度が少ないケース かつ 課金に問題ない場合はクラウドOCRを活用する案も良いと思います。

その他、合わせてバーコード読み込み(ZXing)も試していたのですが、やはり精度や距離での課題が多かったです。今回は紹介を控えます。

今後のOCR導入の参考になれば幸いです。IXEの古賀がお届けしました。

弊社の技術記事は、良識のある範囲で断りなくリンクや引用を行っていただいて構いません。

関連記事

AprilTag
NxWitness 新プラグイン紹介 AprilTag検出とIoT連携で現場をスマート化
AprilTag
AprilTag 技術者向け情報
AprilTag
モバイルデバイスでのAprilTag読込検証