概要

TextRecognitionDataGeneratorは、OCR(光学文字認識)やテキスト認識モデルの訓練に必要な合成データを自動生成するPythonツールです。生成した大量データの効率的な処理にはDaft:Pythonで大規模データを高速処理するフレームワークが役立ちます。2017年にBelvalによって開発され、機械学習エンジニアの「大量のラベル付きテキスト画像をどう集めるか」という課題を解決してきました。

例えば領収書認識モデルの構築では、実画像の手作業ラベリングに膨大な時間がかかりますが、このツールで合成画像を大量生成すれば、初期モデルの訓練を短期間で完了できます。その後の実画像での微調整でさらに精度を引き上げることが可能です。

主な機能

  • カスタマイズ可能なテキスト生成:任意のテキスト、フォント、サイズ、色を指定して画像を生成できる
  • 背景のバリエーション:単色背景、グラデーション、実際の画像背景を合成可能
  • ノイズとひずみの追加:ガウシアンノイズ、モーションブラー、遠近変形など複数のデータオーグメンテーション手法を自動適用
  • 大量バッチ生成:数千枚から数万枚の画像を効率的に一括生成
  • 自動ラベリング:生成される画像には自動的に正解テキストラベルが付与される
  • フォントライブラリ対応:システムにインストールされた複数フォントをランダムに選択・組み合わせ
  • 形式の柔軟性:PNG、JPEGなど複数の出力形式に対応し、CSVメタデータも同時生成

技術スタック

  • 言語:Python 3.6以上
  • 画像処理:Pillow(PIL)、OpenCV
  • 機械学習連携:TensorFlow、PyTorch用のデータ形式に対応
  • 依存ツール:NumPy、FreeType(フォントレンダリング)
  • 配布形式:pip経由でのインストール対応

導入方法

インストール

# pipを使った標準インストール
pip install trdg

# または、リポジトリをクローンして直接実行
git clone https://github.com/Belval/TextRecognitionDataGenerator
cd TextRecognitionDataGenerator
pip install -r requirements.txt

基本的な使用方法

# 1,000枚のランダムテキスト画像を生成
python run.py -c 1000 -w 256 -f 32

# 特定のテキストリストから画像生成
python run.py -i input.txt -c 1000 -w 256

# 複数フォント、背景、ノイズを含めた複雑な生成
python run.py -c 5000 -w 256 -f 32 --blur --distortion --background --count-by-picking-random-words

オプション説明

  • -c / --count:生成する画像枚数
  • -w / --width:出力画像の幅(ピクセル)
  • -f / --font-size:テキストのフォントサイズ
  • -i / --input-file:テキストリストのパス
  • --blur:ブラーエフェクトを有効化
  • --distortion:歪み変形を有効化
  • --background:背景画像を使用

競合比較

項目 TextRecognitionDataGenerator Synthetic Data Vault(SDV) imgaug
主用途 テキスト認識用合成データ テーブル・時系列データ合成 画像オーグメンテーション
セットアップ難易度 低(数分で開始可能) 中程度(データ定義が必要) 中程度(パイプライン設定)
ラベル付け自動化 ◎完全自動 △手動対応必要 ◎自動的に保持
フォントカスタマイズ ◎豊富 △限定的 △なし
メンテナンス状況 活発 活発 活発
ライセンス MIT MIT BSD

差別化ポイント:TextRecognitionDataGeneratorの最大の強みは、OCR・テキスト認識タスクに特化した設計にあります。MLの実験管理と組み合わせる場合はClearML:機械学習実験の完全管理プラットフォームが便利です。フォント、テキストサイズ、背景、ノイズを統合的にコントロールでき、生成された画像に自動的に正解ラベルが付与されるため、TensorFlowやPyTorchのデータローダーにそのまま投入できます。一方、imgaugは既存画像のオーグメンテーション(変形・回転など)に特化し、SDVは構造化データ合成に特化しているため、テキスト認識用の合成画像生成という特定の用途では、このツールが最適です。

こんな人におすすめ

  • OCRモデル開発者:大量のラベル付きテキスト画像が必要だが、手動収集が困難な場合に、数分のセットアップで訓練データを確保できます
  • スタートアップのAI開発チーム:予算と時間が限定される中で、低コストで高品質な訓練データセットを生成する必要があります
  • 多言語対応が必要なエンジニア:複数言語のテキスト認識モデルを構築する際、言語ごとにフォント設定を切り替えるだけで対応できます
  • 産業用コンピュータビジョン実装者:製造業の品質検査や物流の自動化で、環境に応じたノイズや背景を含めた現実的な合成データが生成できます
  • 機械学習の研究・教育関係者:学生のプロジェクトやハッカソンで、データ準備の時間を削減し、モデル設計と改善に集中できるようにします

参考リンク