C# における Tesseract 5 用のカスタムフォントトレーニングの方法

Tesseract 5でC#を使用してカスタムフォントをトレーニングする方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

デフォルトのTesseract英語モデルは現実世界の多くの入力を誤読します: 病院の手書きの受付フォーム、ビンテージブックのデジタイズ、ゲームスタジオの特注の装飾フォント、または汎用OCRエンジンが見たことのない業界特有の記号。 解決策は、Tesseractをそのフォントで自らトレーニングし、IronOCRが動作するあらゆる場所で配布可能な単一の.traineddataアーティファクトを生成することです。

このガイドでは、C# を使用した Tesseract 5 のカスタムフォントトレーニングを最初から最後まで解説します。WSL2 Ubuntu ツールチェーンのインストール、.box および .tif トレーニングファイルの .ttf または .otf からのレンダリング、そしてベース .traineddata に対して tesstrain を使用して eng.traineddata モデルを構築する手順を説明します。-CODE-559--@@から.traineddataモデルを構築し、その結果をIronOCRに読み込む手順を解説します。 一度トレーニングしたファイルは、Windows、macOS、Linux、およびDocker間で持ち運び可能です。

クイックスタート: C#であなたのトレーニング済みフォントファイルを使用する

UseCustomTesseractLanguageFile をトレーニング済みの .traineddata ファイルに指定して IronOCR を設定し、その後、標準の言語パックを使用する場合と同様に、任意の画像に対して Read を呼び出してください。

  1. IronOCR をNuGetパッケージマネージャでインストール

    PM > Install-Package IronOcr
  2. このコード スニペットをコピーして実行します。

    using IronOcr;
    
    var ocr = new IronTesseract();
    ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
    string text = ocr.Read(new OcrInput("image-with-special-font.png")).Text;
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronOCR を使い始めましょう無料トライアル

    arrow pointer

トレーニング環境をどのようにセットアップしますか?

IronOCRをどのようにインストールしますか?

NuGetを通じてIronOCRをインストールします:

Install-Package IronOcr

DLLパッケージはNuGetを使用できない場合の手動代替です。 基礎となるエンジンについては、Tesseract 5の機能ガイドカスタム言語リファレンスを参照してください。

WSL2とUbuntuをどのようにインストールおよび設定しますか?

WSL2 と Ubuntu のセットアップに関するチュートリアルを参照してください。

ご注意カスタム フォント トレーニングには Linux が必要です。

WSL2があれば十分です。トレーニングが完了すると、生成された .traineddata ファイルは、Windows、macOS、Linux、またはDocker上のIronOCRアプリに同梱されます。 配信の詳細については、Linux配信ガイドを参照してください。

UbuntuにTesseract 5をどのようにインストールしますか?

Tesseract 5をインストールするには、以下のコマンドを使用します:

sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
SHELL

tesseract-ocr パッケージは、認識を実行するエンジンです; libtesseract-dev は、tesstrainがモデルを構築するために必要なヘッダーを公開します。 トレーニング済みファイルが使用中になったら、Tesseract設定ガイドがランタイムの調整をカバーします。

トレーニングのためにフォントをどのように準備しますか?

どのフォントをダウンロードすべきですか?

このチュートリアルでは、AMGDTフォントを.otf形式で使用しています。

トレーニング用に赤い枠で強調表示された、ダウンロード済みのAMGDT Regular.ttfフォントファイルを表示するWindowsエクスプローラー

トレーニングするフォントを選ぶとき:

  • デフォルトの英語モデルですでに誤読されているフォントを選びます。 すでに認識されているフォントをトレーニングすることは時間の無駄です。
  • .traineddata をアプリケーションに同梱する場合、フォントのライセンスが再配布を許可していることを確認してください。
  • 装飾的、手書き、または業界特有のフォント(医療、法律、地図)はトレーニングによって最も精度を向上します。
  • 生産で実際に見るものと一致するトレーニングサンプルを提供し、解像度や照明を含めます。

ディスクドライブをどのようにマウントしますか?

作業スペースとしてD: ドライブをマウントします:

cd /
cd /mnt/d
cd /
cd /mnt/d
SHELL

WSL2はすべてのWindowsドライブを/mnt/の下にマウントするので、Windowsでファイルを編集し、同じセッションでトレーニングコマンドを実行できます。

フォントファイルをUbuntuフォントフォルダにどのようにコピーしますか?

Tesseractはトレーニング画像を構築するためにあなたのフォントでサンプルテキストをレンダリングするので、フォントはWindowsだけでなくLinux側にもインストールされている必要があります。 フォントファイルをUbuntuのフォントディレクトリ:/usr/share/fonts と /usr/local/share/fonts にコピーします。 最も簡単な方法は、ファイルエクスプローラーのアドレスバーに"\wsl$"と入力して Windows から Ubuntu のファイルシステムを参照し、そこから .ttf をドラッグして移動させることです。

