Skip to main content

OCR の昔と今

本稿では、光学式文字認識(OCR)を取り上げ、学習済みのテキスト検出(ローカライゼーション)と認識モデルを活用して、画像からテキストを見つけて抽出する方法を解説します。
Created on August 26|Last edited on August 26
今日は、取り上げます 光学式文字認識(OCR)—画像内のテキストをコンピュータビジョンモデルで検出して特定するプロセス—と、代表的なディープラーニングベースの OCR ライブラリおよびそのモデルアーキテクチャについての深い理解を得ます。
また、「歴史的」な OCR ツールとして広く知られる Tesseract を取り上げ、近年の OCR モデルと比較してみます。では、まずは簡単な歴史から始めましょう。
本記事の内容概要は次のとおりです。

目次




OCR の簡単な歴史

1980年代当時でさえ、人工知能への研究資金と関心が低迷していた時期(いわゆる「AI の冬」)においても AIの冬)、当時は それでもOCR の実用化に関しても前進が見られました。バーコードは郵便物の自動仕分けに使われ、ファクシミリ(FAX)機は遠距離へ情報を迅速に送信するために用いられていました。
現在私たちが知るような OCR 技術は、AI の冬の時代には存在しませんでした。しかし 1980 年代後半、ヒューレット・パッカードがブレークスルーを達成します。同社の OCR エンジンは、きわめて限定的な用途――OCR による用途に特化して設計されました。印刷されたHP の独自フラットベッドスキャナで読み取ったテキストに対する処理で、有望な結果が見え始めました。実際、1990年代半ばにはすでに UNLV 年次 OCR 精度評価テスト このツール――Tesseract として知られる――は、開発者たちの期待を大きく上回る性能を示し始めました。
本記事の内容概要は次のとおりです。

現在の OCR ツールと過去の OCR ツール

現在の OCR ツールは、ディープラーニングに基づくアーキテクチャに依拠しています(詳細は後ほど解説します)。一方で Tesseract は二値化(黒白)のテキストを対象に連結成分を探索し、まず各単語を特定し、そのうち正しく識別できた単語を適応型分類器に渡すという二段階の処理で動作していました。
Tesseract が…読む ページ内の後半に進むにつれて、単語の認識精度が向上することがありました。ページ上で適応型分類器が「遅れて」学習した知見を反映するため、Tesseract はページを読み直し、初回で十分に認識できなかった単語に対して第2パスを実行しました。最終段階では、「曖昧なスペース」の処理や小型の大文字テキストへの対応などを行いました。
他の初期の OCR ツールも同様の処理手順を採用していました。
  • テキストの画像は前処理を施しました:たとえば傾き補正、コントラスト調整(大津の手法など)、スノーノイズ除去など
  • 物体の位置特定今回のケースでは、テキストのローカライゼーションです。基本的には、テキストが存在すると考えられる関心領域を囲むバウンディングボックスを描くことを指します。
  • 文字セグメンテーショングリフセグメンテーションとも呼ばれ、隣接する文字から個々の文字を切り分けて同定する処理です。
  • 文字認識(グリフ認識):未知の文字と、英語における既知のすべての文字・グリフの集合が与えられたとき、この未知の文字に最も近い対応はどの文字か?
  • 後処理ページ画像から抽出したテキストは、辞書や単語リストなどのツールを用いて後処理することができます。
現代の OCR ツールは深層ニューラルネットワークに依拠しており、まずテキスト検出(「この画像にテキストは存在するか。存在するならどこにあるか」)を行い、その後にテキストを…認識すでにモデルが特定した領域内に、どの文字が現れているかを同定する処理です。検出されたテキスト
テキスト検出は、…とも捉えられます。 物体の位置特定。もし詳しければ YOLO(You Only Look Once)すでに物体のローカライゼーションの流れをご存じでしょう。簡単に言えば、物体のローカライゼーションとは、画像内で物体が存在する領域を厳密に囲むバウンディングボックスを描くことだと捉えられます。テキストは 認識 深層学習モデルによって認識がはるかに堅牢になったため、辞書照合のようなコストのかかる処理を伴う後処理工程を省略できる場合が多くなっています。過去10年でニューラルネットワークの性能が急速に向上し、新しいモデルアーキテクチャが登場した結果、従来の多段階型のOCR手法は、もはや必要とされないか、これら新しいOCR技術に匹敵する性能を示せなくなっています。
物体のローカライゼーション用バウンディングボックス付きの猫


既製のOCRツールの比較

既製の OCR ツールを比較するために、よく使われるライブラリを3つ用意し このノートブック ファインチューニング keras-ocr Weights & Biases とともに次に、取り上げます PaddleOCR モデルのファインチューニングPaddlePaddle エコシステムにおけるタスク特化型モデルです。3つ目の OCR ファインチューニング課題については、順を追って説明します OCR のファインチューニング認識モデル PaddleOCR ライブラリを使用して(PaddlePaddle エコシステムのモジュール型コンポーネントです)。

