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

Windows開発者向けTesseract 5のカスタムフォントトレーニング

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

Tesseract 5のカスタムフォントトレーニングは、特定のフォントのOCR精度を向上させます。 このプロセスでは、エンジンのフォント特性を学習するためのトレーニングデータを作成します。 出来上がった.traineddataファイルはIronOCRと連携し、装飾フォントや特殊フォントを正確に認識します。

クイックスタート: C# で .traineddata フォント ファイルを使用する

カスタムトレーニングされたTesseractフォントファイルをわずか数行でIronOCRで使用することができます。 特殊フォントや装飾フォントの正確なOCRに最適です。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronOCR をインストールします

    PM > Install-Package IronOcr

  2. このコード スニペットをコピーして実行します。

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

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

IronOCRの最新版をダウンロードするには?

どのインストール方法を使用すべきですか?

IronOCR DLL をマシンに直接ダウンロードします。

なぜNuGetを代わりに使うのですか?

あるいは、NuGetからこのコマンドでインストールしてください:

Install-Package IronOcr

IronOCRはTesseract 5の機能カスタム言語実装を包括的にサポートしており、特殊なOCRの要件に最適です。


WSL2とUbuntuのインストールとセットアップ方法は?

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

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

トレーニングにはLinuxが必要ですが、出来上がった.traineddataファイルはすべてのプラットフォームでシームレスに動作します。 Linux の詳細なセットアップ手順については、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エンジンと開発ライブラリを提供します。 Tesseractの高度な設定オプションについては、詳細設定ガイドをご参照ください。

トレーニング用にどのフォントをダウンロードすればよいですか?

このチュートリアルでは、AMGDT フォントを使用しています。 フォント ファイルは .ttf または .otf のいずれかになります。 ダウンロードしたAMGDT Regular.ttfフォントファイルをトレーニング用に赤枠で強調表示したWindowsファイルエクスプローラー

トレーニング用のフォントを選択する場合

  • 標準的なTesseractモデルとは大きく異なるフォントを選択すること。
  • フォントの適切なライセンスの確保
  • 装飾的なフォント、手書きフォント、または特殊な業界フォントを考慮してください。
  • アプリケーションが本番環境で使用するフォントでテストしてください。

カスタム フォント トレーニング用のディスク ドライブをマウントするにはどうすればよいですか?

これらのコマンドを使用して、D:ドライブを作業スペースとしてマウントしてください:

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

これにより、Ubuntu WSL2環境からWindowsドライブに保存されたファイルを直接操作できるようになります。

フォント ファイルを Ubuntu フォント フォルダーにコピーするにはどうすればよいですか?

フォントファイルを以下のUbuntuディレクトリにコピーしてください:/usr/share/fonts/usr/local/share/fontsです。

ファイル エクスプローラーのアドレス バーに\\wsl$と入力して、Ubuntu のファイルにアクセスします。

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

デスティネーション フォルダーへのアクセスが拒否された場合はどうすればよいですか?

アクセス拒否エラーが発生した場合は、コマンドラインを使用してファイルをコピーしてください:

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からtesseract_tutorialをクローンするには?

このコマンドを使用して、tesseract_tutorialリポジトリをクローンします:

git clone https://github.com/astutejoe/tesseract_tutorial.git
git clone https://github.com/astutejoe/tesseract_tutorial.git
SHELL

このリポジトリには、トレーニングプロセスに不可欠なPythonスクリプトと設定ファイルが含まれています。 スクリプトは、フォントトレーニングにおける多くの手動ステップを自動化します。

GitHubからtesstraintesseractをクローンするにはどうすればよいですか?

tesseract_tutorialディレクトリに移動し、 tesstrainおよびtesseractリポジトリのクローンを作成します。

git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
SHELL
  • tesstrainには、.traineddataファイルを作成するためのMakefileが含まれています。
  • tesseractは、カスタムフォントのトレーニング中に参照として使用されたオリジナルの.traineddataファイルを含むtessdataフォルダを含んでいます。

複数の言語パックとカスタムトレーニングデータを使用する場合の詳細については、国際言語ガイドを参照してください。

出力を保存するための"data"フォルダを作成するにはどうすればよいですか?

tesseract_tutorial/tesstrain内にデータフォルダを作成します:

mkdir tesseract_tutorial/tesstrain/data
mkdir tesseract_tutorial/tesstrain/data
SHELL