Windows File Explorer showing \\wsl$ network path for accessing Ubuntu filesystem from Windows

Ubuntuフォントディレクトリに着地したら、フォントのコピーはこのように見えるはずです:

AMGDT font file being copied into the Ubuntu fonts folder and recognized by the system

宛先フォルダーへのアクセスが拒否された場合はどうしますか?

ファイルエクスプローラがコピーを拒否した場合、代わりにルートシェルから実行します:

cd /
su root
cd /c/Users/Admin/Downloads/'AMGDT Regular'
cp 'AMGDT Regular.ttf' /usr/share/fonts
cp 'AMGDT Regular.ttf' /usr/local/share/fonts
exit
cd /
su root
cd /c/Users/Admin/Downloads/'AMGDT Regular'
cp 'AMGDT Regular.ttf' /usr/share/fonts
cp 'AMGDT Regular.ttf' /usr/local/share/fonts
exit
SHELL

GitHubからトレーニングリポジトリをどのようにクローンしますか?

トレーニングパイプラインは3つのリポジトリに依存しています。 最初にチュートリアルラッパーをクローンし、その中に2つの上流のTesseractリポジトリをクローンし、出力フォルダーを作成します:

git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
SHELL
  • Tesseract_tutorialは、各トレーニングステップ(テキスト生成、画像レンダリング、トレーニングペア作成)を駆動するPythonスクリプトと構成ファイルをまとめています。
  • tesstrainは実際のトレーニングの実行を駆動するMakefileを含んでいます。
  • Tesseractには、カスタムトレーニングの初期モデルとして使用される標準の.traineddataファイルが含まれたtessdataフォルダが含まれています。
  • tesstrain/data には、生成された .box ファイル(文字のバウンディングボックス)、.tif 画像、および中間 LSTM チェックポイントがすべて格納されます。

ターミナルでクローンシーケンスがどのように見えるべきかは以下の通りです:

Terminal running the four git clone commands and creating the tesstrain data folder

カスタムのものと一緒に多言語パックを扱うには、国際的な言語ガイドを参照してください。

トレーニングファイルをどのように生成しますか?

split_training_text.pyスクリプトをどのように実行しますか?

Tesseract_tutorialフォルダーから実行します:

python split_training_text.py
python split_training_text.py
SHELL

このスクリプトは、トレーニングサンプルごとに 1 組の .box / .tif を生成し、それらを data フォルダに書き込みます。

スクリプトの実行がトレーニングペアを生成する様子は以下の通りです:

Terminal running split_training_text.py and generating .box and .tif files in the data folder

fontconfigの警告をどのように修正しますか?

Apexフォントの欠落やフォントディレクトリが空であるというfontconfigの警告が表示されているターミナル

Fontconfig warning: "/tmp/fonts.conf, line 4: empty font directory name ignored"の警告が表示された場合、fontconfigはフォントディレクトリを解決できません。 tesseract_tutorial/fonts.conf を編集して修正してください:

<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>

<dir>~/.fonts</dir>
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>

<dir>~/.fonts</dir>
XML

/etc/fontsにコピーします:

cp fonts.conf /etc/fonts
cp fonts.conf /etc/fonts
SHELL

次に、split_training_text.pyを同じパスに設定してください:

fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
PYTHON

いくつのトレーニングファイルを生成すべきですか?

デフォルトでは、スクリプトは100のトレーニングペアを生成します。 split_training_text.py の上部付近にあるカウントを変更してください:

トレーニングデータのサイズを制限するために、count=100 を設定し、lines 配列をスライスする Python コード

サイズガイダンス:

  • 100-500サンプルはパイプラインがエンドツーエンドで機能することを確認するのに十分です。
  • 1000-5000サンプルは生産精度の動作範囲です。
  • トレーニングテキストはフォントが認識するすべての文字を何度もカバーする必要があります。
  • より多くのサンプルがより長いトレーニング時間を意味します; あなたの精度目標に合った最小のカウントを選びます。

eng.traineddataファイルをどこでダウンロードしますか?

tessdata_best リポジトリから eng.traineddata をダウンロードし、Tesseract_tutorial/tesseract/tessdata ディレクトリに配置してください。

ベースモデルはトレーナーに言語的な文脈を提供します(どの文字列が妥当な単語を形成するか)、したがって、ゼロからトレーニングするよりもはるかに正確です。 トレーニングテキストと同じ言語のベースモデルを選びます。 問題が発生した場合は、カスタムOCR言語パックのトラブルシューティングガイドを参照してください。

