A PHP Error was encountered

Severity: Notice

Message: Undefined index: extension

Filename: libraries/PostRender.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/libraries/PostRender.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/PostRender.php
Line: 125
Function: {closure}

File: /var/www/ironpdf.com/application/libraries/PostRender.php
Line: 66
Function: render_view_with_translated_links

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: extension

Filename: libraries/PostRender.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/libraries/PostRender.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/PostRender.php
Line: 125
Function: {closure}

File: /var/www/ironpdf.com/application/libraries/PostRender.php
Line: 66
Function: render_view_with_translated_links

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

.NETテキスト認識のための OCR とコンピューター ビジョン | IronOCR フッターコンテンツにスキップ
IRONOCRの使い方

コンピュータビジョンによるOCRがテキスト認識精度を向上させる仕組み

画像からテキストを抽出するのは、文書が曲がっていたり、色あせていたり、照明が不十分な状態で撮影されるまでは、簡単なように聞こえます。 そこで、コンピュータ・ビジョンが、光学式文字認識を脆弱なプロセスから信頼性の高いプロセスに変えます。 データ抽出の前にインテリジェントな画像分析を適用することで、OCRシステムは、通常であれば文字化けした結果が得られるスキャン文書において、人間レベルの性能に迫る認識精度を達成することができます。

コンピュータビジョンを使用したOCRは、デジタル変革イニシアチブの基盤となる技術となっており、さまざまな種類の文書で手作業によるデータ入力を排除しています。このガイドでは、これらの技術を統合して、.NETアプリケーションのテキスト認識を劇的に向上させる方法について説明します。 低品質なスキャン画像を補正する前処理フィルターから、最新のOCRエンジンを支えるニューラルネットワークアーキテクチャまで、これらの概念を理解することで、現実世界の入力画像を適切に処理できる文書処理システムを構築できるようになります。

以下のコード例に沿って作業するには、 NuGet経由でIronOCRをインストールしてください。

dotnet add package IronOcr
dotnet add package IronOcr
SHELL

または、 NuGetパッケージ マネージャー コンソールを使用してください。

Install-Package IronOcr
Install-Package IronOcr
SHELL

インストールする前に、 IronOCRのNuGetパッケージページにアクセスして最新バージョンを確認してください。

コンピュータ ビジョンと OCR の関係は何ですか?

OCRは特に、画像ファイル内の印刷または手書きのテキストを機械エンコードされたテキストに変換することに焦点を当てています。 光学文字認識は、コンピュータビジョンにおける特殊な応用分野として機能し、画像解析やパターン認識と同じ多くの基礎技術を利用している。

最新のOCRパイプラインは、相互に接続された3つのステージで構成されています。 テキスト検出は、スキャン画像内の個々の文字を含むテキスト領域を識別し、これらの領域を背景、グラフィック、その他の視覚的要素から分離します。 画像前処理では、検出された領域を強調し、歪みを補正してコントラストを向上させ、文字画像をより識別しやすくします。 最後に、文字認識では、パターンマッチングとニューラルネットワーク推論を適用して、保存されている各グリフの視覚表現を対応するデジタルテキストに変換します。

従来のOCR技術は、これらの段階のいずれかが不完全な入力に遭遇した場合に苦労していました。 また、低解像度の入力画像や背景のパターンが印刷された文書では、完全に失敗することがよくあります。 コンピュータビジョン技術は、各パイプライン段階の適応性と回復力を高めることでこれらの限界に対処し、ビジネス文書、銀行取引明細書、さらには手書きのメモに至るまで、あらゆる文書の認識を成功させることを可能にする。

.NETプロジェクトでOCRが動作するのを最も早く確認する方法は、基本的な認識テストを実行することです。

using IronOcr;

// Initialize the optical character reader
var ocr = new IronTesseract();

// Load scanned document or image file
using var input = new OcrInput();
input.LoadImage("document.png");

// Perform text recognition and data extraction
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;

// Initialize the optical character reader
var ocr = new IronTesseract();

// Load scanned document or image file
using var input = new OcrInput();
input.LoadImage("document.png");