このフォルダには、.box、.tif、および中間トレーニング成果物を含む、生成されたすべてのトレーニングファイルが保存されます。

split_training_text.pyを実行するにはどうすればよいですか?

tesseract_tutorialフォルダに戻り、このコマンドを実行します:

python split_training_text.py
python split_training_text.py
SHELL

split_training_text.pyを実行すると、データフォルダに.box.tifファイルが作成されます。

Fontconfigの警告を修正するにはどうすればよいですか?

Terminal showing fontconfig warnings about missing Apex font and empty font directory errors. 警告 Fontconfig warning:"/tmp/fonts.conf, line 4: empty font directory name ignored"という警告が表示された場合は、フォントディレクトリがないことを示しています。 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を設定し、行の配列をスライスするPythonコード

プロダクション品質のトレーニング

  • テスト用に100~500のサンプルからスタート
  • 精度を高めるため、1000~5000サンプルを使用してください。
  • 必要なすべての文字をカバーする多様なテキストサンプルを含む
  • トレーニング時間と要求精度のバランス

eng.traineddataはどこでダウンロードできますか?

このリポジトリからeng.traineddataダウンロードし、 tesseract_tutorial/tesseract/tessdataに配置します。

ベースモデルは、認識精度を向上させる言語的コンテキストを提供します。 ターゲット言語に合ったベースモデルを選択します。 カスタム言語パックの問題のトラブルシューティングについては、カスタム OCR 言語パック ガイドを参照してください。

カスタムフォント.traineddataを作成するにはどうすればよいですか?

tesstrainフォルダに移動し、WSL2でこのコマンドを使用してください:

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"を修正しますか?

Latin.unicharset tesstrain/data/langdataフォルダーに挿入します。 Latin.unicharset<//code> こちらを検索してください。

unicharsetファイルは、あなたの言語またはスクリプトの文字セットを定義します。 フォントの文字範囲に合っていることを確認してください。

作成された.traineddataの正確性を確認するにはどうすればよいですか?

1000個の.boxファイルと.tifファイル、および3000回の学習反復により、出力AMGDT.traineddataは約5.77%の最小学習エラー率(BCER)を達成しました。

反復2194-2298にわたってBCERが6.388%から5.771%に向上したことを示すTesseractトレーニングログ

学習したモデルをIronOCRでテストする:

using IronOcr;

// Initialize IronOCR with custom trained data
var ocr = new IronTesseract();

// Load your custom trained font
ocr.UseCustomTesseractLanguageFile(@"path\to\AMGDT.traineddata");

// Configure for optimal results
ocr.Configuration.BlackListCharacters = "";
ocr.Configuration.WhiteListCharacters = "";
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Process an image with your custom font
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");

// Optional: Apply filters if needed
input.EnhanceResolution(300);
input.DeNoise();

// Perform OCR
var result = ocr.Read(input);
Console.WriteLine($"Recognized Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;

// Initialize IronOCR with custom trained data
var ocr = new IronTesseract();

// Load your custom trained font
ocr.UseCustomTesseractLanguageFile(@"path\to\AMGDT.traineddata");

// Configure for optimal results
ocr.Configuration.BlackListCharacters = "";
ocr.Configuration.WhiteListCharacters = "";
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Process an image with your custom font
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");

// Optional: Apply filters if needed
input.EnhanceResolution(300);
input.DeNoise();

// Perform OCR
var result = ocr.Read(input);
Console.WriteLine($"Recognized Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' Initialize IronOCR with custom trained data
Dim ocr As New IronTesseract()

' Load your custom trained font
ocr.UseCustomTesseractLanguageFile("path\to\AMGDT.traineddata")

' Configure for optimal results
ocr.Configuration.BlackListCharacters = ""
ocr.Configuration.WhiteListCharacters = ""
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd

' Process an image with your custom font
Using input As New OcrInput()
    input.LoadImage("test-image-with-amgdt-font.png")

    ' Optional: Apply filters if needed
    input.EnhanceResolution(300)
    input.DeNoise()

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

本番アプリケーションにカスタムフォントを実装するには、カスタム言語ファイルの使用に関するガイドをご覧ください。

さらに詳しい情報や参考資料については、チュートリアルをご覧ください: YouTubeビデオ

よくある質問

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の機能とカスタム言語の実装を包括的にサポートしています。

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,384,824 | バージョン: 2026.2 リリース