tesseract の論文?を読みました。

論文というか、取り扱い説明書???

http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/33418.pdf

↑ググったらすぐに出てくるこれです。

verview of the Tesseract OCR Engine直訳して、テセラクトの概要......

どういう仕組みでtesseractが文字を読み取っているのか気になった次第です。

一応頑張って読みましたが正しいかどうかは分からないです。。。。。

 

 

認識の基本構造としては2段階認証で進行していて(ツーパスプロセス)

各単語を読んで、満足する結果が得られなかったら吐き出してと進んでいき、ページの下に行くに連れて認識が正確になっていくチャンスがあるみたいな感じみたいです。(chance to accurately みたいに書かれていた。)

2段階目に認識に満足行く結果が得られなかった文字を再び認識するそうです。。

 

基準線の見分け方で、句読点とかの小さい物を取り、それを最小平方メディアン法で結ぶことで基準線になるそうです。

少し曲がった基準線は最小二乗法で当てはめていく。

 

文字は固定の幅で分けることができたらそれで終わり。

 

ただし幅固定、均整のとれていないテキストには問題ありとのことで、

中心線とか基準線の間で垂直範囲の隙間を測ったりすることで、問題を解決出来ると書いてあるだけでした。

そこの細かいとこが知りたかったのに(;ω;)

ここの最終的な決定は単語認識の後に行うそうです。

 

単語認識でくっついた文字の切り取り方ですが、文字が多角形に近いものの凹面の頂点から見つけます。

文字の凹面の頂点のペアが文字の切れ目とみなしているみたいです。

最大3つの組のペアを見つけ出し、切ってみて、結果が悪いとまた繰り返し他のペアを試していく。

 

壊れた文字の認識は良い結果の組み合わせになるまでA*探索によって探していくそうです。

 

切った後つなげるのは効率悪いかもしれませんが、重要な切り取りを外スほうが最悪の事態だということだそうです。

 

文字分類はプロトタイプ(原型?)と素性がマッチしているによって壊れた文字の認識に対処できるそうです。

問題としていちいち素性とプロトタイプの間の距離を計算するコストが高い

 

分類器は2段階認証で進行しており、

1段階目で剪定して文字の種類のリストを作り、各素性からマッチするかもしれない種類をとって候補とします。

2段階目でプロトタイプから類似点を計算して記録する

 

分類の適合の仕方で、静的分類器がどんなフォントでも扱うことが必要があり、
フォントのアスペクト比を除去したり、フォントの幅を整えたりして正規化(ノーマライズ)を行う

満足な結果が得られなかったら、吐き出して何回も処理をするため動作が遅いということでしょうか?

これだけのことをしている割には、早いのかもしれません
すごくざっくりとしか書かれていなくて、オープンソースなのでソースを読めということでしょうか