// Perform text recognition and data extraction
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr

' Initialize the optical character reader
Dim ocr As New IronTesseract()

' Load scanned document or image file
Using input As New OcrInput()
    input.LoadImage("document.png")

    ' Perform text recognition and data extraction
    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

上記のコードは、 IronOCRを使用した最もシンプルなOCR ワークフローを示しています。 IronTesseract クラスは Tesseract 5 エンジンのマネージド ラッパーを提供し、OcrInput は画像ファイルの読み込みとフォーマット変換を処理します。 整然とした書式のテキスト文書であれば、この基本的な光学文字認識方式で十分な場合が多い。 しかし、実際にスキャンされた文書がそのままの状態で届くことは稀であり、テキストを正確に抽出するためには前処理が不可欠となります。

入力

 IronOCRを使用したテキスト認識の精度をコンピュータビジョンによる OCR で向上させる方法: 画像 1 - サンプル入力画像

出力

 IronOCRを使用したテキスト認識の精度をコンピュータビジョンによる OCR で向上させる方法: 画像 2 - コンソール出力

画像の前処理はテキスト認識をどのように向上させますか?

画像前処理は、OCRエンジンが画像を分析する前に、コンピュータビジョン演算を適用して入力画像の品質を向上させる処理です。 これらの変換は、OCR失敗の最も一般的な原因である回転、ノイズ、低コントラスト、不十分な解像度に対処します。 それぞれの前処理技術は、特定の画像欠陥をターゲットにしており、戦略的に組み合わせることで、そうでなければ読めない印刷文書やスキャン画像を救済することができます。

デスクウイングは、書類を斜めにスキャンした際に発生する回転方向のずれを補正します。 光学式文字認識ソフトウェアは、テキスト行が水平に進むことを想定しているため、わずかな回転でもOCRの精度に大きく影響します。 傾き補正操作は、テキストの行の角度を分析し、コンテンツを揃えるために補正回転を適用します。

ノイズリダクションは、デジタルノイズ、斑点、スキャナーによって生じる歪みなど、個々の文字と誤認される可能性のある要素を除去します。 背景パターン、ダストマーク、圧縮アーチファクトはすべて、原画の正確な文字セグメンテーションを妨げるノイズとなります。

二値化とは、画像を純粋な白黒に変換し、色情報やグレースケールのグラデーションを除去する処理です。 この単純化は、認識エンジンが印刷されたテキストと背景をより明確に区別するのに役立ちます。特に、色紙や色あせた印刷の文書では、文字の識別が困難になります。

解像度を向上させると、画質の低いスキャン画像や写真の画素密度が高まります。解像度が高くなることで、OCRソフトウェアが分析できる詳細情報が増え、似たような文字を区別する能力が向上し、画質の劣化した入力画像でも認識精度を高めることができます。

using IronOcr;

var ocr = new IronTesseract();

// Load poor quality scan for document processing
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

// Apply preprocessing filters for improved accuracy
input.Deskew();                   // Correct rotational skew in scanned image
input.DeNoise();                  // Remove digital artifacts from input
input.Binarize();                 // Convert to black and white for text extraction
input.EnhanceResolution(300);     // Boost to 300 DPI for single character clarity

OcrResult result = ocr.Read(input);
Console.WriteLine($"Extracted: {result.Text}");
using IronOcr;

var ocr = new IronTesseract();

// Load poor quality scan for document processing
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

// Apply preprocessing filters for improved accuracy
input.Deskew();                   // Correct rotational skew in scanned image
input.DeNoise();                  // Remove digital artifacts from input
input.Binarize();                 // Convert to black and white for text extraction
input.EnhanceResolution(300);     // Boost to 300 DPI for single character clarity

OcrResult result = ocr.Read(input);
Console.WriteLine($"Extracted: {result.Text}");
Imports IronOcr

Dim ocr As New IronTesseract()

