tesseract 特定フォントの言語データを作る
作成される 言語データ(xxx.traineddata) ファイルは一つです。
今回は日本語の横書き用フォントで試してみました。
★作成環境★
・Linux min 19
・tesseract 3.05.02
目次
フォントのインストール
- テンポラリーディレクトリへ移動
- フォントのダウンロード
- /tmp/landdata/jpn/jpn.config を開く
- 縦書き用フォントは使用しないので、下記の行を # でコメントアウトする。
- フォントのインストール
- フォントキャシュの更新
- フォントリストの表示
cd /tmp
git clone git://github.com/tesseract-ocr/langdata.git
vi /tmp/langdata/jpn/jpn.config
# tessedit_load_sublangs jpn_vert
/tmp/langdata/jpn/jpn.config の4行目あたり
#Fixes https://github.com/tesseract-ocr/tesseract/issues/988 preserve_interword_spaces 1 # tessedit_load_sublangs jpn_vert # Important configurations for CJK mode # New Segmentation search params
sudo apt-get install -y fonts-takao-gothic sudo apt-get install -y fonts-takao-mincho sudo apt-get install -y fonts-takao-pgothic sudo apt-get install -y fonts-takao sudo apt-get install -y fonts-ipaexfont sudo apt-get install -y fonts-ipaexfont-gothic sudo apt-get install -y fonts-noto-cjk sudo apt-get install -y fonts-noto-cjk-extra
fc-cache -fv
インストールしたフォントの確認
text2image --list_available_fonts --fonts_dir /usr/share/fonts※表示されたフォント名は、このあと編集する language-specific.sh 内のフォント名を記入する際に必要となります。
フォントの指定(不要フォント名削除編)
- language-specific.sh のバックアップ
- language-specific.sh の編集
パッケージ版(例)
cp /usr/share/tesseract-ocr cp language-specific.sh language-specific.sh.bk
ソースコンパイル版(例)
cd /home/(ユーザ名)/tesseract-3.05.02/training cp language-specific.sh language-specific.sh.bk
※コンパイル版はソースファイルのディレクトリの中にあります。
vi language-specific.sh
1, JPN_FONTS 内のインストールされていない、下記のフォント名を削除する
削除すると、こんな感じになる。
2, 旧フォント名 Noto Sans Japanese を新フォント名に変更する。
(旧フォント名)
(新フォント名)
※v4.xx は新しいかもしれませんが、旧フォント名の場合は修正してあげてください。
変更すると、こんな感じになる。
3, VERTICAL_FONTS 内の、下記の縦書き用のフォント名を削除する。
削除すると、こんな感じになる。
編集が完了したら保存してください。
"TakaoExGothic" \ "TakaoExMincho" \ "VL Gothic" \ "VL PGothic" \
削除すると、こんな感じになる。
JPN_FONTS=( \ "TakaoGothic" \ "TakaoMincho" \ "TakaoPGothic" \ "TakaoPMincho" \ "Noto Sans Japanese Bold" \ "Noto Sans Japanese Light" \ )
2, 旧フォント名 Noto Sans Japanese を新フォント名に変更する。
(旧フォント名)
"Noto Sans Japanese Bold" \ "Noto Sans Japanese Light" \
(新フォント名)
"Noto Sans CJK JP Bold" \ "Noto Sans CJK JP Light" \※tesseract v3.05.02 は旧フォント名のまま記述されてしまっているので変更が必要です。
※v4.xx は新しいかもしれませんが、旧フォント名の場合は修正してあげてください。
変更すると、こんな感じになる。
JPN_FONTS=( \ "TakaoGothic" \ "TakaoMincho" \ "TakaoPGothic" \ "TakaoPMincho" \ "Noto Sans CJK JP Bold" \ "Noto Sans CJK JP Light" \ )
3, VERTICAL_FONTS 内の、下記の縦書き用のフォント名を削除する。
"TakaoExGothic" \ # for jpn "TakaoExMincho" \ # for jpn
削除すると、こんな感じになる。
VERTICAL_FONTS=( \ "AR PL UKai Patched" \ # for chi_tra "AR PL UMing Patched Light" \ # for chi_tra "Baekmuk Batang Patched" \ # for kor )
編集が完了したら保存してください。
ここまでの作業でエラーが起きないことを確認する
tesstrain.sh --overwrite --lang jpn --langdata_dir /tmp/langdata
下記のようなメッセージで終われば成功( successfully が末尾から数行目にある)
: : Combining tessdata files Output /tmp/tmp.p6smtJD1Kw/jpn/jpn.traineddata created successfully. Creating new directory /tmp/tesstrain/tessdata Moving /tmp/tmp.p6smtJD1Kw/jpn/jpn.traineddata to /tmp/tesstrain/tessdata Completed training for language 'jpn'※この時点でエラーが起きるパターンは、目的のフォントがインストールされていない、または、 language-specific.sh の編集で誤字・脱字だと思います。
フォント名の指定(フォント名追加編)
- language-specific.sh の編集
vi language-specific.sh
1, JPN_FONTS 内に、下記のフォント名を追加する
※無駄なスペースが \ の後ろにあると後々の作業でエラーの原因になる。
追加すると、こんな感じになる。
"IPAexMincho" \ "IPAexGothic" \ "Noto Sans Mono CJK JP" \ "Noto Sans Mono CJK JP Bold" \ "Noto Serif CJK JP" \ "Noto Serif CJK JP Bold" \※行の末尾は \ で終わること。
※無駄なスペースが \ の後ろにあると後々の作業でエラーの原因になる。
追加すると、こんな感じになる。
JPN_FONTS=( \ "TakaoGothic" \ "TakaoMincho" \ "TakaoPGothic" \ "TakaoPMincho" \ "Noto Sans CJK JP" \ "Noto Sans CJK JP Bold" \ "IPAexMincho" \ "IPAexGothic" \ "Noto Sans Mono CJK JP" \ "Noto Sans Mono CJK JP Bold" \ "Noto Serif CJK JP" \ "Noto Serif CJK JP Bold" \ )
フォント属性をプロパティファイルに追記
追加分フォントの、フォント属性をプロパティファイルに追記してあげる必要があります。
- /tmp/langdata/font_properties の編集
- 下記の内容を /tmp/langdata/font_properties の末尾に書き加えます。
vi /tmp/langdata/font_properties
※ファイル内のフォーマットは下のとおりです。
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
IPAexMincho 0 0 0 1 0 IPAexGothic 0 0 0 0 0 Noto_Sans_CJK_JP 0 0 0 0 0 Noto_Sans_CJK_JP_Bold 0 1 0 0 0 Noto_Sans_Mono_CJK_JP 0 0 1 0 0 Noto_Sans_Mono_CJK_JP_Bold 0 1 1 0 0 Noto_Serif_CJK_JP 0 0 0 1 0 Noto_Serif_CJK_JP_Bold 0 1 0 1
言語データを作成する
- 言語データ作成
- 作成された言語データの確認
- 言語データを配置する
tesstrain.sh --overwrite --lang jpn --langdata_dir /tmp/langdata
下記のようなメッセージで終われば成功( successfully が末尾から数行目にある)
: : Combining tessdata files Output /tmp/tmp.p6smtJD1Kw/jpn/jpn.traineddata created successfully. Creating new directory /tmp/tesstrain/tessdata Moving /tmp/tmp.p6smtJD1Kw/jpn/jpn.traineddata to /tmp/tesstrain/tessdata Completed training for language 'jpn'※この時点でエラーが起きるパターンは、目的のフォントがインストールされていない、または、 language-specific.sh の編集で誤字・脱字だと思います。
ls -l /tmp/tesstrain/tessdata/jpn.traineddata
sudo cp /tmp/tesstrain/tessdata/jpn.traineddata /(データディレクトリ)/.
<データディレクトリ>の場所
パッケージ版(例)
/usr/share/tesseract-ocr/tessdata
ソースコンパイル版(例)
/usr/local/tesseract/share/tessdata
動作確認
- ホームディレクトリに sample ディレクトリを作成する。
- 下の画像を ファイル名「 test.png」として sample ディレクトリに保存する。
- sample ディレクトリに移動する
- 文字認識をさせてみる
- result.txt ファイルが作成されます。覗いてみる。
- ファイルの中身は 「 夏が来た 」かと思います。
mkdir ~/sample
cd ~/sample
tesseract test.png result -l jpn※オプションの -l は、英字のエル(小文字)です。
正常
異常(画像ファイルが存在しない場合)
tesseract test.png result -l jpn Tesseract Open Source OCR Engine v3.05.02 with Leptonica
異常(画像ファイルが存在しない場合)
$ tesseract test.png result -l jpn Tesseract Open Source OCR Engine v3.05.02 with Leptonica Error in fopenReadStream: file not found Error in findFileFormat: image file not found Error during processing.
cat result.txt 夏が来た
ディスカッション
コメント一覧
まだ、コメントがありません