高度な読み取りのためのOCR設定
IronOCR は、標準的な OCR を超えた ReadPhoto などの高度なスキャン読み取り手法を提供しています。 これらの手法は IronOcr.Extensions.AdvancedScan パッケージによって強化されています。 これらの手法がテキストを処理する方法を微調整するために、IronOCR は開発者に文字のホワイトリスト、ブラックリスト、バーコード検出、データテーブル読み取りなどを完全にコントロールする TesseractConfiguration クラスを公開しています。
この記事では、高度な読み取りのために利用可能な TesseractConfiguration プロパティと、実際のシナリオでの OCR 設定に関する実用的な例を紹介しています。
クイックスタート: OCR出力を文字ホワイトリストに制限する
Read を呼び出す前に TesseractConfiguration に WhiteListCharacters を設定します。 ホワイトリストに含まれていない文字はすべて結果から自動的に削除され、後処理なしでノイズが除去されます。
-
IronOCR をNuGetパッケージマネージャでインストール
-
このコード スニペットをコピーして実行します。
var result = new IronTesseract() { Configuration = new TesseractConfiguration { WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- " } }.Read(new OcrInput("image.png")); Console.WriteLine(result.Text); -
実際の環境でテストするためにデプロイする
今日プロジェクトで IronOCR を使い始めましょう無料トライアル
高度な読み取りのためのOCRの設定方法
- NuGetからIronOCRをインストール
- IronOcr.Extensions.AdvancedScanパッケージをインストール
TesseractConfigurationのプロパティ、例えばWhiteListCharactersとReadBarCodesを設定しますOcrInputを使用して入力画像を読み込みます- 高度なメソッド
ReadPhoto、ReadLicensePlate、またはReadPassportを使用して画像を読み取ります
TesseractConfigurationプロパティ
TesseractConfiguration クラスは、OCR 動作をカスタマイズするための次のプロパティを提供します。 これらは IronTesseract.Configuration を通じて設定されます。
| プロパティ | タイプ | 翻訳内容 |
|---|---|---|
WhiteListCharacters |
string | この文字列に含まれる文字のみがOCR出力で認識されます。他のすべての文字は除外されます。 |
BlackListCharacters |
string | この文字列に含まれる文字は積極的に無視され、OCR出力から除去されます。 |
ReadBarCodes |
bool | OCR処理中にドキュメント内のバーコードを検出するかどうかを有効/無効にします。 |
ReadDataTables |
bool | Tesseractを使用してドキュメント内のテーブル構造を検出するかどうかを有効/無効にします。 |
PageSegmentationMode |
TesseractPageSegmentationMode | Tesseractが入力画像をどのようにセグメント化するかを決定します。オプションにはAutoOsd、Auto、SingleBlock、SingleLine、SingleWordなどがあります。 |
RenderSearchablePdf |
bool | 有効にすると、OCR出力は見えないテキスト層を持つ検索可能なPDFとして保存できます。 |
RenderHocr |
bool | 有効にすると、OCR出力にさらなる処理またはエクスポートのためのhOCRデータが含まれます。 |
TesseractVariables |
Dictionary<string, object> | きめ細かい制御のための低レベルの Tesseract 構成変数への直接アクセスを提供します。 |
TesseractVariables 辞書はさらに進んで、ハイレベル プロパティが不十分な場合の数百の基礎となる Tesseract エンジン パラメータを公開しています。
以下の例では、文字ホワイトリスト化から始めて、各プロパティグループについて説明します。
ナンバープレートのためのキャラクターホワイトリストの設定
WhiteListCharacters の一般的な使用例は、OCR 出力を大文字、数字、ハイフン、スペースのようなナンバープレートに現れる文字だけに制限することです。 予想される文字セット外のものをエンジンに無視させることによってノイズを除去し、精度を向上させます。
入力
次の車両登録記録は、大文字のテキスト、小文字のテキスト、特殊記号 (#、|, `*' という構成です。
BlackListCharacters は、, and*` といった既知のノイズ シンボルを積極的に排除することによってホワイトリストを補完します。
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading.cs
using IronOcr;
// Initialize the Tesseract OCR engine
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
// Whitelist only characters that appear on license plates
WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",
// Blacklist common noise characters
BlackListCharacters = "`~@#$%&*",
};
var ocrInput = new OcrInput();
// Load the input image
ocrInput.LoadImage("advanced-input.png");
// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);
// Print the filtered text result to the console
Console.WriteLine(results.Text);
Imports IronOcr
' Initialize the Tesseract OCR engine
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
' Whitelist only characters that appear on license plates
.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- ",
' Blacklist common noise characters
.BlackListCharacters = "`~@#$%&*"
}
Dim ocrInput As New OcrInput()
' Load the input image
ocrInput.LoadImage("advanced-input.png")
' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)
' Print the filtered text result to the console
Console.WriteLine(results.Text)
出力
結果にホワイトリストフィルタリングが明確に見えます:
- "Plate: ABC-1234" は "P ABC-1234" になります。 小文字の単語 "late:" は省略され、プレート番号は正確に保持されます。
- "VIN: 1HGBH41JXMN109186" は "VIN 1HGBH41JXMN109186" になります。 コロンは省略されますが、大文字のVINと完全な番号は保持されます。
- "Owner: john.doe@email.com" は "O" になります。 メール全体の小文字と句読点が削除されます。
-地域: CA-90210 | Zone #5" は "R CA-90210 Z 5" になります。 パイプ (
|) and hash (#) は除去され、大文字のアルファベットと数字が残ります。 - *"Fee: $125.00 + tax" は "F 12500"** になります。 ドル記号、小数点、プラス記号、および小文字の "tax" はすべて削除されます。
- "Ref: ~record_v2^final" は "R 2" になります。 チルダ (
~)、アンダースコア、キャレット (^)、およびすべての小文字の文字が削除されます。
同じ WhiteListCharacters と BlackListCharacters のアプローチは、ナンバープレートだけでなく、任意のドキュメント タイプに機能します。 次のセクションでは、読み取り処理を拡張して、同じパスでバーコードとテーブル構造を検出する方法を示します。
バーコードとデータテーブルの読み取りを設定
IronOCRは、テキストと一緒にドキュメント内のバーコードおよび構造化テーブルを検出できます。 これらの機能は TesseractConfiguration を介して制御されます:
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-3.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
// Enable barcode detection within documents
ReadBarCodes = true,
// Enable table structure detection
ReadDataTables = true,
};
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.ReadBarCodes = True, ' Enable barcode detection within documents
.ReadDataTables = True ' Enable table structure detection
}
- ReadBarCodes:
trueに設定すると、IronOCR がテキストに加えてドキュメント内のバーコードをスキャンします。 バーコードが予期されない場合は、falseに設定してバーコード検出をスキップし、処理速度を速めます。 - ReadDataTables:
trueに設定すると、Tesseract はドキュメント内の表構造を検出して保持しようとします。 これは請求書、レポート、その他の表形式のドキュメントに役立ちます。
これらのオプションは、複雑なドキュメントから抽出される内容を正確に制御するために WhiteListCharacters と BlackListCharacters と組み合わせることができます。
フィルタリングと検出は抽出対象を制御するものであり、レイアウトの解釈は別の問題である。 次のセクションでは、ドキュメントタイプに適した PageSegmentationMode の選択方法を説明します。
ページセグメンテーションモードの制御
PageSegmentationMode は、認識の前に Tesseract が入力画像をセグメント化する方法を指示します。 特定のレイアウトに対して誤ったモードを選択すると、エンジンがテキストを誤って読み取ったり、完全にスキップしたりする原因となります。
| モード | 使用例 |
|---|---|
AutoOsd |
自動レイアウト分析と方向とスクリプト検出 |
Auto |
OSDなしの自動レイアウト分析(デフォルト) |
SingleColumn |
画像が単一のテキスト列であると仮定します |
SingleBlock |
画像が単一の均一なテキストブロックであると仮定します |
SingleLine |
画像が単一のテキスト行であると仮定します |
SparseText |
任意の順序で可能な限り多くのテキストを発見します |
単一行を含むラベルまたはバナーの場合、SingleLine はマルチブロック分析を排除し、速度と精度の両方を向上させます。
入力
single-line-label.png は、太字の Courier テキストがちょうど 1 行ある狭い配送ラベルです: SHIPPING LABEL: TRK-2024-XR9-001。
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-4.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SingleLine,
};
using OcrInput input = new OcrInput();
input.LoadImage("single-line-label.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.PageSegmentationMode = TesseractPageSegmentationMode.SingleLine
}
Using input As New OcrInput()
input.LoadImage("single-line-label.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
不規則なテキスト配置のスキャンページの場合、SparseText は Auto よりも多くのコンテンツを回復します。
入力
receipt-scan.png は、4 品目 (コーヒー、マフィン、ジュース、グラノーラバー) あるコーナーマーケットのレシートで、破線の区切り線、小計、税、合計があります。 これは、固定ブロック分割では水平方向の異なる位置にあるエントリが欠落してしまうタイプのレイアウトです。
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-5.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
PageSegmentationMode = TesseractPageSegmentationMode.SparseText,
};
using OcrInput input = new OcrInput();
input.LoadImage("receipt-scan.png");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronTesseract
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.PageSegmentationMode = TesseractPageSegmentationMode.SparseText
}
Using input As New OcrInput()
input.LoadImage("receipt-scan.png")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
ドキュメントの種類に合わせてレイアウト分割を調整したら、次のステップは後続処理のための出力フォーマットを制御することです。
検索可能なPDFおよびhOCR出力を生成
RenderSearchablePdf と RenderHocr は、Plain Text の結果とともに IronOCR が生成する出力フォーマットを制御します。
RenderSearchablePdf は、元の画像の上に見えないテキストレイヤーを埋め込むことで、ユーザーが検索してテキストをコピーできる PDF を生成しながら、スキャンされた画像を可視に保ちます。 これはドキュメントアーカイブワークフローの標準出力形式です。
入力
scanned-document.pdf は、IronOCR Solutions Ltd. からの 1 ページのビジネスレターで、日付は 2024 年 3 月 15 日、参照番号 DOC-2024-OCR-0315 です。 結果は searchable-output.pdf として保存されます。
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-6.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
RenderSearchablePdf = true,
};
using OcrInput input = new OcrInput();
input.LoadPdf("scanned-document.pdf");
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronTesseract
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.RenderSearchablePdf = True
}
Using input As New OcrInput()
input.LoadPdf("scanned-document.pdf")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable-output.pdf")
End Using
出力
出力は入力と見た目は全く同じですが、非表示のテキストレイヤーを含むPDFファイルです。 searchable-output.pdf を開いて Ctrl+F を使用して、埋め込まれたテキストが検索可能でコピー可能であることを確認します。
RenderHocr は、hOCR ドキュメントで、HTML ファイルとしてテキストコンテンツと各単語のバウンディングボックス座標をエンコードします。 これは、例えば墨消しエンジンや文書レイアウト分析など、下流のツールで単語の正確な位置決めが必要な場合に役立ちます。
入力
document-page.png は、見出し"2024年第1四半期の要約"と収益、営業費用、成長ドライバーをカバーする2つの段落の会計データを含む文書ページです。 結果は output.html として保存されます。
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-7.cs
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
RenderHocr = true,
};
using OcrInput input = new OcrInput();
input.LoadImage("document-page.png");
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("output.html");
Imports IronTesseract
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.RenderHocr = True
}
Using input As New OcrInput()
input.LoadImage("document-page.png")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("output.html")
End Using
出力
output.html は、認識される各単語をバウンディングボックス座標とともにエンコードします。 ファイルをブラウザで開いてhOCR構造を検査するか、レイアウト解析や墨消しのために下流のツールに渡してください。
すべての3つの出力形式(プレーンテキスト、検索可能なPDF、およびhOCR)を単一の読み取り呼び出しから取得する必要がある場合、両方のフラグを同時に有効にすることができます。
これらの出力フラグは、ラテン文字以外の文字体系を含む、読み込まれる言語に関係なく機能します。次のセクションでは、日本語テキストに文字フィルタリングを適用する方法を示します。
国際文書向けUnicode文字フィルタリング
中国語、日本語、韓国語の国際文書の場合、WhiteListCharacters と BlackListCharacters プロパティは Unicode 文字とともに機能します。 これにより、日本語でひらがなとカタカナのみのスクリプトに出力を制限することが可能になります。
入力
文書には、タイトル (テスト)、濁点の異体字 (プ、デ) を含むひらがなとカタカナの混合日本語文、ブラックリストに登録されたノイズ記号 (★、■) と漢字 (価格) を含む価格行、およびブラックリストに登録された別の記号 (§)、追加の漢字 (購入)、追加の濁点の異体字 (プ、デ)、および基本カタカナ (メモ、アール) を含むメモ行が含まれています。 ホワイトリストでは、基本ひらがな、基本カタカナ、数字、および一般的な日本語の句読点のみが通過します。 3つの騒音シンボルは明確にブラックリストに登録されている。
ひらがなとカタカナの Unicode 文字範囲は WhiteListCharacters に文字列リテラルとして渡され、ノイズシンボルは BlackListCharacters にリストされます。
:path=/static-assets/ocr/content-code-examples/how-to/ocr-configurations-for-advanced-reading-jp.cs
using IronOcr;
using System.IO;
IronTesseract ocr = new IronTesseract();
ocr.Configuration = new TesseractConfiguration
{
// Whitelist only Hiragana, Katakana, numbers, and common Japanese punctuation
WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" +
"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" +
"0123456789、。?!()¥ー",
// Blacklist common noise/symbols you want to ignore
BlackListCharacters = "★■§",
};
var ocrInput = new OcrInput();
// Load Japanese input image
ocrInput.LoadImage("jp.png");
// Perform OCR on the input image with ReadPhoto method
var results = ocr.ReadPhoto(ocrInput);
// Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text);
// You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt");
Imports IronOcr
Imports System.IO
Dim ocr As New IronTesseract()
ocr.Configuration = New TesseractConfiguration With {
.WhiteListCharacters = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" &
"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン" &
"0123456789、。?!()¥ー",
.BlackListCharacters = "★■§"
}
Dim ocrInput As New OcrInput()
' Load Japanese input image
ocrInput.LoadImage("jp.png")
' Perform OCR on the input image with ReadPhoto method
Dim results = ocr.ReadPhoto(ocrInput)
' Write the text result directly to a file named "output.txt"
File.WriteAllText("output.txt", results.Text)
' You can add this line to confirm the file was saved:
Console.WriteLine("OCR results saved to output.txt")
出力
フィルタリングされた出力全体は、 jp-output.txtというテキストファイルとして入手できます。
ホワイトリストには基本的なひらがなとカタカナの文字のみが含まれているため、プ(pu)やデ(de)などの派生的な有声記号は除外されます。 価格(price)や購入(purchase)などの漢字も、ホワイトリストに登録された文字セットに含まれていないため除外されます。 § のようなブラックリストに載っている記号は、ホワイトリストにかかわらず積極的に除去されます。
次はどこへ行くべきでしょうか?
高度な読解シナリオ向けにIronOCRを設定する方法が理解できたので、以下を試してみてください。
パスポートやナンバープレートなどの特定の種類の書類を読み取る
- スタンドアロンのOCRユースケースとしてのバーコードおよびQRコードの読み取り
- 処理結果からhOCRおよび検索可能なPDFをエクスポートする
本番環境で使用する場合は、ライセンスを取得することを忘れないでください。
よくある質問
IronOCRにおけるTesseractConfigurationとは何ですか?
IronOCRのTesseractConfigurationを使用すると、ユーザーはOCR設定をカスタマイズでき、文字のホワイトリスト、BarCode読み取り、多言語サポートなどの高度な読み取り機能を利用できます。
IronOCRで文字のホワイトリストを設定するにはどうすればよいですか?
IronOCRでは、TesseractConfigurationを使用して文字のホワイトリストを設定できます。これにより、OCRエンジンが認識すべき文字を指定することができ、ナンバープレートの読み取りなどのタスクに役立ちます。
IronOCRはBARCODEやデータ表を読み取ることができますか?
はい、IronOCRは、TesseractConfigurationプロパティの特定の設定を調整することで、BarCodeやデータテーブルを読み取るように構成でき、正確なOCRデータ抽出が可能です。
IronOCRは、中国語、日本語、韓国語などの国際言語に対応していますか?
IronOCRは、多言語対応のTesseractConfigurationオプションを通じて、中国語、日本語、韓国語を含む国際言語をサポートしています。
IronOCRで高度なOCR設定を使用するメリットは何ですか?
IronOCRの高度なOCR設定を活用することで、より正確かつ効率的なテキスト認識が可能となり、言語固有のテキスト認識や構造化データの抽出といった特殊なタスクに対応できます。
特定のOCRタスクに合わせてIronOCRを最適化することは可能ですか?
はい、IronOCRは、文字のホワイトリスト設定やBARCODE・表の認識機能の有効化といった設定を行うことで、特定のOCRタスク向けに最適化でき、対象となるアプリケーションでのパフォーマンスを向上させることができます。
IronOCRで多言語サポートを有効にするにはどうすればよいですか?
IronOCRで多言語対応を有効にするには、TesseractConfigurationの言語設定を調整することで、OCRエンジンが複数の言語のテキストを認識できるようにします。
文字のホワイトリストとは何ですか?また、IronOCRではどのように使用されますか?
IronOCRの文字ホワイトリストは、OCRエンジンが認識するように設定された特定の文字のリストであり、数字や特定のテキストパターンの読み取りなど、特定のタスクに最適です。
IronOCRは構造化データ形式の読み取りに使用できますか?
はい、IronOCRはBARCODEや表などの構造化データ形式を読み取り、処理するように設定可能です。これにより、様々なデータ抽出ニーズに対応する多機能なOCR機能を提供します。
IronOCRでは、高度なテキスト認識のためにどのような設定が利用できますか?
IronOCRは、文字のホワイトリスト、多言語対応、BarCode認識などの設定機能を提供し、特定の要件に合わせた高度なテキスト認識機能を強化します。