' Load poor quality scan for document processing
Using input As New OcrInput()
    input.LoadImage("low-quality-scan.jpg")

    ' Apply preprocessing filters for improved accuracy
    input.Deskew()                   ' Correct rotational skew in scanned image
    input.DeNoise()                  ' Remove digital artifacts from input
    input.Binarize()                 ' Convert to black and white for text extraction
    input.EnhanceResolution(300)     ' Boost to 300 DPI for single character clarity

    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine($"Extracted: {result.Text}")
End Using
$vbLabelText   $csharpLabel

この例では、OCRを実行する前に複数の前処理フィルターを連結しています。 Deskew() メソッドはドキュメントを分析して回転補正を適用し、DeNoise() メソッドはテキスト画像から斑点やアーティファクトを除去します。 Binarize() 呼び出しは、スキャンした画像を純粋な白黒に変換して、より鮮明なテキスト抽出を可能にし、EnhanceResolution() は画像を 300 DPI にブーストします。これは、正確な文字認識に推奨される最小値です。

フィルターを適用する順序は重要です。 スキュー除去は通常、チェーンの初期段階で行う必要があります。 2値化の前にノイズ除去を行うことで、アーチファクトが白黒変換に永久にエンコードされるのを防ぐことができます。 特定の文書タイプに対してフィルターの組み合わせを試してみることで、OCRアプリケーションが請求書、領収書、患者記録、スキャンされた契約書などを処理する場合でも、特定のユースケースに最適な順序が明らかになることがよくあります。

適切な前処理フィルターの組み合わせはどのように選べばよいですか?

適切なフィルターの組み合わせを選択するには、入力ドキュメントの性質を考慮する必要があります。 遠近歪みのあるカメラ画像は、まず傾き補正を行い、次にノイズ除去を行うことで改善されます。 ファックスやコピーされた文書は、文字の周りの灰色の輪を取り除くために、多くの場合、積極的な二値化処理が必要となる。 低解像度のスキャン画像は、他のどのフィルターを適用する前にも解像度向上処理を行う必要があります。なぜなら、ノイズ除去の前にアップスケーリングを行うことで、圧縮によるアーティファクトが増幅されるのを防ぐことができるからです。

実用的なアプローチとしては、ドキュメントのソース(スキャナー、カメラ、ファックス、PDFラスタライズなど)を分類し、それぞれに合わせたフィルタチェーンを適用することです。 IronOCR は、1 つのパスで必要な数のフィルターを連結することをサポートしているため、構成でソースごとのプロファイルを定義し、認識ロジックを書き換えることなく実行時に適用できます。

どのディープラーニング モデルが最新の OCR をサポートしていますか?

現代のOCRエンジンは、テキスト認識精度を飛躍的に向上させたディープラーニングアーキテクチャに依存している。 あらかじめ定義されたテンプレートと文字を照合する従来のアプローチとは異なり、ニューラルネットワークベースのOCRモデルは、膨大なトレーニングデータセットからテキストパターンを認識することを学習するため、フォントのバリエーション、手書きスタイル、劣化した画像などをはるかに効率的に扱うことができます。 この機械学習アプローチは、今日の最も高性能なOCRソリューションの原動力となっています。

認識パイプラインは通常、2種類のニューラルネットワークを組み合わせて構成されます。畳み込みニューラルネットワーク(CNN)は、画像からの特徴抽出に優れています。 これらのネットワークは、入力画像を複数の層を通して処理し、基本的なエッジや曲線から完全な文字形状まで、段階的に複雑なパターンを識別していきます。CNNは、テキスト領域の視覚的特徴を符号化した特徴マップを生成し、印刷されたテキストと手書きのテキストの両方を高い精度で処理します。

次に、LSTM(Long Short-Term Memory)ネットワークは、これらの特徴をシーケンスとして処理し、デジタルテキストが特定の順序で流れることを認識します。 LSTMは以前の入力を記憶しているため、文脈を理解し、書き言葉の逐次的な性質を扱うことができる。 この組み合わせ(しばしばCRNN (畳み込みリカレントニューラルネットワーク)と呼ばれる)は、現代のOCR精度の中核を成し、複数の言語にわたる高度な文字認識を可能にする。