カスタムフォントトレーニングデータファイルをどのように構築しますか?

tesstrainフォルダから実行します:

TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
SHELL
  • MODEL_NAMEはカスタムフォントの名前です(出力ファイル名に使用されます)。
  • START_MODEL は、上記でダウンロードしたベースの .traineddata です。
  • MAX_ITERATIONSはトレーニング実行をキャップします; より高い値は通常、エラーレートを低下させます。

Makefileで "Failed to Read Data "と表示されたら?

"データの読み取りに失敗しました"エラーを解決するには、Makefileをパッチします:

WORDLIST_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-word-dawg
NUMBERS_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-number-dawg
PUNC_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-punc-dawg

パッチはMakefileを実際の出力ディレクトリに向け、辞書ファイルを見つけることができるようにします。

どのように"Failed to Load Script Unicharset"を修正しますか?

langdata_lstm から Latin.unicharset をダウンロードし、tesstrain/data/langdata フォルダに配置してください。

.unicharset ファイルは、トレーナーが出力できる文字を定義しています。 フォントに含まれるすべての文字を網羅したファイルを使用してください。例えば、キリル文字フォントの場合は Cyrillic.unicharset、デーヴァナーガリー文字の場合は Devanagari.unicharset などです。

tesstrain が .traineddata ファイルを生成する際、正常なトレーニング実行の結果は以下のようになります:

tesstrain build pipeline running through training iterations and emitting the AMGDT.traineddata file

トレーニングデータファイルの精度をどのように検証しますか?

1000個のAMGDT.traineddataのトレーニング誤り率(BCER)は約5.77%に達しました。

反復2194~2298においてBCERが6.388%から5.771%へ改善したことを示すTesseractのトレーニングログ

IronOCRで学習済みモデルをテストするには、UseCustomTesseractLanguageFileをファイルに向け、サンプル画像を読み込んでください:

using IronOcr;

// Load the trained model; AutoOsd handles orientation
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Preprocess so the model sees clean glyphs
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");
input.EnhanceResolution(300);
input.DeNoise();

