メインコンテンツまでスキップ

イントロダクション

現在の光学文字認識(OCR)分野の研究では、モデルの精度はデータセットの品質と多様性に依存しています。

ここでは、現在の研究が直面しているいくつかの問題を挙げてみましょう:

  1. データ量の不足:既存のデータセットの規模が限られており、すべての可能な状況やサンプルをカバーできていません。
  2. クラスの不均衡:一部のクラスのサンプルが少なく、長尾分布が問題になっています。
  3. 多様性の欠如:既存のデータセットに含まれるサンプルは単調で、現実世界の多様な状況を反映していません。
  4. 合成データと実データのギャップ:合成データセットと実際のアプリケーションシーンにおけるデータとの間に差異があります。

さらに、数十個から数百個のラテン文字と比較すると、漢字の数はまさに「災難」です。(ちょっと、冗談はよしてよ!

中国語 OCR の研究では、これらの問題に加えて、さらに独特な困難な点が浮かび上がります:

文字の多様性と数

中国語には数千の常用漢字と、近十万の難読漢字があります。さらに、常用字と難読字の分布は非常に不均衡です。

ヒント

「近十万?」これは冗談でしょ?

この数字は、Wikipedia Unicode 拡張漢字 に基づくデータ統計から得たものです。現在、約九万の漢字が登録されており、今後も増加しています。

複雑な字形と意味依存

漢字は複数の筆画で構成されており、筆画の形状や並び方が多様で、多くの類似字は文脈によって区別しなければなりません。

ヒント

例えば:(口,囗)、(日,曰)、(木,朩) など。

書き方のスタイル

書き方による困難は単一の文字に限らず、各文字は大量の異なるフォントに派生する可能性があります。しかし、漢字という膨大な数の文字の中で、異なるフォントや書き方(楷書、行書、草書など)は、さらに認識の難易度を上げる要因となります。

calligraphy

縦書きテキストと混排問題

中国語では縦書きのテキストがよく使われ、特に伝統文化関連のアプリケーションシーンではこの形式が一般的です。また、英語と中国語が混在する場合も多く、これらは文字の位置決めと認識に追加の挑戦をもたらします。

vertical

アノテーションリソースの不足

高品質なデータセットには正確なアノテーションが必要ですが、これは時間もかかり、高価です。

ヒント

素材が見つからない問題はさておき、見つかったとしても、アノテーターはその難読漢字を認識できないことが多いです。

目標

このプロジェクトの目標は、上記の問題を解決することです。

まあ、問題が大きすぎるので、少なくともその一部を解決することから始めます。

合成データを使用して、大量かつ多様な中国語文字画像を生成し、データ量の不足、クラスの不均衡、多様性の欠如などの問題に対処します。

このため、いくつかの既存の文字合成ツールを参考にしました。詳細な資料については、こちらを参照してください:

これらの設計方法は私たちに多くのインスピレーションを与え、ゼロから新しい文字画像生成器を作る決断をしました。

私たちの生成モジュールは、事前に定義された文字コード表に基づくものではなく、フォントに基づいています。

つまり、任意のフォントの文字画像を生成でき、さまざまな文字方向、整列方法、文字の長さ、文字色、背景色などの設定をサポートします。

  • フォントさえあれば、どんなフォントでも画像生成に使用できます。

設計理念

設計の際、「関数型設計」か「オブジェクト指向設計」を採用するかを考えました。

最終的に後者を選んだ理由は、どちらを選んでも「使いにくい」と感じるからです。(???)

実際、多くの選べるパラメータが使用者にとって混乱を招くため、オブジェクト指向設計を採用し、これらのパラメータをよりうまく整理することにしました。そのため、ダッシュボード(以下の画像)のようなインターフェースを設計し、車のダッシュボードのように、設定を理解し、調整できることを目指しています。

dashboard

全体的に、このプロジェクトでは以下の機能を実現しました:

  1. ダッシュボード:現在の設定を理解し、調整できる。
  2. 画像生成:多様な文字画像を生成できる。
  3. 出力整列:4 種類の整列方法をサポート。
  4. 出力方向:水平と垂直の 2 つの出力方向をサポート。
  5. 文字圧縮:文字を圧縮する機能をサポート。
  6. 標準化された出力サイズ:出力画像の標準化されたサイズをサポート。
  7. ランダムフォント:ランダムにフォントを選択する機能。
  8. ランダム文字:ランダムに文字を選択する機能。
  9. ランダム文字長さ:ランダムに文字の長さを選択する機能。
  10. ランダム文字色:ランダムに文字色を選択する機能。
  11. ランダム背景色:ランダムに背景色を選択する機能。
  12. ランダム文字方向:ランダムに文字方向を選択する機能。
  13. ランダム整列方法:ランダムに整列方法を選択する機能。
  14. 最小文字長さ:最小文字長さを指定する機能。
  15. 最大文字長さ:最大文字長さを指定する機能。

最後に

他にご要望があれば、ぜひコメント欄にご記入ください。

タイミングが合えば、ご要望に基づいて新機能を追加します。