IronOCRを支え​​るTesseract 5エンジンは、このLSTMベースのアーキテクチャを採用しており、従来型のパターン認識のみに依存していた以前のバージョンに比べて大幅な進歩を遂げている。 ニューラルネットワークアプローチは、テンプレートベースのOCRシステムを打ち負かすような、特定のフォント、部分的なオクルージョン、画像の劣化を処理します。

using IronOcr;

var ocr = new IronTesseract();

// Configure OCR engine for multilingual text recognition
ocr.Language = OcrLanguage.English;  // IronOCR supports 125+ languages

// Process PDF with mixed handwriting styles and printed text
using var input = new OcrInput("web-report.pdf");
input.Deskew();

OcrResult result = ocr.Read(input);

// Access detailed recognition data including text regions
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Text}");
}
using IronOcr;

var ocr = new IronTesseract();

// Configure OCR engine for multilingual text recognition
ocr.Language = OcrLanguage.English;  // IronOCR supports 125+ languages

// Process PDF with mixed handwriting styles and printed text
using var input = new OcrInput("web-report.pdf");
input.Deskew();

OcrResult result = ocr.Read(input);

// Access detailed recognition data including text regions
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Text}");
}
Imports IronOcr

Dim ocr As New IronTesseract()

' Configure OCR engine for multilingual text recognition
ocr.Language = OcrLanguage.English  ' IronOCR supports 125+ languages

' Process PDF with mixed handwriting styles and printed text
Using input As New OcrInput("web-report.pdf")
    input.Deskew()

    Dim result As OcrResult = ocr.Read(input)

    ' Access detailed recognition data including text regions
    For Each page In result.Pages
        Console.WriteLine($"Page {page.PageNumber}: {page.Text}")
    Next
End Using
$vbLabelText   $csharpLabel

IronTesseract クラスは、クリーンな.NETインターフェースを介して Tesseract 5 のニューラルネットワーク機能へのアクセスを提供します。 返されるOcrResultオブジェクトには、抽出されたテキストだけでなく、ページ、段落、行、個々の単語とその信頼度スコアおよび境界座標を含む構造化データも含まれています。

入力

 IronOCRを使用したテキスト認識の精度をコンピュータビジョンによる OCR で向上させる方法 : 画像 3 - サンプル PDF 入力

出力

 IronOCRを使用したテキスト認識の精度をコンピュータビジョンによる OCR で向上させる方法 : 画像 4 - OCR 出力

この構造化されたアウトプットは、単純なテキスト抽出以外の用途でも価値があります。 文書処理システムは単語の位置を利用して複雑なレイアウトを理解することができ、品質保証ワークフローは信頼性の低い領域を特定して人間のレビューに回すことができる。 ニューラルネットワークアーキテクチャは、認識されたテキストと一緒に豊富なメタデータを提供することで、大量の非構造化データを効率的に処理するAIベースのOCRソリューションを可能にし、これらすべてを可能にします。

IronOCRは多言語文書をどのように処理しますか?

IronOCRは125以上の言語に対応しており、それぞれの言語は専用のTesseract LSTM言語モデルによって支えられています。 IronTesseractLanguage プロパティを設定してから Read を呼び出すことで、言語を選択できます。 2つの言語が混在する文書(例えば、英語の脚注が付いたドイツ語の契約書など)の場合、複数の言語を同時に指定することができ、エンジンはテキスト領域ごとに最も適切なモデルを適用します。

言語パックはNuGetパッケージとして配布されるため、アプリケーションに必要なモデルのみをダウンロードできます。 これにより、単一言語を対象とするアプリケーションの展開規模を管理しやすい範囲に抑えつつ、必要に応じて完全な多言語サポートも実現できます。

フォームや表で地域ベースのOCRを有効にするにはどうすればよいですか?

領域ベースのOCRは、画像の定義された領域に認識範囲を限定するため、文書にフォームフィールド、請求書の明細項目、表のセルなど、特定の関心領域が含まれている場合に便利です。 この的を絞ったアプローチは、関連するコンテンツに計算リソースを集中させることで、速度と精度の両方を向上させます。

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("invoice.jpg");

