[OSS紹介#7] PARSeq:文書解析ツール4回目!シーンテキスト認識の新たな可能性を切り拓く

この記事について

この記事では、オープンソースソフトウェア(OSS)の中でも特に注目される「PARSeq」を紹介します。このブログシリーズは、主要なOSSを取り上げ、その機能や特長を掘り下げていくものです。これまでには、yomitokupaddleOCRlayout-parserといった文章認識に関するツールを取り上げてきましたが、今回は大学における研究の成果として注目されたPARSeqに焦点を当てます。

PARSeqは、シーンテキスト認識に特化したパーミュテッドオート回帰シーケンスモデルを基にしており、特にノイズや破損がある画像に対しても高い精度で文字を認識することができます。このツールを使用することで、従来の言語モデルに依存せずに効率的な認識が可能となります。これにより、特定の計算資源を必要とせず、様々な文脈の中でのテキスト認識が向上します。

本記事では、PARSeqの基本的な機能や利点、またその活用方法について詳しく見ていきます。シーンテキスト認識の分野では、PARSeqが持つ新たなアプローチがどのように役立つかを探っていくことで、開発者や研究者にとっての貴重な情報源となることを目指します。

リンク:https://github.com/baudm/parseq


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. PARSeqでできること

PARSeqは、シーンテキスト認識(STR)を効率的に実行するためのモデルであり、パーミューテッドオートレグレッシブシーケンスモデルを使用しています。この手法は、従来の言語モデルに依存せず、コンテキストに基づく推論や反復的な予測の精度を向上させることが可能です。具体的には、以下の機能を提供します。

  • コンテキストを利用した推論: PARSeqは文脈情報を活用し、ノイズの多い画像からでも高精度のテキスト認識を実現します。
  • 効率的なデコード方法: 従来の手法と異なり、外部の言語モデルを必要とせず、単一のトランスフォーマーで多様なモデルを実現可能です。
  • 多様なデータセットに対応: MJSynth、SynthText、IIIT5kなど、さまざまなデータセットでトレーニングされたモデルが提供されています。

2. セットアップ手順

2.1 環境要件

PARSeqを使用するには、以下の環境が必要です。

  • Python 3.9以上
  • PyTorch 2.0以上

2.2 インストール手順

以下の手順に従ってPARSeqをインストールします。

  1. PyTorchの特定のプラットフォームビルドを選択します。例えば、CPUプラットフォームの場合は以下のコマンドを実行します。
    platform=cpu
    make torch-${platform}

  2. 必要な依存関係をインストールします。
    pip install -r requirements/core.${platform}.txt -e .[train,test]

  3. データセットをダウンロードします。必要なデータセットはこちらから入手可能です。

2.3 プリトレーニングモデルの使用

以下のようにTorch Hubからモデルを読み込み、画像を処理することができます。

import torch
from PIL import Image
from strhub.data.module import SceneTextDataModule

parseq = torch.hub.load('baudm/parseq', 'parseq', pretrained=True).eval()
img_transform = SceneTextDataModule.get_transform(parseq.hparams.img_size)
img = Image.open('/path/to/image.png').convert('RGB')
img = img_transform(img).unsqueeze(0)
logits = parseq(img)

3. 簡単な使い方

PARSeqを使用して画像からテキストを読み取る方法は以下の通りです。

  1. 画像の前処理: 上記のコードで示したように、画像をロードし、必要な変換を適用します。
  2. モデルによる推論: モデルを用いてログitsを取得し、次にそれをデコードしてラベルを得ます。
    pred = logits.softmax(-1)
    label, confidence = parseq.tokenizer.decode(pred)
    print('Decoded label = {}'.format(label[0]))

  3. モデルのトレーニング: 新しいデータセットでトレーニングする場合、次のようにコマンドを実行します。
    ./train.py dataset=real

4. 結論

PARSeqは、シーンテキスト認識において高いパフォーマンスを発揮する革新的なツールです。従来の手法の制約を克服し、効率的な推論が可能なため、様々なアプリケーションでの利用が期待されます。インストールや使用方法も比較的簡単であり、研究者や開発者にとって有用なリソースとなるでしょう。興味のある方は、公式リポジトリを訪れてさらに詳細を確認することをお勧めします。