フレームワークとモデルについて

それではノートブックで各ツールを試す前に、各ライブラリの概要を手短に確認しておきましょう。
keras-ocr は、広く使われているディープラーニングフレームワークの上に構築された OCR ライブラリです。 Kerasこれは、CRAFT(Character-Region Awareness for Text detection)アルゴリズムを用い、 VGG モデル をバックボーンとして。
CRAFT画像内のテキスト領域を強調するサリエンシーマップを生成しました
PaddleOCR は、Baidu Research が開発したツールで、多言語に対応しており、EasyOCR と異なり中国語の文字も OCR できます。PaddlePaddle — ラレル散在したいーっ学習エコシステムであり、PaddlePaddle フレームワークに加えて、一般的な深層学習タスク向けの本番運用可能なエンドツーエンドモデルが数百種類そろっており、これらは…で利用できます PaddleHub
他の OCR ライブラリの中には非ラテン系文字で性能が伸びないものもありますが、PaddleOCR は幅広い言語で高い性能を発揮します 英語、中国語、フランス語、ドイツ語、アラビア語、その他多数の言語PaddleOCR は、初期設定のままでも一部のクラウド提供のコンピュータビジョン API に匹敵する性能を発揮します。クラウドのコンピュータビジョン API と同等の性能を求めつつ、クラウド利用コストを避けたいエンジニアにとって、PaddleOCR は優れた代替手段です。

EasyOCR は CNN+BiLSTM+CTC ですConnectionist Temporal Classification 損失) 既定ではディープニューラルネットワークを用いていますが、ファインチューニング時にはいくつかの代替アーキテクチャを試すこともできます EasyOCR モデル: 学習中にアーキテクチャの選定を検討する際には、Attention 機構や VGG などを利用できます。ツールが提供するデコーダの選択肢は、greedy、beam search、word‑beam search です。
EasyOCR テキストを含むシーンのような「雑多で乱れた」データも扱うことができ、Tesseract がつまずきやすいケースにも対応します。 EasyOCR 80以上の言語をサポートし、非ラテン文字系も含みます(たとえば、) アラビア語、キリル文字、中国語、韓国語、日本語、テルグ語、カンナダ語など。keras-ocr で使用されている CRAFT モデルは、テキスト領域の顕著性マップを生成して検出を行います keras-ocr ライブラリが、再び登場し テキスト検出に利用される EasyOCR ライブラリ(本チュートリアルの一部ではありません)

Tesseract

Tesseract は C/C++ ベースであり、Python から利用できるラッパーはあるものの機能面では限定的です。そのため、本記事では Tesseract のファインチューニングは対象外とします。多くの読者が C/C++ のバックグラウンドを持たないことに加え、Tesseract の CLI 版は学習過程を可視化しながら扱える形ではないためです。 PyTesseract Python 版の「風味」と捉えることができます Tesseract (C/C++ で実装されていますが) PyTesseract 提供していると見なすべきではありません Python バインディングは、インターフェースを提供するだけだからです Tesseract バイナリ。
より高機能な Python 向けの Tesseract 実装については、こちらを参照してください tesserocrPyTesseract は、一時ファイル上で OCR の処理を行う必要がありますそのため、I/O が問題になる場合は、別の OCR ライブラリを選ぶか、C/C++ 版を利用するとよいでしょう Tesseract
2018年に Tesseract …の同梱が始まりました LSTMベースの OCR「エンジン」。これは Tesseract バージョン 4.0。これにより性能は向上しましたが、視覚的に遮蔽されたテキストやぼやけたテキスト、曲がったテキストなどに対しては依然として課題が残ります。 Tesseract 依然としてやや苦戦しました。今後の稿では、…の性能を比較します。 Tesseract 5.0 では「乱れた」テキストデータに対する性能が向上しました。私たちの経験では、 Tesseractの性能は劇的に向上し得ます なし このページで取り上げた他のツールと異なり、モデルのファインチューニングが可能です。これにより、性能を向上させることができます。 Tesseractの性能を次の方法で向上させます。
  • 適切に 入力データの前処理傾き補正、ノイズ除去、二値化/コントラスト調整
  • 実行中 tesseract 適切な 言語パックがインストールされています 英語以外のテキストを OCR する場合
  • 持つ tesseract PNG やその他の圧縮画像ではなく、TIFF ファイルで処理してください。やむを得ず PNG を使う場合は、アルファ(透明)チャンネルを無効にしないと、性能がさらに低下します。
  • 適切なページ分割方式の選択psm パラメーター)
  • 後処理手法 辞書による後処理を含む