// Define a crop region for the total amount field (x, y, width, height in pixels)
var totalRegion = new CropRectangle(x: 600, y: 800, width: 300, height: 50);
input.AddRegion(totalRegion);

OcrResult result = ocr.Read(input);
Console.WriteLine($"Invoice total: {result.Text}");
using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("invoice.jpg");

// Define a crop region for the total amount field (x, y, width, height in pixels)
var totalRegion = new CropRectangle(x: 600, y: 800, width: 300, height: 50);
input.AddRegion(totalRegion);

OcrResult result = ocr.Read(input);
Console.WriteLine($"Invoice total: {result.Text}");
Imports IronOcr
Imports IronSoftware.Drawing

Dim ocr As New IronTesseract()

Using input As New OcrInput()
    input.LoadImage("invoice.jpg")

    ' Define a crop region for the total amount field (x, y, width, height in pixels)
    Dim totalRegion As New CropRectangle(x:=600, y:=800, width:=300, height:=50)
    input.AddRegion(totalRegion)

    Dim result As OcrResult = ocr.Read(input)
    Console.WriteLine($"Invoice total: {result.Text}")
End Using
$vbLabelText   $csharpLabel

領域ベースのOCRと信頼度閾値を組み合わせることで、データ品質をきめ細かく制御できます。 財務文書や法律文書の場合、信頼度85%未満の単語を二次レビューの対象としてフラグ付けすることは、実用的な基準となります。各ソースから送られてくるスキャンの品質に基づいて、文書の種類ごとにしきい値を調整できます。

領域ベースのOCRと切り抜き矩形の詳細については、 IronOCRのドキュメントを参照してください。

開発者はどのようにしてOCRの精度をプログラム的に最適化できるのか?

標準的な前処理フィルターを適用するだけでなく、特定の文書の種類や品質要件に合わせてOCRのパフォーマンスを細かく調整することも可能です。 信頼度スコアリング、自動フィルタ最適化、検索可能なPDF生成はすべて、多様な文書タイプにわたってテキストを確実に認識する必要がある実用アプリケーションにおいて、認識精度を最大化することに貢献します。

信頼度スコアは、認識された各要素について、エンジンがどの程度確信を持っているかを示します。 これらのスコアを分析することで、手作業による検証や別の処理アプローチが必要な問題箇所を特定することができます。 アプリケーションは、結果が一定の信頼度閾値を下回るとレビュー対象としてフラグ付けされるように設定できます。これは、高い精度が求められる機密文書にとって不可欠です。

using IronOcr;

var ocr = new IronTesseract();

// Load business document for OCR processing
using var input = new OcrInput("receipt.jpg");

// Let the system determine optimal preprocessing for OCR accuracy
string suggestedCode = OcrInputFilterWizard.Run(
    "receipt.jpg",
    out double confidence,
    ocr);

Console.WriteLine($"Achieved confidence: {confidence:P1}");
Console.WriteLine($"Optimal filter chain: {suggestedCode}");

// Apply recommended filters for successful recognition
input.DeNoise();
input.Deskew();

OcrResult result = ocr.Read(input);

// Analyze word-level confidence for extracted text
foreach (var word in result.Words)
{
    if (word.Confidence < 0.85)
    {
        Console.WriteLine($"Low confidence: '{word.Text}' ({word.Confidence:P0})");
    }
}
using IronOcr;

var ocr = new IronTesseract();

// Load business document for OCR processing
using var input = new OcrInput("receipt.jpg");

// Let the system determine optimal preprocessing for OCR accuracy
string suggestedCode = OcrInputFilterWizard.Run(
    "receipt.jpg",
    out double confidence,
    ocr);

Console.WriteLine($"Achieved confidence: {confidence:P1}");
Console.WriteLine($"Optimal filter chain: {suggestedCode}");

// Apply recommended filters for successful recognition
input.DeNoise();
input.Deskew();

OcrResult result = ocr.Read(input);

