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 からレンダリングし、ベース eng.traineddata に対して tesstrain.traineddata モデルを作成し、その結果を IronOCR に読み込みます。 一度トレーニングしたファイルは、Windows、macOS、Linux、およびDocker間で持ち運び可能です。

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

トレーニングされた .traineddata ファイルを UseCustomTesseractLanguageFile に指示して 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 フォントを .ttf または .otf 形式で使用しています。

Windowsファイルエクスプローラーにこのトレーニング用のダウンロードされたAMGDT Regular.ttfフォントファイルが赤色のボックスでハイライトされています

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

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

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

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

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

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

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

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

Windows から Ubuntu ファイルシステムにアクセスするための \\wsl$ ネットワークパスを表示する Windows ファイルエクスプローラー

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

AMGDT フォントファイルが Ubuntu のフォントフォルダーにコピーされ、システムに認識される様子

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

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

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 チェックポイントがすべて到着する場所です。

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

4 つの git clone コマンドを実行し、tesstrain の data フォルダを作成しているターミナル

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

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

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

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

python split_training_text.py
python split_training_text.py
SHELL

スクリプトは、トレーニング サンプルごとに 1 つの .box / .tif ペアを生成し、データフォルダに書き込みます。

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

split_training_text.py を実行し、data フォルダに .box および .tif ファイルを生成しているターミナル

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

Apexフォントの欠落および空のフォントディレクトリエラーに関する警告を表示するターミナル

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

<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.co/nf /etc/fonts
cp fonts.co/nf /etc/fonts
SHELL

次に split_training_text.py を同じパスに指示します。

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

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

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

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

サイズガイダンス:

  • 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 ファイルを生成する際の成功したトレーニング実行の外観は次のとおりです:

トレーニングの反復を実行し、AMGDT.traineddata ファイルを出力している tesstrain ビルドパイプライン

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

1000 .box.tif ファイルおよび 3000 トレーニング イテレーションを使用すると、出力 AMGDT.traineddata は約 5.77% のトレーニング エラー率 (BCER) に達します。

Tesseractのトレーニングログが、反復2194-2298でのBCERの改善を6.388%から5.771%まで示しています

IronOCR でトレーニングされたモデルをテストするには、UseCustomTesseractLanguageFile をファイルに指示し、サンプル画像を読み取ります。

:path=/static-assets/ocr/content-code-examples/how-to/ocr-custom-font-training-13.cs
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 プロパティは文書ごとのスコアです; もしきれいな入力でも低いままであれば、最も一般的な原因はトレーニングサンプルが少なすぎるか、スクリプトに合わないベースモデルです。 カスタム言語ガイドを参照して、任意のカスタム言語ファイルの読み込みの一般的なワークフローを確認してください。

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

カスタムフォントをトレーニングするのは一度きりのセットアップです: ターゲットフォントから .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 ダウンロード 6,151,372 | バージョン: 2026.7 リリースされたばかり
Still Scrolling Icon

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

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