5

これはOCRのプロセスの一部です。これは次のとおりです。

文を単語に分割し、次に文字に分割する方法は?

このタスクの候補アルゴリズムは何ですか?

4

4 に答える 4

1

As a first pass:

  • process the text into lines
  • process a line into segments (connected parts)
  • find the largest white band that can be placed between each pair of segments.
  • look at the sequence of widths and select "large" widths as white space.
  • everything between white space is a word.

Now all you need a a good enough definition of "large".

于 2010-04-10T14:31:37.747 に答える
1

まず、NIST (国立標準技術研究所) は、約 15 年前にNIST Form-Based Handwriting Recognition System として知られるプロトコルを公開しました。 OCR の機械学習アルゴリズムへの入力。NIST のこのグループのメンバーも、このシステムに関する多数の論文を発表しました。

彼らの分類器の性能は、アルゴリズムと共に公開されたデータ (「NIST 手書きサンプル フォーム」) によって実証されました。

私がダウンロードして使用した半ダース程度の OCR データ セットのそれぞれは、アルゴリズムへの入力用のデータを準備するために NIST が使用するデータ抽出/準備プロトコルを参照しています。特に、OCR のベンチマーク リファレンス データと見なされているボストン大学の手書き数字データベースを作成するために、これが信頼された方法論であると確信しています。

したがって、NIST プロトコルが真の標準ではない場合、少なくとも OCR アルゴリズムへの入力用に text-as-image を準備する実証済みの方法論です。そこから始めて、そうしない正当な理由がない限り、そのプロトコルを使用してデータを準備することをお勧めします。

要するに、NIST データは、32 ビット x 32 ビットの正規化されたビットマップを事前に印刷されたフォームから直接抽出することによって準備されました。

次に例を示します。

00000000000001100111100000000000 00000000000111111111111111000000 00000000011111111111111111110000 00000000011111111111111111110000 00000000011111111101000001100000 00000000011111110000000000000000 00000000111100000000000000000000 00000001111100000000000000000000 00000001111100011110000000000000 00000001111100011111000000000000 00000001111111111111111000000000 00000001111111111111111000000000 00000001111111111111111110000000 00000001111111111111111100000000 00000001111111100011111110000000 00000001111110000001111110000000 00000001111100000000111110000000 00000001111000000000111110000000 00000000000000000000001111000000 00000000000000000000001111000000 00000000000000000000011110000000 00000000000000000000011110000000 00000000000000000000111110000000 00000000000000000001111100000000 00000000001110000001111100000000 00000000001110000011111100000000 00000000111111111111000000000000000000000000000000000000000111111111111100000000000000000000000000000001111111110000000000000000000000111111110000000000000000000000000000000000000000000000000000000000000000001111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.

BU データ準備手法は NIST 手法を包含していると思いますが、忠実度を高めることを念頭に置いてではなく、ファイル サイズを縮小するために、最後にいくつかの手順を追加しました。特に、BU グループ:

  • 32 x 32 ビットマップから始めました。それから
  • 各 32 x 32 ビットマップを 4x4 の重複しないブロックに分割。
  • 次に、各ブロック内の活性化されたピクセルの数を数えました (「1」は活性化され、「0」は活性化されていません)。
  • 結果は、各要素が整数 (0 ~ 16) である 8 x 8 の入力行列です。
于 2010-04-10T13:24:12.467 に答える
0

101000000000000000010000001 のようなバイナリシーケンスを見つけるため シーケンス 0000,0001,001,01,1 を検出

于 2010-08-31T09:29:13.250 に答える
0

matlab で画像処理ツールボックスを使用していると仮定しています。

画像内のテキストを区別する。あなたはフォローしたいかもしれません:

  1. グレースケール (処理速度が大幅に向上します)。
  2. コントラスト強化。
  3. 画像を軽く侵食してノイズ (スクラッチ/ブリップ) を除去します
  4. 膨張(重い)。
  5. エッジ検出 (または ROI 計算)。

試行錯誤により、5 番目のステップの後に得られる画像に、各文字/単語/行/段落を囲む凸領域が含まれるような適切な係数が得られます。

ノート:

  1. 基本的に、拡張すればするほど、より大きな要素が得られます。つまり、最小の拡張は文字の識別に役立ちますが、行や段落の識別には比較的高い拡張が必要になります。
  2. オンラインの ImgProc MATLAB ドキュメント

オンライン ドキュメントの「ドキュメントの例」セクションを確認するか、Matlab ヘルプ メニューの画像処理ツールボックス ドキュメントを参照してください。

そこに示されている例は、呼び出す適切な関数とそのさまざまな形式を示しています。

サンプルコード(私のものではありません)

于 2010-04-17T16:34:22.993 に答える