// Analyze word-level confidence for extracted text
foreach (var word in result.Words)
{
    if (word.Confidence < 0.85)
    {
        Console.WriteLine($"Low confidence: '{word.Text}' ({word.Confidence:P0})");
    }
}
Imports IronOcr

Dim ocr As New IronTesseract()

' Load business document for OCR processing
Using input As New OcrInput("receipt.jpg")

    ' Let the system determine optimal preprocessing for OCR accuracy
    Dim confidence As Double
    Dim suggestedCode As String = OcrInputFilterWizard.Run("receipt.jpg", confidence, ocr)

    Console.WriteLine($"Achieved confidence: {confidence:P1}")
    Console.WriteLine($"Optimal filter chain: {suggestedCode}")

    ' Apply recommended filters for successful recognition
    input.DeNoise()
    input.Deskew()

    Dim result As OcrResult = ocr.Read(input)

    ' Analyze word-level confidence for extracted text
    For Each word In result.Words
        If word.Confidence < 0.85 Then
            Console.WriteLine($"Low confidence: '{word.Text}' ({word.Confidence:P0})")
        End If
    Next
End Using
$vbLabelText   $csharpLabel

OcrInputFilterWizardは画像を分析し、さまざまなフィルタの組み合わせをテストして、どの前処理チェーンが最も信頼性の高い結果をもたらすかを判断します。 この自動化されたアプローチにより、馴染みのない文書タイプを扱う際の推測作業が不要になります。ウィザードは、達成された信頼度レベルと最適な構成を再現するために必要なコードの両方を返すため、ビジネスプロセス向けのOCRアプリケーション開発が効率化されます。

このループで示される単語レベルの信頼度分析は、きめ細かな品質評価を提供します。 財務文書、患者記録、法律資料を処理するアプリケーションでは、抽出されたデータが精度基準を満たしていることを確認するため、このレベルの精査が必要となることがよくあります。 信頼性のしきい値を下回る単語は、二次検証プロセスまたは代替認識の試みをトリガーすることができ、信頼性が要求されるデータ管理ワークフローをサポートします。

スキャンした文書から検索可能なPDFを生成するにはどうすればよいですか?

検索可能なアーカイブへの変換が必要な文書の場合、 IronOCRは、認識されたテキストレイヤーを元の画像の下に埋め込んだ検索可能なPDFを生成できます。これにより、視覚的な忠実度を維持しながら全文検索が可能になります。 この機能により、スキャンされた文書を、長期保存、法的証拠開示ワークフロー、またはEnterpriseコンテンツ管理システムに適したデジタル形式に変換できます。

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput("scanned-contract.pdf");
input.Deskew();
input.DeNoise();

OcrResult result = ocr.Read(input);

// Export as searchable PDF with embedded text layer
result.SaveAsSearchablePdf("searchable-contract.pdf");
Console.WriteLine("Searchable PDF saved successfully.");
using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput("scanned-contract.pdf");
input.Deskew();
input.DeNoise();

OcrResult result = ocr.Read(input);

// Export as searchable PDF with embedded text layer
result.SaveAsSearchablePdf("searchable-contract.pdf");
Console.WriteLine("Searchable PDF saved successfully.");
Imports IronOcr

Dim ocr As New IronTesseract()

Using input As New OcrInput("scanned-contract.pdf")
    input.Deskew()
    input.DeNoise()

    Dim result As OcrResult = ocr.Read(input)

    ' Export as searchable PDF with embedded text layer
    result.SaveAsSearchablePdf("searchable-contract.pdf")
    Console.WriteLine("Searchable PDF saved successfully.")
End Using
$vbLabelText   $csharpLabel

生成されたファイルは、元のスキャン画像の視覚的な外観を維持しつつ、検索ツールやスクリーンリーダーがアクセスできる隠しテキストレイヤーを追加します。 これは、法令遵守やアクセシビリティ要件を満たすことを目的とした文書デジタル化プロジェクトにおける標準的な出力形式です。

文書の種類ごとにOCRの性能を比較するにはどうすればよいでしょうか?

