ニューラルネットベースのLSTM Tesseract 4.00のトレーニングについては、Tesseract 4.00のトレーニングをご覧ください。
Tesseract 3.03–3.05を新しい言語用にトレーニングするために提供されているツールを使用する方法。
重要な注意:Tesseractのトレーニングに時間と労力を費やす前に、品質の向上ページを読むことを強くお勧めします。
Tesseract 3.04および3.05には、Tesseractのトレーニングのさまざまなフェーズを簡単に実行するためのスクリプトが用意されています。使用方法の詳細については、tesstrain.shページをご覧ください。
- トレーニング画像とボックスファイルの生成
- トレーニング用にTesseractを実行
- unicharsetファイルの生成
- font_propertiesファイル
- クラスタリング
- 辞書データ(オプション)
- unicharambigsファイル
- すべてをまとめる
付録
トレーニングプロセスに関する質問
トレーニング中に問題が発生し、助けが必要な場合は、tesseract-ocrメーリングリストを使用して質問してください。
絶対にトレーニングに関する問題の報告や質問をissueとして報告しないでください!
はじめに
Tesseract 3.0xは完全にトレーニング可能です。このページでは、トレーニングプロセス、さまざまな言語への適用性に関するガイドライン、および結果に期待できる内容について説明します。
トレーニングを開始する前に、リリース3.04の時点でtraineddataがすでに利用可能な言語のリストを確認してください。
サードパーティのトレーニングツールもトレーニングに利用できます。
背景と制限
Tesseractは元々英語のテキストのみを認識するように設計されました。エンジンとトレーニングシステムを他の言語やUTF-8文字を処理できるようにするために努力が重ねられてきました。Tesseract 3.0は任意のUnicode文字(UTF-8でコード化)を処理できますが、正常に機能する言語の範囲には制限があるため、特定の言語でうまく機能すると期待する前に、このセクションを考慮に入れてください!
Tesseract 3.01で上から下への言語が追加され、Tesseract 3.02でヘブライ語(右から左)が追加されました。
Tesseractは現在、アラビア語やヒンディー語などのスクリプトを、cubeと呼ばれる補助エンジン(Tesseractバージョン3.01以降に含まれています)で処理します。アラビア語(ペルシア語、ウルドゥー語なども同様)の場合、4.0より前のTesseractバージョンをトレーニングしようとしないでください。それは絶望的です。4.0の場合は、LSTMメソッドのみでトレーニングしてください。
追加の言語のTraineddataがGoogleから3.04リリース用に提供されています。
Tesseractは、(中国語のような)大きな文字セットの言語では動作が遅くなりますが、問題なく動作するようです。
Tesseractは、同じ文字の異なる形状を、異なるフォントを明示的に分離することによって知る必要があります。フォントの数は64フォントに制限されています。実行時間は提供されるフォントの数に大きく依存し、32を超えるフォントをトレーニングすると大幅な速度低下につながることに注意してください。
追加のライブラリが必要
3.03以降、トレーニングツールを構築するには追加のライブラリが必要です。
sudo apt-get install libicu-dev
sudo apt-get install libpango1.0-dev
sudo apt-get install libcairo2-dev
トレーニングツールの構築
3.03以降、ソースからTesseractをコンパイルする場合は、個別のmakeコマンドを使用してトレーニングツールを作成およびインストールする必要があります。上記の追加ライブラリをインストールしたら、tesseractソースディレクトリから以下を実行します。
make training
sudo make training-install
必要なデータファイル
別の言語用にトレーニングするには、tessdata
サブディレクトリにいくつかのデータファイルを作成し、combine_tessdata
を使用して、これらを1つのファイルにまとめる必要があります。命名規則は、languagecode.file_name
です。リリースされたファイルの言語コードはISO 639-3標準に従いますが、任意の文字列を使用できます。英語(3.0x)に使用されるファイルは次のとおりです。
tessdata/eng.config
tessdata/eng.unicharset
tessdata/eng.unicharambigs
tessdata/eng.inttemp
tessdata/eng.pffmtable
tessdata/eng.normproto
tessdata/eng.punc-dawg
tessdata/eng.word-dawg
tessdata/eng.number-dawg
tessdata/eng.freq-dawg
…そして、最後にまとめられたファイルは次のとおりです。
tessdata/eng.traineddata
および
tessdata/eng.user-words
は、まだ別途提供される場合があります。
traineddataファイルは、既知のファイルタイプのオフセットを含む目次を含む、入力ファイルを単純に連結したものです。現在受け入れられているファイル名のリストについては、ソースコードのccutil/tessdatamanager.hを参照してください。
テキスト入力ファイルの要件
テキスト入力ファイル(lang.config、lang.unicharambigs、font_properties、ボックスファイル、辞書の単語リストなど)は、以下の基準を満たす必要があります。
- BOMなしのASCIIまたはUTF-8エンコーディング
- Unix 改行マーカー(’\n’)
- 最後の文字は改行マーカー(’\n’)である必要があります。一部のテキストエディタでは、これをファイルの末尾の空行として表示します。これを省略すると、
last_char == '\n':Error:Assert failed...
を含むエラーメッセージが表示されます。
どこまで簡略化できるか?
以下の手順を使用して、unicharset
、inttemp
、normproto
、pffmtable
を必ず作成する必要があります。限られた範囲のフォント(たとえば、単一のフォントなど)のみを認識しようとする場合、1つのトレーニングページで十分な場合があります。他のファイルを提供する必要はありませんが、アプリケーションによっては精度が向上する可能性が高くなります。
トレーニング手順
手順の一部は必然的に手動です。可能な限り多くの自動化されたヘルプが提供されています。以下で参照されているツールはすべて、トレーニングサブディレクトリに構築されています。
すべてのコマンドは、入力ファイルがある同じフォルダで実行する必要があります。
トレーニング画像とボックスファイルの生成
テキストファイルの準備
最初のステップは、使用する完全な文字セットを決定し、例のセットを含むテキストまたはワープロファイルを準備することです。トレーニングファイルを作成する際に念頭に置いておくべき最も重要な点は次のとおりです。
各文字のサンプルが最小限にあることを確認してください。10は良いですが、まれな文字の場合は5でOKです。
より頻繁な文字のサンプルは、少なくとも20以上である必要があります。
すべての非文字を一緒にグループ化するという間違いを犯さないでください。テキストをもっと現実的にしてください。
たとえば、
The quick brown fox jumps over the lazy dog. 0123456789 !@#$%^&(),.{}<>/?
はひどいです!はるかに良いのは
The (quick) brown {fox} jumps! over the $3,456.78 <lazy> #90 dog & duck/goose, as 12.5% of E-mail from aspammer@website.com is spam?
これにより、テキスト行検出コードが特殊文字の適切なベースラインメトリックを取得する可能性がはるかに高くなります。
自動化された方法
3.03の新機能
上記仕様に従って、トレーニングテキストを含むUTF-8テキストファイル(training_text.txt
)を準備します。認識したいフォントのtruetype/opentypeフォントファイルを取得します。各フォントに対して、以下のコマンドを順番に実行して、一致するtif/boxファイルペアを作成します。
training/text2image --text=training_text.txt --outputbase=[lang].[fontname].exp0 --font='Font Name' --fonts_dir=/path/to/your/fonts
–fontへの引数にはスペースを含めることができるため、引用符で囲む必要があることに注意してください。例:
training/text2image --text=training_text.txt --outputbase=eng.TimesNewRomanBold.exp0 --font='Times New Roman Bold' --fonts_dir=/usr/share/fonts
トレーニングテキストをレンダリングできるシステム内のすべてのフォントをリストするには、次を実行します。
training/text2image --text=training_text.txt --outputbase=eng --fonts_dir=/usr/share/fonts --find_fonts --min_coverage=1.0 --render_per_font=false
この例では、training_text.txt
ファイルには英語で記述されたテキストが含まれています。’eng.fontlist.txt’ファイルが作成されます。
text2image
で利用できる他のコマンドライン引数がたくさんあります。詳細については、text2image --help
を実行してください。
text2image
を使用した場合は、トレーニング用にTesseractを実行ステップに進むことができます。
古い手動の方法
- トレーニングデータはフォントごとにグループ化する必要があります。理想的には、単一のフォントのすべてのサンプルを単一のtiffファイルに入れる必要がありますが、これはマルチページのtiff(libtiffまたはleptonicaがインストールされている場合)にすることができます。そのため、単一のフォントでのトレーニングデータの合計は、多数のページと数万文字になる可能性があり、大規模な文字セット言語のトレーニングが可能になります。
- 複数のサイズでトレーニングする必要はありません。10ポイントで十分です。(これの例外は非常に小さいテキストです。約15ピクセルより小さいx高さのテキストを認識したい場合は、特にトレーニングするか、認識を試みる前に画像を拡大する必要があります。)
- 画像ファイルでフォントを混在させないでください(正確には単一の.trファイル)。これにより、クラスタリングでフィーチャが削除され、認識エラーが発生します。
- トレーニングデータのフォーマットがわからない場合は、ダウンロードページのサンプルボックステフファイルが役立ちます。
次に、トレーニングページの画像を作成するために印刷してスキャンするか(または、いくつかの電子レンダリング方法を使用します)。最大64個のトレーニングファイルを使用できます(複数ページ)。イタリック体や太字など、さまざまなフォントやスタイルを混合して(ただし、個別のファイルで)作成するのが最適です。
次のステップでコードを別のファイルに挿入する必要があるため、トレーニングテキストをUTF-8テキストファイルとして保存する必要があります。
大量のトレーニングデータの明確化 64個の画像制限は、フォントの数に対するものです。各フォントを単一のマルチページtiffに入れる必要があり、座標の後で各文字のページ番号を指定するようにボックスファイルを変更できます。したがって、任意のフォントに対して任意に大量のトレーニングデータを作成できるため、大規模な文字セット言語のトレーニングが可能になります。マルチページtiffの代わりに、単一のフォントに対して多数のシングルページtiffを作成することもできます。その場合は、各フォントのtrファイルをいくつかの単一フォントのtrファイルに連結する必要があります。いずれにせよ、mftrainingへの入力trファイルにはそれぞれ単一のフォントが含まれている必要があります。
ボックスファイルの作成
別のボックスファイルの作成ページを参照してください。
トレーニング用にTesseractを実行
トレーニング画像とボックスファイルのペアごとに、トレーニングモードでTesseractを実行します。
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] box.train
または
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] box.train.stderr
注 このステップではtesseractで言語データが存在する必要がありますが、言語データは使用されないため、トレーニングしている言語に関係なく、英語で問題ありません。
最初の形式は、すべてのエラーをtesseract.logという名前のファイルに送信します。2番目の形式は、すべてのエラーをstderrに送信します。
ボックスファイルの名前は、パスを含めて、tifファイルの名前と一致している必要があることに注意してください。一致しない場合、Tesseractは見つけることができません。このステップの出力はfontfile.tr
で、トレーニングページの各文字の特徴が含まれています。[lang].[fontname].exp[num].txt
も、改行1つだけでテキストなしで書き込まれます。
重要 apply_boxの出力にエラーがないか確認してください。FATALITIESが報告された場合は、ボックスファイルを修正するまでトレーニングプロセスを続行する意味がありません。新しいbox.train.stderr設定ファイルを使用すると、出力場所を簡単に選択できます。FATALITYは通常、このステップでボックスファイルにリストされている文字のいずれかのトレーニングサンプルが見つからなかったことを示します。座標が間違っているか、問題の文字の画像に問題があります。文字の実行可能なサンプルがない場合、認識できず、生成されたinttempファイルは後でunicharsetファイルと一致せず、Tesseractは中止します。
致命的であり、注意が必要な別のエラーは、「Box file format error on line n」(n行目のボックスファイル形式エラー)に関するエラーです。「Bad utf-8 char…」が先行する場合は、UTF-8コードが正しくないため、修正する必要があります。「utf-8 string too long…」というエラーは、文字の説明の24バイト制限を超えたことを示しています。24バイトを超える説明が必要な場合は、問題を報告してください。
[lang].[fontname].exp[num].tr
ファイルの内容を編集する必要はありません。その中のフォント名を設定する必要はありません。
興味のある方は、こちらに形式に関する情報があります。
unicharsetファイルの生成
Tesseractのunicharsetファイルには、Tesseract OCRエンジンが認識するようにトレーニングされている各シンボル(unichar)に関する情報が含まれています。
現在、unicharset
ファイルの生成は、unicharset_extractor
とset_unicharset_properties
の2つのコマンドを使用して2つのステップで実行されます。
注:unicharset
ファイルは、inttemp
、normproto
、およびpffmtable
が生成されるたびに(つまり、ボックスファイルが変更されたときにすべて再作成する必要があります)再生成する必要があります。これらは同期している必要があるためです。
unicharset
ファイル形式の詳細については、この付録を参照してください。
unicharset_extractor
Tesseractは、出力できる可能性のある文字のセットを知る必要があります。unicharset
データファイルを生成するには、上記で生成されたボックスファイルに対してunicharset_extractor
プログラムを使用します。
unicharset_extractor lang.fontname.exp0.box lang.fontname.exp1.box ...
set_unicharset_properties
3.03の新機能
このツールは、データファイルのセットとともに、unicharsetに追加のプロパティ(主にフォントから取得したサイズ)を追加できるようにします。
training/set_unicharset_properties -U input_unicharset -O output_unicharset --script_dir=training/langdata
--script_dir
は、トレーニング文字セットに関連する.unicharsetファイルを含むディレクトリを指す必要があります。これらは、https://github.com/tesseract-ocr/langdataからダウンロードできます。
unicharset_extractor
とset_unicharset_properties
を実行すると、すべてのフィールドがこの例のように正しい値に設定されたunicharset
ファイルが得られます。
font_propertiesファイル
次に、font_properties
テキストファイルを作成する必要があります。このファイルの目的は、フォントが認識されたときに出力に表示されるフォントスタイル情報を提供することです。
font_properties
ファイルの各行は、次のようにフォーマットされています:fontname
italic
bold
fixed
serif
fraktur
ここで、fontname
はフォントの名前を示す文字列であり(スペースは許可されません!)、italic
、bold
、fixed
、serif
、およびfraktur
はすべて、フォントに指定されたプロパティがあるかどうかを示す単純な0
または1
のフラグです。
例:
timesitalic 1 0 0 1 0
font_properties
ファイルは、shapeclustering
およびmftraining
コマンドで使用されます。
mftraining
を実行する場合、*.trファイルの各fontname
フィールドは、font_properties
ファイルのfontname
エントリと一致する必要があります。そうでない場合、mftraining
は中止します。
注:langdataリポジトリにある3000のフォント(必ずしも正確ではありません)をカバーするデフォルトのfont_propertiesファイルがあります。
クラスタリング
すべてのトレーニングページの文字の特徴が抽出されたら、それらをクラスタリングしてプロトタイプを作成する必要があります。
文字の形状の特徴は、shapeclustering
、mftraining
、およびcntraining
プログラムを使用してクラスタリングできます。
shapeclustering
shapeclustering
は、通常、インド諸語を除いて使用すべきではありません。(基本文字が2つ以上の非スペーシング修飾子と組み合わされているラテン文字アルファベット言語(例:ḗ、ɔ̄́、r̥̄)には、shapeclustering
を使用する必要がある場合があります。これには、ラテン文字転写のインド諸語が含まれますが、これに限定されない場合があります。そうしないと、mftraining
でAssert failed:in file unicharset.cpp
エラーが発生します。)
shapeclustering -F font_properties -U unicharset lang.fontname.exp0.tr lang.fontname.exp1.tr ...
shapeclustering
は、シェイプクラスタリングによってマスターシェイプテーブルを作成し、shapetable
という名前のファイルに書き込みます。
mftraining
mftraining -F font_properties -U unicharset -O lang.unicharset lang.fontname.exp0.tr lang.fontname.exp1.tr ...
-Uファイルは、上記のunicharset_extractor
で生成されたunicharsetであり、lang.unicharsetは、combine_tessdata
に与えられる出力unicharsetです。
mftraining
は、他の2つのデータファイルを出力します:inttemp
(形状プロトタイプ)およびpffmtable
(各文字の予想される特徴の数)。
注:mftraining
は、shapeclustering
を実行しなかった場合、shapetable
ファイルを生成します。shapeclustering
を使用したかどうかに関係なく、このshapetable
をトレーニング済みデータファイルに含める必要があります。
cntraining
cntraining lang.fontname.exp0.tr lang.fontname.exp1.tr ...
これにより、normproto
データファイル(文字正規化感度プロトタイプ)が出力されます。
辞書データ(オプション)
Tesseractは、各言語に対して最大8つの辞書ファイルを使用します。これらはすべてオプションであり、Tesseractがさまざまな可能な文字の組み合わせの可能性を判断するのに役立ちます。
7つのファイルは有向非巡回語グラフ(DAWG)としてコード化されており、もう1つはプレーンUTF-8テキストファイルです。
名前 | タイプ | 説明 |
---|---|---|
word-dawg | dawg | 言語の辞書単語から作成されたdawg。 |
freq-dawg | dawg | word-dawgに含まれる最も頻繁な単語から作成されたdawg。 |
punc-dawg | dawg | 単語の周りにある句読点パターンから作成されたdawg。「単語」部分は単一のスペースに置き換えられます。 |
number-dawg | dawg | 元々数字を含んでいたトークンから作成されたdawg。各数字はスペース文字に置き換えられます。 |
bigram-dawg | dawg | 単語がスペースで区切られ、各数字が?で置き換えられた単語バイグラムのdawg。 |
user-words | テキスト | 辞書に追加する追加の単語のリスト。通常は空のままにして、必要に応じてユーザーが追加します。 tesseract(1)を参照してください。 |
DAWG辞書ファイルを作成するには、まず言語の単語リストが必要です。スペルチェッカー(例:ispell、aspell、またはhunspell)から単語リストの基礎として使用する適切な辞書ファイルが見つかる場合があります。ライセンスには注意してください。単語リストは、1行に1単語ずつ記述されたUTF-8テキストファイルとしてフォーマットされています。単語リストを、頻繁な単語と残りの単語など、必要なセットに分割し、次にwordlist2dawg
を使用してDAWGファイルを作成します。
wordlist2dawg frequent_words_list lang.freq-dawg lang.unicharset
wordlist2dawg words_list lang.word-dawg lang.unicharset
アラビア語やヘブライ語のように右から左(RTL)に書かれる言語の場合は、wordlist2dawg
コマンドに-r 1
を追加します。
その他のオプションは、wordlist2dawgマニュアルページにあります。
注:結合されたtraineddataに辞書ファイルが含まれている場合、少なくとも1つのエントリが含まれている必要があります。それ以外の場合は空になる辞書ファイルは、combine_tessdata
ステップには必要ありません。
珍しいスペルの単語は、辞書ファイルに追加する必要があります。珍しいスペルには、アルファベット文字と句読点または数字の組み合わせが含まれる場合があります。(例:i18n、l10n、google.com、news.bbc.co.uk、io9.com、utf8、ucs2)
辞書単語リストのサンプルファイルが必要な場合は、既存の言語データファイル(例:eng.traineddata)を(combine_tessdataを使用して)uncombineし、次にdawg2wordlistで単語リストを抽出します。
unicharambigsファイル
unicharambigs
ファイルは、文字または文字セット間の可能性のあるあいまいさを記述するテキストファイルであり、手動で生成されます。
ファイル形式を理解するには、次の例を見てください。
v1
2 ' ' 1 " 1
1 m 2 r n 0
3 i i i 1 m 0
最初の行はバージョン識別子です。
残りの行は、次の形式でタブ区切りのフィールドです。
<number of characters for match source> <characters for match source> <number of characters for match target> <characters for match target> <type indicator>
タイプインジケーター には次の値を含めることができます。
値 | タイプ | 説明 |
---|---|---|
0 | 非必須の置換。 | これは、Tesseractに対し、「ソース」を「ターゲット」に置き換えることで、辞書にない単語から辞書単語を作成する場合、セグメンテーション検索へのヒントとしてあいまいさを考慮するように通知します。あいまいさによって別の辞書単語に変換できる辞書単語は、適応分類器をトレーニングするために使用されません。 |
1 | 必須の置換。 | これは、Tesseractに対し、一致した「ソース」を常に「ターゲット」文字列で置き換えるように通知します。 |
例の行 | 説明 |
---|---|
2 ' ' 1 " 1 | 2つの連続した単一引用符(')が見られたときはいつでも、二重引用符(")に置き換える必要があります。 |
1 m 2 r n 0 | 文字「rn」は、「m」として誤って認識される場合があります。 |
3 i i i 1 m 0 | 文字「m」は、シーケンス「iii」として誤って認識される場合があります。 |
個々の文字はすべてunicharsetに含める必要があります。つまり、使用されるすべての文字は、トレーニング対象の言語の一部である必要があります。
ルールは双方向ではないため、「m」が検出されたときに「rn」を考慮したい場合、またはその逆の場合は、それぞれのルールが必要です。
バージョン3.03以降では、unicharambigsファイルの新しい、より単純な形式がサポートされています。
v2
'' " 1
m rn 0
iii m 0
この形式では、「エラー」と「修正」はスペースで区切られたシンプルなUTF-8文字列であり、さらにスペースの後にはv1と同じタイプの指定子(オプションの場合は0、必須の置換の場合は1)が続きます。このよりシンプルな形式の欠点は、TesseractがUTF-8文字列をユニチャーセットのコンポーネントにエンコードする必要があることです。複雑なスクリプトでは、このエンコードが曖昧になる可能性があります。この場合、各コンポーネントに使用するUTF-8文字数が最小になるようにエンコードが選択されます。つまり、最も短いユニチャーセットのコンポーネントでエンコードが構成されます。
トレーニングで使用される他のほとんどのファイルと同様に、unicharambigs
ファイルはUTF-8としてエンコードされ、改行文字で終わる必要があります。
unicharambigs
形式は、unicharambigs(5) manページでも説明されています。
unicharambigs
ファイルが存在しない場合もあります。
すべてをまとめる
以上です!必要なのは、すべてのファイル(shapetable
、normproto
、inttemp
、pffmtable
、unicharset
)をまとめて、lang.
プレフィックス(たとえば、eng.
)で名前を変更し、それらに対して次のようにcombine_tessdata
を実行することだけです。
combine_tessdata lang.
言語コードには任意の文字列を使用できますが、言語のISO 639-2コードのいずれかに一致する3文字のコードを使用することをお勧めします。
結果のlang.traineddataはtessdataディレクトリに入ります。これで、Tesseractは(理論的には)次のコマンドであなたの言語のテキストを認識できます。
tesseract image.tif output -l lang
combine_tessdata
のその他のオプションについては、マニュアルページまたはソースコードのコメントで確認できます。
traineddataファイルの内部構造の一部は、サードパーティのオンラインTraineddata inspectorで調べることができます。
付録
*.trファイル形式
ボックスファイル内のすべての文字には、次のように、.trファイルに対応するエントリのセット(順番に)があります。
<fontname> <character> <left> <top> <right> <bottom> <pagenum>
4
mf <number of features>
<x> <y> <length> <dir> 0 0
...
cn 1
<ypos> <length> <x2ndmoment> <y2ndmoment>
if <number of features>
<x> <y> <dir>
...
tb 1
<bottom> <top> <width>
マイクロフィーチャー(mf
)は、1次および2次モーメントに正規化されたアウトラインのポリゴンセグメントです。mf
行の後には、<フィーチャーの数>によって決定される一連の行が続きます。
xはx位置[-0.5,0.5]です
yはy位置[-0.25,0.75]です
lengthはポリゴンセグメントの長さ[0,1.0]です
dirはセグメントの方向[0,1.0]です
文字正規化フィーチャー(cn
)は、位置とサイズ(たとえば、c
とC
、,
と'
)を区別するためのモーメント正規化を修正するために使用されます。
if
- Intフィーチャー
tb
- Geoフィーチャー
unicharsetファイル形式
Tesseractのunicharsetファイルには、Tesseract OCRエンジンが認識するようにトレーニングされている各シンボル(unichar)に関する情報が含まれています。
ユニチャーセットファイルの最初の行には、ファイル内のユニチャーの数が含まれています。
この行の後、後続の各行は単一のユニチャーの情報を提供します。最初のそのような行には、スペース文字用に予約されたプレースホルダーが含まれています。
各ユニチャーは、ユニチャーセットファイル内の行番号(-1)であるUnichar IDによって、Tesseract内で参照されます。したがって、スペースはユニチャー0を取得します。
ユニチャーセットファイル内の各ユニチャー行には、次のスペースで区切られたフィールドが必要です。
character
properties
glyph_metrics
script
other_case
direction
mirror
normed_form
character
このユニチャーに対して生成されるUTF-8エンコード文字列。properties
文字プロパティの整数マスク(ビットごとに1つ)。最下位ビットから最上位ビットまで、これらは次のとおりです。isalpha、islower、isupper、isdigit、ispunctuation。glyph_metrics
このグリフが、128がx-高さに正規化されるベースライン正規化座標系内で見つかるさまざまな規格を表す10個のカンマ区切りの整数。min_bottom
,max_bottom
文字の下部が見つかる範囲。min_top
,max_top
文字の上部が見つかる可能性がある範囲。min_width
,max_width
文字の水平幅。min_bearing
,max_bearing
文字の左端が通常の開始位置からどれだけ離れて開始するか。min_advance
,max_advance
次の文字を開始するために、プリンターのセル左端からどれだけ進むか。
script
スクリプトの名前(Latin、Common、Greek、Cyrillic、Han、NULL)。other_case
この文字の他のケースバージョン(大文字または小文字)のUnichar ID。direction
ICUのenum UCharDirectionによって定義された、この文字のUnicode BiDi方向。(0 = 左から右、1 = 右から左、2 = ヨーロッパ数字…)mirror
この文字の双方向ミラーのUnichar ID。たとえば、開き括弧のミラーは閉じ括弧ですが、ラテン大文字Cにはミラーがないため、ラテン大文字Cのままです。normed_form
グラウンドトゥルーステキストが与えられたエラーの原因となるモジュールを特定するために、このユニチャーの「正規化された形式」のUTF-8表現。たとえば、左または右の一重引用符は、ASCII引用符に正規化される場合があります。
ユニチャーセットファイルの例
110
NULL 0 NULL 0
N 5 59,68,216,255,87,236,0,27,104,227 Latin 11 0 1 N
Y 5 59,68,216,255,91,205,0,47,91,223 Latin 33 0 2 Y
1 8 59,69,203,255,45,128,0,66,74,173 Common 3 2 3 1
9 8 18,66,203,255,89,156,0,39,104,173 Common 4 2 4 9
a 3 58,65,186,198,85,164,0,26,97,185 Latin 56 0 5 a
...
properties
フィールドの詳細
もう1つの例を次に示します。簡単にするため、この例では各行の最初の2つのフィールドのみが表示されています。その他のフィールドは省略されています。
...
; 10 ...
b 3 ...
W 5 ...
7 8 ...
= 0 ...
...
文字 | 句読点 | 数字 | 大文字 | 小文字 | アルファ | 2進数 | 16進数。 |
---|---|---|---|---|---|---|---|
; | 1 | 0 | 0 | 0 | 0 | 10000 | 10 |
b | 0 | 0 | 0 | 1 | 1 | 00011 | 3 |
W | 0 | 0 | 1 | 0 | 1 | 00101 | 5 |
7 | 0 | 1 | 0 | 0 | 0 | 01000 | 8 |
= | 0 | 0 | 0 | 0 | 0 | 00000 | 0 |
2〜6列では、0
は「いいえ」、1
は「はい」を意味します。