概要
TextRecognitionDataGeneratorは、OCR(光学文字認識)やテキスト認識モデルの訓練に必要な合成データを自動生成するPythonツールです。2017年にBelvalによって開発され、機械学習エンジニアの「大量のラベル付きテキスト画像をどう集めるか」という課題を解決してきました。
具体例:AI企業のデータサイエンティスト・田中さんは、日本の領収書認識モデルを構築する際、実画像の手作業ラベリングに2ヶ月要する予定でしたが、このツールで合成領収書を5,000枚生成し、わずか3日で初期モデルの訓練完了。その後の実画像での微調整で精度を90%まで引き上げることができました。
主な機能
- カスタマイズ可能なテキスト生成:任意のテキスト、フォント、サイズ、色を指定して画像を生成できる
- 背景のバリエーション:単色背景、グラデーション、実際の画像背景を合成可能
- ノイズとひずみの追加:ガウシアンノイズ、モーションブラー、遠近変形など複数のデータオーグメンテーション手法を自動適用
- 大量バッチ生成:数千枚から数万枚の画像を効率的に一括生成
- 自動ラベリング:生成される画像には自動的に正解テキストラベルが付与される
- フォントライブラリ対応:システムにインストールされた複数フォントをランダムに選択・組み合わせ
- 形式の柔軟性: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・テキスト認識タスクに特化した設計にあります。フォント、テキストサイズ、背景、ノイズを統合的にコントロールでき、生成された画像に自動的に正解ラベルが付与されるため、TensorFlowやPyTorchのデータローダーにそのまま投入できます。一方、imgaugは既存画像のオーグメンテーション(変形・回転など)に特化し、SDVは構造化データ合成に特化しているため、テキスト認識用の合成画像生成という特定の用途では、このツールが最適です。
活用シーン
1. 多言語OCRモデルの開発
グローバルeコマース企業の機械学習エンジニア・李さんは、日本語、中国語、英語の混在した商品タグの認識モデルを構築していました。各言語ごとに5,000枚の実撮影画像を集めるのに6週間かかる予定でしたが、このツールで言語別フォント設定を切り替えて合計15,000枚の合成データを3日で生成。初期訓練データとして活用し、その後わずか1,000枚の実画像でファインチューニングして、精度96%を達成しました。
2. 手書き郵便番号認識システム
郵便物自動仕分けシステムを開発する物流企業の研究チームは、手書き数字の認識精度に課題を抱えていました。実際の手書き郵便番号画像は著作権と個人情報の問題で収集が困難でしたが、TextRecognitionDataGeneratorで背景テクスチャを調整し、手書き風フォントで50,000枚の合成データを1週間で生成。これにより訓練データの不足を補い、本番環境での認識精度を88%から94%へ改善しました。
3. ナンバープレート認識の地域別適応
自動運転技術を開発するスタートアップの視覚認識チームは、47都道府県すべてのナンバープレート形式に対応したモデルが必要でした。実車で各地域のプレートを撮影して集めるのは物理的に困難でしたが、このツールで各地域のナンバープレート背景画像とテキストフォーマットをカスタマイズし、地域ごとに2,000枚ずつ、計94,000枚の合成プレート画像を10日で生成。多地域対応モデルの構築に成功しました。
こんな人におすすめ
- OCRモデル開発者:大量のラベル付きテキスト画像が必要だが、手動収集が困難な場合に、数分のセットアップで訓練データを確保できます
- スタートアップのAI開発チーム:予算と時間が限定される中で、低コストで高品質な訓練データセットを生成する必要があります
- 多言語対応が必要なエンジニア:複数言語のテキスト認識モデルを構築する際、言語ごとにフォント設定を切り替えるだけで対応できます
- 産業用コンピュータビジョン実装者:製造業の品質検査や物流の自動化で、環境に応じたノイズや背景を含めた現実的な合成データが生成できます
- 機械学習の研究・教育関係者:学生のプロジェクトやハッカソンで、データ準備の時間を削減し、モデル設計と改善に集中できるようにします