印刷された用紙、手書きのメモ、低品質のファックス送信、高解像度のカメラ画像など、文書の種類によって、前処理や認識設定に対する反応は異なります。 各カテゴリの代表的なサンプルを用いてパイプラインのベンチマークを行うことで、精度にギャップがある箇所や、調整すべきフィルターが明らかになります。

文書タイプ別のOCR前処理推奨事項
文書の種類 おすすめのフィルター 典型的な精度向上 主な課題
フラットベッドスキャナーでスキャンしたテキスト デスクウ、バイナリ化 5~15% わずかに回転、影の縁
カメラで撮影された文書 デスクスキュー、ノイズ除去、解像度向上 20~40% 遠近法の歪み、ノイズ
ファックス/コピー バイナリ化、ノイズ除去 15~30% ハーフトーンパターン、コントラスト低下
Low-resolution scan (<150 DPI) 解像度強化(300)、デスキュー 30~50% 画素密度が不十分です
手書きのメモ バイナリ化、ノイズ除去 10~25% ストローク幅の可変、スタイルのバリエーション

これらの精度向上は、学術的なOCRベンチマーク研究における前処理効果の研究に基づいた方向性のある推定値です。 実際の結果は、スキャン機器、文書の古さ、内容の複雑さによって異なります。 OcrInputFilterWizard を独自のサンプル セットに対して実行すると、パイプラインに固有の実証データが得られます。

パイプラインを調整する際に利用できるすべてのオプションを理解するために、利用可能なIronOCR前処理フィルターの全リストを確認してください。

IronOCRの生産文書処理における主要な機能は何ですか?

OCRを実運用環境に導入する際には、基本的な認識機能以外にも、信頼性とスループットを向上させるためにIronOCRの様々な機能が重要になります。 これらの特徴を理解することで、精度を損なうことなく拡張可能なパイプラインを設計できるようになります。

マルチフォーマット入力のサポート- IronOCRは、単一の統一APIを通じて、画像(PNG、JPEG、TIFF、BMP、GIF、WEBP)、PDFファイル、および複数ページのTIFFファイルを受け付けます。 つまり、スキャンステーション、電子メールの添付ファイル、文書管理システムなどから送られてくるあらゆる形式のファイルを、形式固有のコードパスを記述することなく処理できるということです。

スレッドセーフティ-- IronTesseract クラスは、単一のインスタンスを作成して複数のスレッドで共有する場合、スレッドセーフです。 高スループットのアプリケーションでは、スレッドごとにインスタンスを1つ作成するか、プールを使用して、基盤となるTesseractエンジンでのロック競合を回避してください。

バーコードとQRコードの同時処理- IronOCRは、同じ画像からバーコードとQRコードを一度の処理で読み取ることができるため、配送ラベルや製品在庫シートなどの混合コンテンツ文書を処理する際に、別途バーコードライブラリを用意する必要がなくなります。

出力フォーマットのオプション-- IronOCRは、プレーンテキストに加えて、 HOCR形式で構造化データを返したり、検索可能なPDFに直接エクスポートしたり、下流のデータ抽出ワークフローに適した単語境界ボックスを提供したりできます。

アーキテクチャを最終決定する前に、 IronOCRの全機能概要を確認して、すべての機能を把握してください。

次のステップは何ですか?

コンピュータビジョン技術は、光学文字認識を、完璧な入力データでしか機能しない技術から、スキャンされた文書、写真、劣化画像といった不完全な現実にも対応できる技術へと根本的に変革する。 前処理段階(傾き補正、ノイズ除去、二値化、解像度向上)は、物理的な撮影上の欠陥に対処する一方、CNN-LSTMなどのニューラルネットワークアーキテクチャは、さまざまなフォントや手書きスタイルを正確に解釈するための文字認識機能を提供する。

.NET開発者向けに、 IronOCRはこれらの機能をマネージドライブラリとしてパッケージ化しており、ネイティブなTesseractとの統合を簡素化すると同時に、本番環境での使用に役立つ実用的な機能強化も追加しています。 自動的な前処理最適化、詳細な信頼度レポート、および構造化された結果データの組み合わせにより、印刷された文書から手書きのメモまで、多様な実世界の入力に対して信頼性の高い動作を実現し、複数の言語に対応した多言語OCRをサポートする文書処理システムが実現します。