ノートブック

Weights & Biases を活用して、複数の OCR ライブラリのテキスト検出またはテキスト認識モデルをファインチューニングする。
  • keras-ocr の Colab ノートブック CRAFT モデルを取り出し、ICDAR 2013 のデータでファインチューニングします。これは、下で使用する ICDAR 2015 のデータと比べて明らかに「やさしい」データ(ブラーが少なく、遮蔽もない、直線上に並んだテキスト画像)です。
  • PaddleOCR のファインチューニング用 Colab ノートブック - PaddleOCR フレームワークを用い、バックボーンに MobileNetV3 を採用して、ICDAR 2015 データセット(テキストを含む実写シーン)でモデルをファインチューニングする。小型で高速なモデルが必要な場合、より大きくて遅い ResNet 系のバックボーンよりも MobileNet が選好されることが多い。
  • EasyOCR のファインチューニング用 Colab ノートブック- どれか一つをどのようにファインチューニングするかを探る 認識 EasyOCR が利用できる光学式文字認識用のモデルアーキテクチャを概観し、併せて勾配ロギングの例も紹介します。モデルのファインチューニングが完了したら、EasyOCR のツール群に自前のモデルを持ち込む(BYOM: Bring Your Own Model)ことで、独自モデルを用いた OCR 推論を実行できます。 https://github.com/JaidedAI/EasyOCR#trainuse-your-own-model 翻訳用テキストが見つかりません。次のセクションの原文を提示してください。

まとめ

上記の3つのノートブックで各フレームワークを試し、さらにおそらく少し使い込んでみたら Tesseract も試してみた結果、次のような結論に至ったかもしれません。
  • 遮蔽されていたり、動体ぶれしていたり、曲がって歪んでいたりと「読み取りが難しい」テキストでは、3つのライブラリのいずれか一方が他よりも優れた結果を出すことに気づくはずです。 Tesseract 翻訳用テキストが見つかりません。次のセクションの原文を提示してください。
  • スキャン画像や印刷物を撮影した写真のような「きれいな」テキストであれば、 Tesseract はいまだに有力な選択肢であり、ページ分割方式を調整して指定すれば、さらに高い性能を引き出せます。 Tesseract どの言語で書かれているのか、など。より新しいバージョンの Tesseractたとえばバージョン 5.0 では、パフォーマンス向上のために double の代わりに「高速 float」を用い、さらに s 上で動作します。Tesseract 4.0 で最初に登場した LSTM モデルの第2版で、オリジナルより高性能です
機械学習システムが扱うテキスト画像のばらつき次第では、ファインチューニングを行わなくても、市販のOCRニューラルネットモデルで十分高い性能を発揮できる場合があります。複数段階からなるアーキテクチャの中には、次のセクションで取り上げるような構成もあり、 PaddleOCR ツールや、VGG をバックボーンに持つ CRAFT モデルは、10 年前にはコンピュータビジョンや OCR で当たり前に使われていた畳み込みニューラルネットワークをはるかに凌駕しています。
複数の OCR ライブラリを試し、さらに各ライブラリ内で複数のモデルアーキテクチャも検証して、自分のテキスト認識ニーズに最適なものを見極めましょう。評価時には画像の拡張も積極的に行い、さまざまな「テキスト条件」において選んだ OCR が十分に性能を発揮するか確認することをおすすめします。たとえば、学習用画像を次のようなツールで拡張し、 albumentations
最後に、上で紹介した OCR ツールはいずれも GitHub 上で活発な開発コミュニティを持っています。各プロジェクトのコミュニティで質問してみてください。数十年にわたり OCR に取り組んできたエンジニアや研究者からも、OCR やディープラーニングを学び始めた人たちからも、多くを学べます。 また、ディープラーニングを用いた OCR パイプラインの構築・最適化で身につくスキルは、他のコンピュータビジョン課題にも容易に応用できます。ぜひ、私たちのほかのコンピュータビジョンモデルに関するレポートもご覧ください。

追補

興味深い分析については Tesseract クラウドプロバイダーの OCR ツール(Amazon や Google)との比較については、Springer Nature のウェブサイトに掲載された次の論文をご覧ください。 Tesseract、Amazon Textract、Google Document AI を用いた OCR のベンチマーク実験
クラウドプロバイダーの OCR モデルは必ずしも微調整できるとは限りませんが、膨大で多様なデータで学習されているため、微調整可能なディープラーニング系の OCR ライブラリより高い性能を発揮する場合があります。微調整のためにニューラルネットの OCR モデルに投入するラベル付き学習データを自前で用意するコストが高すぎる場合にも、クラウドの OCR ツールは有用です。

参考文献・さらに読むには: