覚え書きブログ

Tesseract OCR

TesseractというOCRオープンソースをインストールして動かしてみた。

Tesseractのアルゴリズムについては、
以下のGoogleのRay Smith氏の論文にて述べられている。
http://www.cip.ifi.lmu.de/~langeh/test/2007%20-%20Smith%20-%20An%20Overview%20of%20the%20Tesseract%20OCR%20Engine.pdf

手順はざっくり以下のようになっているようだ。

  1. アウトライン抽出:skew(歪み)検出により補正した画像に対し、直線検出を階層的に繰り返す
  2. アウトラインを用いた、テキスト反転、白地の上の黒字、黒地の上の白字などを判定
  3. Blob抽出:ベースラインを見つけてテキストのラインを抽出し、A*アルゴリズムを用いて、chops(区切り)を検出することにより文字を抽出
  4. 文字単位の認識:2つのパスがある

1)文字を順番に認識:認識の信頼度の高い文字はadaptive classifierに学習データとして渡して、adaptive classifierを学習する(ページの後半でより高い認識率を得ることが目的)
2)再認識:1)で信頼度が低かった文字を、学習したadaptive classifierで再認識

  1. 不確定なスペースの解決:上付きや下付きなどの小さい文字の確認

分類のアルゴリズムは3系(legacy)では、真のフォントに対し多角形近似したプロトタイプ(下の画像のCの細い線)と、
画像の文字から抽出した特徴量(下の画像の太い点線)
との2段階の特徴量マッチング(1段目で候補を選び、2段目で選択)
学習データには、8種類のフォントと4種類の書体(通常、イタリック、ボールド、ボールドイタリック)を用いているが、
マッチングなので、学習はおそらくプロトタイプを作ることに対応している。
f:id:hirotaka_hachiya:20200122142903p:plain
【3系(legacy)】
https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract-3.03%E2%80%933.05

4系ではLSTMを使っている模様。
【4系】
https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract-4.00



以下は、ubuntuでのtesseractのインストール手順である。
【参考文献】
https://qiita.com/chokozainer/items/fd8be9b4f93adbb6809a

1) sudo apt install tesseract-ocr
2) sudo apt install tesseract-ocr-jpn

3) Leptonicaのインストール
3-1) 最新版の17.9をダウンロード
wget https://github.com/DanBloomberg/leptonica/releases/download/1.79.0/leptonica-1.79.0.tar.gz
3-2) tar -xvzf leptonica-1.79.0.tar.gz
3-3) cd leptonica-1.79.0/
3-4) ./configure
3-5) make
3-6) sudo make install

4) 動作確認
以下のような日本語の文章が書かれた画像(test.png)を用意し、
tesseract test.png out -l jpn
を実行
f:id:hirotaka_hachiya:20200122140424p:plain

out.txtというファイルに結果が出力される。

西日本ゃ東日本で曇りゃ爾の日続く

冬は晴れる日が多い東日本や西日本の太平洋側で
すが、 日本の南に前線カヾ停滞する影響で、 曇りや雨
の日が続く予想です〟

真冬にこれだけ晴れづらい日が続くことは珍し
く、 梅雨のはしりのような天気が続きます〟

棘など関東で雪の可能性右
梅雨のはしりのような天気は週宋にかけて続く予
想で、 スッキリ しない空が続くと見られます〟

東京でも雨の降る日が多く、 寒気の強さによつて
は東京都心など関東南部で広く雪になる可能性があ
ります〟 こまめに最新情報をご`確詔ください〟