前進するために:

よくある質問

コンピュータビジョンはOCRの精度をどのように向上させるのですか?

コンピュータービジョンは、認識前に画像前処理を施すことでOCRの精度を向上させます。傾き補正、ノイズ除去、二値化、解像度向上といった技術は、OCRエンジンによる誤読や文字の読み落としの原因となる物理的なキャプチャ欠陥を修正します。ニューラルネットワークモデルは、フォント、手書きスタイル、劣化画像など、様々な環境下でテキストパターンを認識することを学習することで、OCRの精度をさらに向上させます。

IronOCR はどのような前処理フィルターをサポートしていますか?

IronOCRは、OcrInput APIを通じて、傾き補正、ノイズ除去、二値化、解像度向上、そしてその他様々なフィルターをサポートしています。複数のフィルターを1回のパスで連結し、OcrInputFilterWizardを使用して、特定のドキュメントタイプに最適なフィルターの組み合わせを自動的に検出できます。

IronOCRを動かすディープラーニング モデルは何ですか?

IronOCRは、LSTM(Long Short-Term Memory)ニューラルネットワークアーキテクチャを採用したTesseract 5を搭載しています。畳み込み特徴抽出と組み合わせることで、このCRNNモデルは、従来のテンプレートベースのOCRシステムよりも、フォントのバリエーション、部分的なオクルージョン、画像の劣化をより効果的に処理します。

IronOCRを使用して領域ベースの OCR を実行するにはどうすればよいですか?

OcrInputのAddRegionメソッドを使用し、対象領域のx、y、幅、高さをピクセル単位で定義するCropRectangleを指定します。IronOCRは認識範囲をその領域に限定することで、フォームや請求書などの構造化文書の速度と精度を向上させます。

IronOCR はスキャンしたドキュメントから検索可能な PDF を生成できますか?

はい。OcrInputでReadを呼び出した後、OcrResultオブジェクトでSaveAsSearchablePdfを呼び出してください。これにより、認識されたテキストが元のスキャン画像の下に隠しレイヤーとして埋め込まれたPDFが生成され、文書の外観を維持しながら全文検索が可能になります。

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

IronOCRは125以上の言語をサポートしています。各言語は、 NuGetパッケージとして配布されている専用のTesseract LSTMモデルによってサポートされています。2つ以上の言語が混在するドキュメントでは、複数の言語を同時に指定できます。

前処理フィルターはどのような順序で適用すればよいですか?

原則として、後続のフィルターが適切に配置された画像に適用されるように、まずデスキューを適用します。白黒変換時にアーティファクトが永続的にエンコードされるのを防ぐため、二値化の前にノイズ除去を実施します。ソースの解像度が低い場合は、ノイズ除去の前にアップスケーリングすることで圧縮アーティファクトの増幅を防ぐため、早めに解像度向上を適用します。

IronOCRでは信頼スコアはどのように機能しますか?

IronOCRは、認識された単語ごとに0から1までの信頼度スコアをOcrResultで返します。ビジネス文書では、一般的に0.85以上のスコアが信頼できるとみなされます。選択したしきい値を下回る単語は、手動レビューの対象としてフラグ付けするか、二次認識パスにルーティングすることができます。

Kannaopat Udonpant
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、Kannapatは北海道大学で環境資源の博士号を修了しました。博士号を追求する間に、彼はバイオプロダクションエンジニアリング学科の一部である車両ロボティクスラボラトリーのメンバーになりました。2022年には、C#のスキルを活用してIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。Kannapatは、IronPDFの多くのコードを執筆している開発者から直接学んでいるため、この仕事を大切にしています。同僚から学びながら、Iron Softwareでの働く社会的側面も楽しんでいます。コードやドキュメントを書いていない時は、KannapatはPS5でゲームをしたり、『The Last of Us』を再視聴したりしていることが多いです。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね