tesseract のオプション PSM をいじってみた
★前提環境★
・Windows 7 (32bit)
・tesseract 3.05.02
ページセグメンテーションモード -psm
tesseract --help-psm
Page segmentation modes:
0 Orientation and script detection (OSD) only.
言語データ:osd.traineddata 必須
OSD は Orientation and script detection の略
言語の種類やテキストの傾斜角度等を xxxxx.osd に出力
1 Automatic page segmentation with OSD.
言語データ:osd.traineddata 必須
回転(90度・180度・270度)したテキストも認識する
2 Automatic page segmentation, but no OSD, or OCR.
テキストの傾斜角度にかかわる情報を画面に標準出力する。
ファイルは何も作成されない。
3 Fully automatic page segmentation, but no OSD. (Default)
デフォルトのオプション。
水平テキスト(横書き文書)と垂直テキスト(縦書き文書)に対応
傾斜角度のあるテキストは非対応
4 Assume a single column of text of variable sizes.
可変サイズのテキストとして扱う。
5 Assume a single uniform block of vertically aligned text.
ユニフォームブロックの垂直テキストと仮定する。
6 Assume a single uniform block of text.
ユニフォームブロックのテキストと仮定する。
デフォルトよりも認識率が良い。
7 Treat the image as a single text line.
単一のテキスト行として扱う。
画像内に複数行が存在する場合は、画像内の文字すべてが誤認識する。
8 Treat the image as a single word.
単語として扱う。行に複数の単語がある場合は、
単語間の空白は削られて出力される。「太陽 お月様」 → 「太陽お月様」
画像内に複数行が存在する場合は、画像内の文字すべてが誤認識する。
9 Treat the image as a single word in a circle.
謎
10 Treat the image as a single character.
1文字として扱う。2文字以上ある場合は、すべてが誤認識する。
11 Sparse text. Find as much text as possible in no particular order.
色の薄いテキスト。できるだけ多くのテキストを探す。
デフォルトで探せなかったテキストも認識する。
12 Sparse text with OSD.
言語データ:osd.traineddata 必須
上記11番、及び、
回転(90度・180度・270度)したテキストも認識する
13 Raw line. Treat the image as a single text line,
bypassing hacks that are Tesseract-specific.
Page segmentation modes:
0 Orientation and script detection (OSD) only.
言語データ:osd.traineddata 必須
OSD は Orientation and script detection の略
言語の種類やテキストの傾斜角度等を xxxxx.osd に出力
1 Automatic page segmentation with OSD.
言語データ:osd.traineddata 必須
回転(90度・180度・270度)したテキストも認識する
2 Automatic page segmentation, but no OSD, or OCR.
テキストの傾斜角度にかかわる情報を画面に標準出力する。
ファイルは何も作成されない。
3 Fully automatic page segmentation, but no OSD. (Default)
デフォルトのオプション。
水平テキスト(横書き文書)と垂直テキスト(縦書き文書)に対応
傾斜角度のあるテキストは非対応
4 Assume a single column of text of variable sizes.
可変サイズのテキストとして扱う。
5 Assume a single uniform block of vertically aligned text.
ユニフォームブロックの垂直テキストと仮定する。
6 Assume a single uniform block of text.
ユニフォームブロックのテキストと仮定する。
デフォルトよりも認識率が良い。
7 Treat the image as a single text line.
単一のテキスト行として扱う。
画像内に複数行が存在する場合は、画像内の文字すべてが誤認識する。
8 Treat the image as a single word.
単語として扱う。行に複数の単語がある場合は、
単語間の空白は削られて出力される。「太陽 お月様」 → 「太陽お月様」
画像内に複数行が存在する場合は、画像内の文字すべてが誤認識する。
9 Treat the image as a single word in a circle.
謎
10 Treat the image as a single character.
1文字として扱う。2文字以上ある場合は、すべてが誤認識する。
11 Sparse text. Find as much text as possible in no particular order.
色の薄いテキスト。できるだけ多くのテキストを探す。
デフォルトで探せなかったテキストも認識する。
12 Sparse text with OSD.
言語データ:osd.traineddata 必須
上記11番、及び、
回転(90度・180度・270度)したテキストも認識する
13 Raw line. Treat the image as a single text line,
bypassing hacks that are Tesseract-specific.
テストの結果
★テスト条件★ ・Windows 7 (32bit)
・tesseract 3.05.02
・画像形式 :PNG
・フォント :MS明朝
・サイズ :26pt
・文字色 :黒
・背景色 :白
・文字数 :いろいろ(1~50文字程度)
・言語データ:付属の jpn.traineddata
・コマンド : tesseract xxx.png result -l jpn -psm n
※n は psmのオプション番号
★感想★
PSM 1 と 12 は水平テキスト・垂直テキスト・水平テキストが時計回りに90度・180度・270回転したテキストに対応します。
テストはしていませんが、垂直テキストの回転も、同様に良好な結果が得られるものと思われます。
PSM 9 は用途不明です。読解力なくごめんなさい。
1文字のみ認識させたいのであれば、デフォルトのPSM 3 では駄目です。PSM 10 を指定しましょう。
中途半端に傾斜(時計回りに20度)しているテキストは、どのオプションも総じて苦手なようです。
スキャンした紙面から文字を認識させたいのであれば、水平・垂直に極力気を配りましょう。
表には触れていませんが、色の薄い(グレー色 #c3d7ec )文字は PSM 6 または 11 及び 12 で認識率が他より良好です。
ディスカッション
コメント一覧
まだ、コメントがありません