トップページ -> データベース関連技術 -> ナンバープレート認識 -> Tesseract OCR 5 で新しいフォントを用いた学習(Ubuntu 上)
[サイトマップへ], [サイト内検索へ]

Tesseract OCR 5 で新しいフォントを用いた学習(Ubuntu 上)


前準備

Tesseract OCR 最新版のインストール

Ubuntu での Tesseract OCR のインストール手順: 別のページで説明している.

Tesseract OCR のテスト実行

最初に、画像ファイルを用意し、テスト実行してみる

tesseract 48.png outbase -l jpn
cat outbase.txt 

[image]

フォントの追加

フォントのファイルを /usr/share/fonts に置く。そして、確認する。手順を次に示す。

  1. フォントリストを作成しておく

    あとで確認のために使う

    text2image --list_available_fonts --fonts_dir /usr/share/fonts &> /tmp/fontlist1
    

    [image]
  2. フォントファイルを準備し、/usr/share/fonts に置く

    Ubuntu では、ttf や otf は、/usr/share/fonts に置くと使えるようになる。 フォントファイルのライセンスは利用者で確認すること

    以下、説明のために、TRM フォント(http://dc-crafts.main.jp/trm/f/trm-font.php で公開されている), FZナンバープレートゴシック(http://expwyandstamps.web.fc2.com/sozai/fontproject.htm ) を使うことにする。 これらフォントの作者に感謝する。 以下の手順を試す場合でも、これらフォントの利用条件は利用者が確認すること。 なお、以下の手順のついての質問を、これらフォントの作者に送るようなことはしないこと。

  3. 再度、フォントリストを作成
    text2image --list_available_fonts --fonts_dir /usr/share/fonts &> /tmp/fontlist2
    

    [image]
  4. フォントリストの差分を得る

    これで、フォント名を確認(あとで、フォント名を使う).

    diff /tmp/fontlist1 /tmp/fontlist2 
    
  5. Tesseract OCT に、フォントを追加したいので、 /usr/local/share/langdata/font_properties を編集

    次の行を、フォントの種類数だけ追加.「フォント名」のところには、いま確認したフォントを設定

    フォント名> 0 0 0 0 0
    

    [image]

Tesseract OCR の学習手順(Ubuntu 上)

  1. 学習に用いる日本語ファイルの準備

    /usr/local/share/langdata/jpn/jpn.training_text を編集する。

    このとき、このファイルの文字コードが変わらないようにすること(ファイルの上書きコピーを行うと、文字コードが変わってしまっても気づきにくい。必ず確認すること)。

    エディタを管理者の権限で実行して編集する。

    ここでは、次のように編集したとして説明を続ける。

    0123456789-
    さすせそたちつてとなにぬねのはひふほまみむめもやゆよらりるろれわ
    あいうえかきくけこを 
    いわき,つくば,とちぎ,なにわ,愛媛,旭川,伊豆,一宮,宇都宮,越谷,奄美,横浜,岡崎,岡山,沖縄,下関,会津,岩手,岐阜,久留米,宮崎,宮城,京都,金沢,釧路,熊谷,熊本,群馬,郡山,広島,香川,高崎,高知,佐賀,佐世保,堺,札幌,三河,三重,山形,山口,山梨,滋賀,鹿児島,室蘭,秋田,習志野,春日井,春日部,所沢,庄内,松本,沼津,湘南,新潟,神戸,諏訪,水戸,杉並,世田谷,成田,盛岡,青森,静岡,石川,仙台,千葉,川越,川口,川崎,前橋,倉敷,相模,足立,袖ヶ浦,多摩,帯広,大宮,大阪,大分,筑豊,長岡,長崎,長野,鳥取,土浦,島根,徳島,奈良,那須,柏,函館,八王子,八戸,飛騨,尾張小牧,姫路,品川,浜松,富山,富士山,富士山,福井,福岡,福山,福島,平泉,豊橋,豊田,北九州,北見,名古屋,野田,鈴鹿,練馬,和歌山,和泉
    

    [image]
  2. 学習データの生成(tesstrain.sh の実行)

    終了までしばらく待つ.(学習に用いる日本語ファイルが長い場合は、かなりの時間がかかる)

    「--linedata_only 」は、LSTM での学習のための設定

    「--fontlist 」のところに、使用する日本語フォント名を書く。

    rm -rf /tmp/jpntrain
    cd
    tesstrain.sh --fonts_dir /usr/share/fonts --lang jpn --linedata_only \
      --noextract_font_properties --langdata_dir /usr/local/share/langdata \
      --tessdata_dir /usr/local/share/tessdata --output_dir /tmp/jpntrain \
      --fontlist 'TRMフォント JB' 'FZナンバープレートゴシック Ver.10' \
    'Noto Sans CJK JP' 'Noto Serif CJK JP Bold' 'Noto Serif CJK JP Heavy' 'Noto Serif CJK JP Light' 'Noto Serif CJK JP Medium' 'Noto Serif CJK JP Semi-Bold' 'Noto Serif CJK JP Ultra-Light'
    

    [image]
  3. 終了の確認

    エラーメッセージが出ていないこと

    [image]
  4. ファイルができるので確認
    ls -al /tmp/jpntrain
    ls -al /tmp/jpntrain/jpn
    

    [image]
  5. Fine Tuning の実行

    まず、コマンドで、配布・公開されている jpn.traineddata のファイルから、モデルのファイルを生成

    combine_tessdata -e /usr/local/share/tessdata/jpn.traineddata /tmp/jpntrain/jpn.lstm
    

    [image]

    いま生成したモデルのファイルを、先ほど生成した学習データを使って FineTuning する.

    終了までしばらく待つ.

    cd
    rm lstmtrain*
    lstmtraining -D /tmp/jpnoutput --model_output lstmtrain \
      --continue_from /tmp/jpntrain/jpn.lstm \
      --traineddata /usr/local/share/tessdata/jpn.traineddata \
      --train_listfile /tmp/jpntrain/jpn.training_files.txt
    

    [image]
  6. 終了の確認

    エラーメッセージが出ていないこと.

    [image]
  7. モデルのファイルを生成、所定の場所にコピー
    cd
    lstmtraining --stop_training \
      --continue_from lstmtrain_checkpoint \
      --traineddata /usr/local/share/tessdata/jpn.traineddata \
      --train_listfile /tmp/jpntrain/jpn.training_files.txt \
      --model_output jpn.traineddata
    sudo cp /usr/local/share/tessdata/jpn.traineddata /usr/local/share/tessdata/jpn.traineddata.$$ 
    sudo cp jpn.traineddata /usr/local/share/tessdata/jpn.traineddata
    

    [image]

  8. テスト実行し、動作確認
    tesseract 48.png outbase -l jpn
    cat outbase.txt 
    

    [image]

    これで分かるように、学習を重ねたとき、精度が落ちるということは十分にありえる


本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

問い合わせ先: 金子邦彦(かねこ くにひこ) [image]