// Confidence reflects training quality
var result = ocr.Read(input);
Console.WriteLine($"Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;

// Load the trained model; AutoOsd handles orientation
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Preprocess so the model sees clean glyphs
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");
input.EnhanceResolution(300);
input.DeNoise();

// Confidence reflects training quality
var result = ocr.Read(input);
Console.WriteLine($"Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' Load the trained model; AutoOsd handles orientation
Dim ocr As New IronTesseract()
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata")
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd

' Preprocess so the model sees clean glyphs
Using input As New OcrInput()
    input.LoadImage("test-image-with-amgdt-font.png")
    input.EnhanceResolution(300)
    input.DeNoise()

    ' Confidence reflects training quality
    Dim result = ocr.Read(input)
    Console.WriteLine($"Text: {result.Text}")
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

Confidence プロパティは、ドキュメントごとのスコアです; もしきれいな入力でも低いままであれば、最も一般的な原因はトレーニングサンプルが少なすぎるか、スクリプトに合わないベースモデルです。 .traineddata の検証が完了したら、カスタム言語ファイルの読み込みに関する一般的なワークフローについては、カスタム言語ガイドを参照してください。

カスタムフォントトレーニングの重要ポイントは何ですか?

カスタムフォントのトレーニングは一度設定すれば完了します。対象のフォントから .box / .tif のペアを生成し、tesstrain を使用して .traineddata モデルを構築し、UseCustomTesseractLanguageFile を通じて読み込みます。 そこからIronOCRは、新しいモデルで画像を読み込み、標準の英語を読み込むのと全く同じ方法で行います。

IronOCRをカスタムTesseractモデルと使用する主な利点:

  • 標準のTesseractアーティファクトを再利用:tesstrainでビルド可能な.traineddataファイルは、変換なしでIronOCRで動作します。
  • クロスプラットフォームの出力:トレーニングにはLinux(またはWSL2)が必要ですが、トレーニングされたファイルはWindows、macOS、Linux、Dockerでアプリケーションの一部として出荷されます。
  • APIの他の部分と共に使用:カスタムフォントを複数の補助言語画像品質補正、およびDPI調整と組み合わせても、認識パスを変更しません。
  • 調整可能な精度:エラー率はトレーニングサンプルとイテレーション数の関数です。 両方のパラメータ(スクリプトのサンプル数と MAX_ITERATIONS)が公開されているため、Tesseract を離れることなく、トレーニング時間と BCER のトレードオフを調整できます。

より大きなパイプラインでは、進捗トラッキング非同期処理を検討してください。トレーニングされたモデルを多数のドキュメントで適用するときに便利です。

よくある質問

C#でカスタムトレーニングフォントファイルを使用するには?

わずか数行のコードで、カスタムトレーニングされたTesseractフォントファイルをIronOCRで使用することができます。IronTesseractインスタンスを作成し、.traineddataファイルへのパスを指定してUseCustomTesseractLanguageFile()を呼び出し、Read()メソッドを使用して特別なフォントを含む画像に対してOCRを実行するだけです。

OCR 用カスタムフォントのトレーニングにはどのような要件がありますか?

カスタムフォントトレーニングには、Linux環境(WindowsユーザーにはUbuntuのWSL2を推奨)、開発ライブラリとともにインストールされたTesseract 5、トレーニングしたいフォントファイル(.ttfまたは.otfフォーマットのいずれか)が必要です。Linuxで作成された.traineddataファイルはすべてのプラットフォームでIronOCRとシームレスに動作します。

標準的なOCRを使用する代わりに、なぜカスタムフォントをトレーニングする必要があるのですか?

カスタムフォントのトレーニングは、特定のフォント、特に標準のTesseractモデルとは大きく異なる装飾的なフォントや特殊なフォントのOCR精度を向上させます。IronOCRは、これらの学習されたフォントファイルを使用することで、標準のOCRモデルでは読み取りが困難な、これらのユニークなフォントを含む画像のテキストを正確に認識することができます。

異なるプラットフォーム間でカスタムトレーニングされたフォントを使用できますか?

トレーニング・プロセスにはLinuxが必要ですが、出来上がった.traineddataファイルはIronOCRのすべてのプラットフォームでシームレスに動作します。つまり、Linux上で一度トレーニングすれば、Windows、macOS、Linuxのデプロイメントでトレーニングされたデータファイルを使用することができます。

どのようなインストール方法が推奨されますか?

迅速なセットアップのために、IronOCR DLLを直接ダウンロードするか、NuGetパッケージマネージャを通してインストールすることができます。NuGetは依存関係を自動的に処理し、アップデートを容易にするので推奨される。IronOCRはTesseract 5の機能とカスタム言語の実装を包括的にサポートしています。

IronOCRは複数の言語をサポートしていますか?

IronOCRは複数言語をサポートしており、異なる言語でのテキスト認識を必要とするグローバルアプリケーションに対する多用途ツールです。

IronOCRは既存のアプリケーションに統合できますか?

IronOCRはC#を使用して既存のアプリケーションに簡単に統合できるよう設計されており、開発者がソフトウェアにOCR機能を少ない手間で追加できるようにします。

ドキュメント管理でIronOCRを使用する利点は何ですか?

IronOCRを使用することで、スキャンされた文書を検索可能かつ編集可能なテキストに変換し、手作業によるデータ入力を減らし、文書のアクセス性を向上させることでワークフローを効率化します。

IronOCRはデータ精度をどのように向上させますか?

IronOCRはその高度な認識アルゴリズムと画像補正機能により、信頼性が高く正確なテキスト抽出プロセスを保証します。

IronOCRの無料トライアルを利用できますか?

はい、Iron SoftwareはIronOCRの無料トライアルを提供しており、ユーザーが購入決定をする前にその機能と能力をテストできます。

Kannaopat Udonpant
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、Kannapatは北海道大学で環境資源の博士号を修了しました。博士号を追求する間に、彼はバイオプロダクションエンジニアリング学科の一部である車両ロボティクスラボラトリーのメンバーになりました。2022年には、C#のスキルを活用してIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。Kannapatは、IronPDFの多くのコードを執筆している開発者から直接学んでいるため、この仕事を大切にしています。同僚から学びながら、Iron Softwareでの働く社会的側面も楽しんでいます。コードやドキュメントを書いていない時は、KannapatはPS5でゲームをしたり、『The Last of Us』を再視聴したりしていることが多いです。
レビュー済み
Jeff Fritz
Jeffrey T. Fritz
プリンシパルプログラムマネージャー - .NETコミュニティチーム
Jeffはまた、.NETとVisual Studioチームのプリンシパルプログラムマネージャーです。彼は.NET Conf仮想会議シリーズのエグゼクティブプロデューサーであり、週に二回放送される開発者向けライブストリーム『Fritz and Friends』のホストを務め、テクノロジーについて話すことや視聴者と一緒にコードを書くことをしています。Jeffはワークショップ、プレゼンテーション、およびMicrosoft Build、Microsoft Ignite、.NET Conf、Microsoft MVPサミットを含む最大のMicrosoft開発者イベントのコンテンツを企画しています。
準備はできましたか?
Nuget ダウンロード 5,896,332 | バージョン: 2026.5 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronOcr
サンプルを実行 あなたの画像が検索可能なテキストになるのをご覧ください。