ニューラルネットベースの LSTM Tesseract 4.00 のトレーニングについては、Tesseract 4.00 のトレーニングを参照してください。
注: 以下の手順は、古い Tesseract 3.0x バージョン用です。
ボックスファイルの作成
トレーニングのために Tesseract を実行するステップでは、Tesseract は各トレーニング画像に対応する 'box' ファイルが必要です。ボックスファイルは、トレーニング画像内の文字を、順序どおりに、1行に1文字ずつ、その文字の周囲のバウンディングボックスの座標とともにリストしたテキストファイルです。Tesseract 3.0 には、必要な形式のテキストファイルを出力するモードがありますが、文字セットが現在のトレーニングと異なる場合、当然のことながらテキストは間違っています。したがって、ここでの重要なプロセスは、ファイルを手動で編集して正しい文字を記述することです。
次のコマンドラインを使用して、トレーニング画像のそれぞれで Tesseract を実行します。
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
例:
tesseract eng.timesitalic.exp0.tif eng.timesitalic.exp0 batch.nochop makebox
ここからが大変です。ファイル [lang].[fontname].exp[num].box
を編集し、Tesseract によって入力された不正な文字の代わりに、ファイル内の各行の先頭に各文字の UTF-8 コードを記述する必要があります。例:配布ファイルには、eurotext.tif という画像が含まれています。上記のコマンドを実行すると、次の行を含むテキストファイルが生成されます(141〜154行目)。
s 734 494 751 519 0
p 753 486 776 518 0
r 779 494 796 518 0
i 799 494 810 527 0
n 814 494 837 518 0
g 839 485 862 518 0
t 865 492 878 521 0
u 101 453 122 484 0
b 126 453 146 486 0
e 149 452 168 477 0
r 172 453 187 476 0
d 211 451 232 484 0
e 236 451 255 475 0
n 259 452 281 475 0
Tesseract は英語モードで実行されたため、ウムラウトを正しく認識しません。この文字は、UTF-8 をサポートするエディターを使用して修正する必要があります。この場合、u
を ü
に変更する必要があります。
UTF-8 をサポートする推奨エディター:Notepad++、gedit、KWrite、Geany、Vim、Emacs、Atom、TextMate、Sublime Text。いずれかを選択してください!Linux と Windows の両方に、入力できない文字をコピーするために使用できる文字マップがあります。
理論的には、ボックスファイル内の各行は、トレーニングファイルからの1つの文字を表しているはずですが、下の二重引用符 „ のように水平方向に分割された文字がある場合、おそらくマージする必要のある2つのボックスがあるでしょう!
例:116〜129行目
D 101 504 131 535 0
e 135 502 154 528 0
r 158 503 173 526 0
, 197 498 206 510 0
, 206 497 214 509 0
s 220 501 236 526 0
c 239 501 258 525 0
h 262 502 284 534 0
n 288 501 310 525 0
e 313 500 332 524 0
l 336 501 347 534 0
l 352 500 363 532 0
e 367 499 386 524 0
” 389 520 407 532 0
ご覧のとおり、下の二重引用符文字は2つの単一コンマとして表現されています。バウンディングボックスは次のようにマージする必要があります。
- 最初の数値(左)は、2つの行の最小値(197)を取ります。
- 2番目の数値(下)は、2つの行の最小値(497)を取ります。
- 3番目の数値(右)は、2つの行の最大値(214)を取ります。
- 4番目の数値(上)は、2つの行の最大値(510)を取ります。
これにより、次のようになります。
D 101 504 131 535 0
e 135 502 154 528 0
r 158 503 173 526 0
„ 197 497 214 510 0
s 220 501 236 526 0
c 239 501 258 525 0
h 262 502 284 534 0
n 288 501 310 525 0
e 313 500 332 524 0
l 336 501 347 534 0
l 352 500 363 532 0
e 367 499 386 524 0
” 389 520 407 532 0
トレーニング画像上の文字の間隔が適切でなかった場合、一部が1つのボックスに結合されている可能性があります。この場合、間隔を改善した画像を作成して最初からやり直すか、またはペアが一般的な場合は、行の先頭に両方の文字を記述し、バウンディングボックスを両方を表すようにします。(3.00 の時点では、「文字」の説明には 24 バイトの制限があります。これにより、コードが Unicode セット内のどこにあるかに応じて、6〜24 個の Unicode を使用して文字を記述できます。この制限に達した場合は、状況を説明するissueを提出してください。)
注 ボックスファイルで使用される座標系では、(0,0) は左下にあります。
各行の最後の数値は、マルチページ tiff ファイル内のその文字のページ番号(0ベース)です。
ボックスファイルを編集するための視覚ツールがいくつかあります。AddOns ドキュメントを確認してください。
新しい文字セットのブートストラップ
新しい文字セットをトレーニングしようとしている場合は、1つのフォントで労力を費やして、1つの適切なボックスファイルを取得し、残りのトレーニングプロセスを実行してから、新しい言語で Tesseract を使用して残りのボックスファイルを次のように作成することをお勧めします。
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] -l yournewlanguage batch.nochop makebox
これにより、Tesseract がほとんどのテキストを正しく認識する可能性が高いため、2番目のボックスファイルを作成するのが簡単になります。トレーニングセット(つまり、下記の mftraining
および cntraining
のコマンドライン)にフォントを追加して、このシーケンスを常に反復処理できますが、既存のセットに新しいトレーニングデータを追加できる増分トレーニングモードはないことに注意してください。つまり、mftraining
と cntraining
を実行するたびに、コマンドラインで指定した tr ファイルから新しいデータファイルを最初から作成しており、これらのプログラムは既存の intproto
/ pffmtable
/ normproto
を直接追加することはできません。
Tif/Box ペアが提供されています!
Tif/Box ファイルのペアは、SourceForge のダウンロードアーカイブで、次の言語で入手できます:オランダ語 英語 フランス語 ドイツ語 ドイツ語-フラクトゥール イタリア語 スペイン語
tiff ファイルはスペースを節約するために G4 圧縮されているため、最初に libtiff を使用するか、解凍する必要があります。