5

OCRにtesseractを使用していますが、セグメンテーションエラーが発生し、「明らかに」一緒に属している文字が区切られた文字列に分割されることがあることに気付きました。

1 つのテキスト行にある文字とその境界ボックスのリストと、これらの文字のどれが 1 つの単語に属しているかを示唆する最初の OCR 結果に基づいて、どのアルゴリズムを適用してセグメンテーション エラーを修正したり、結果を検証したりできますか?

したがって、これは利用可能なデータです:

List<Word> words;
for(Word word : words){
    for(Char c : word.getChars()){
        char ch = c.getValue();
        Rectangle rect = c.getRect();
    }
}
4

1 に答える 1

5

文字と単語を考慮に入れるOCR 事後修正の場合、確かにバウンディング ボックスは考慮しません。1 つの一般的な方法は次のとおりです。

  • 有効な単語の辞書をできるだけ包括的に使用する
  • その辞書に対してOCRアルゴリズムの結果の単語をチェックする
  • 辞書に完全に一致する単語が見つからない場合は、類似した単語を探します

これを可能にするには、近似文字列一致またはあいまい文字列一致とも呼ばれる、類似した文字列の検索を可能にする辞書の実装を準備する必要があります。

私が認識している2つの主なアプローチは次のとおりです。

  • Schulz et al (DOI: 10.1007/s10032-002-0082-8)によって記述されたレーベンシュタイン アトムタ
  • Baeza-Yates と Navarroによって記述された BK ツリーなどのメトリック ツリー(DOI: 10.1109/SPIRE.1998.712978)

これらのアプローチは、一般的な近似文字列マッチング アプローチ (検索試行、q-gram マッチング、n-gram マッチングなど) と同様に、本質的に何らかの種類の編集距離測定を使用し、多かれ少なかれレーベンシュタイン距離に似ています。対処している特定の OCR エラーを分析した後、使用している編集距離アルゴリズムとその他のリソースを特定のニーズに合わせて調整することができます。これには、次のようなことが含まれる場合があります。

  • OCR プログラムが頻繁に混同する文字間、または扱っているフォントまたはスタイルでレンダリングしたときに特に似ている文字間の置換距離が短いと仮定します。
  • (単一の単語に加えて) 頻繁に出現する単語のペアを辞書に入れることで、考えられるセグメンテーション エラーを考慮に入れる
  • ディクショナリにできるだけ多くの名前付きエンティティとその他のドメイン固有 (またはコーパス固有) の要素が含まれていることを確認してください

さらに、文法統計的言語モデル(隠れマルコフ モデルや条件付きランダム フィールド モデルなど) を使用して、POS タガーが使用するモデルと同様に、コンテキスト内で単語を修正することもできます。

于 2012-04-18T15:41:35.630 に答える