IRONSOFTWAREHOME
他のコンポーネントと比較する

IronOCRと Iris OCR: エンジニアリングチームはどちらの OCR ソリューションを選択すべきでしょうか?

Kannaopat Udonpant
Kannapat Udonpant
Updated: 2026年6月20日

Azure Computer Vision の Read API は 1,000 トランザクションごとに $1.00 の費用がかかり、Cognitive Services リソースをプロビジョニングするために Azure サブスクリプションが必要で、すべての OCR 呼び出しを 3 ステップの非同期ダンスを通して強制します。BinaryData にドキュメントをシリアライズし、AnalyzeAsync を呼び出し、その後ネストされたブロックとラインをたどってテキストを再構築します。 それが最低限必要な手順であり、複数ページのPDFの場合、各ページが個別の取引としてカウントされます。 IronOCRは、それらすべてを1つの同期メソッド呼び出しに集約し、完全にインフラストラクチャ内で動作し、トランザクションごとのメーターもありません。

Azure Computer Visionを理解する

Azure Computer Vision は Microsoft のクラウドベースの認知サービスであり、2 つの主要な API を通じて OCR を公開しています: 画像には ImageAnalysisClient を使用する Image Analysis API と VisualFeatures.Read、PDF には Azure Form Recognizer の DocumentAnalysisClient。 どちらも Azure データセンターでホストされている REST バックサービスであり、それぞれ Azure.AI.Vision.ImageAnalysis および Azure.AI.FormRecognizer.DocumentAnalysis NuGet パッケージを介してアクセスされます。

主な建築上の特徴:

-常にクラウドファースト:すべてのOCR処理は、HTTPS経由でMicrosoftが管理するサーバーにドキュメントデータを送信します。 ローカル処理モードはありません。 -サブスクリプションの前提条件:チームは、OCRコードを1行でも記述する前に、Azureアカウントを作成し、Cognitive Servicesリソースをプロビジョニングし、エンドポイントURLを取得し、APIキーを生成する必要があります。 -ページ単位の課金:Read APIは、画像単位またはPDFページ単位で課金されます。 50ページのPDFには50件の取引が記載されています。 料金は最初の100万件までは1,000件あたり1.00ドルから始まり、取引量が増えるにつれて0.60ドル、さらに0.40ドルへと下がります。 -無料プランの上限:無​​料プランでは月間5,000件のトランザクションまで。これはプロトタイプ作成には十分ですが、本番環境でのワークロードには適していません。

  • PDF用の分割サービス: 基本的な画像OCRは ImageAnalysisClient を使用します。 完全なPDF処理には、Form Recognizer の DocumentAnalysisClient という別のサービスが必要で、それぞれ独自のエンドポイントと構成があります。 -非同期専用設計:すべての読み取りAPI呼び出しは非同期です。 ローカルOCRは結果を同期的に返すことができる。 クラウドの往復通信はできません。 チェイン内のすべての呼び出しメソッドは async である必要があります。 -レート制限:S1ティアでは、1秒あたり10トランザクションが上限となります。 大量のバッチ処理を行うには、キューイングロジックの導入または階層のアップグレードが必要です。 -エラー発生範囲:本番コードでは、HTTP 429 レート制限応答、5xx Azure サービスエラー、ネットワークタイムアウト、認証失敗、エンドポイントの可用性などを処理する必要があり、それぞれに個別の再試行ロジックが必要です。

非同期ポーリングパターン

Read APIの非同期処理要件は、構造的なコードへの影響をもたらします。 AnalyzeAsync を使用した画像解析は即座に戻りますが await が必要です; Form Recognizer を介した PDF 処理では、操作が終了するまでブロックするため WaitUntil.Completed が必要です。または、真の非同期動作のために UpdateStatusAsync とのカスタムポーリングが必要です。 結果の階層構造では、ネストされたループを通してブロック、行、単語を走査する必要があります。

// Azure Computer Vision: image OCR
// Requires: Azure subscription + Cognitive Services resource + endpoint + API key
using Azure;
using Azure.AI.Vision.ImageAnalysis;

public class AzureOcrService
{
    private readonly ImageAnalysisClient _client;

    public AzureOcrService(string endpoint, string apiKey)
    {
        // Endpoint and key provisioned in Azure portal
        _client = new ImageAnalysisClient(
            new Uri(endpoint),
            new AzureKeyCredential(apiKey));
    }

    public async Task<string> ExtractTextAsync(string imagePath)
    {
        // Document is uploaded to Microsoft Azure
        using var stream = File.OpenRead(imagePath);
        var imageData = BinaryData.FromStream(stream);

        var result = await _client.AnalyzeAsync(
            imageData,
            VisualFeatures.Read);

        var text = new StringBuilder();
        foreach (var block in result.Value.Read.Blocks)
        {
            foreach (var line in block.Lines)
            {
                text.AppendLine(line.Text);
            }
        }

        return text.ToString();
    }
}

PDF 処理はさらに複雑さを増します — 独自のエンドポイントを持つ別の AnalyzeDocumentAsyncresult.Pages および .Text の代わりに .Content にアクセスします。

IronOCRを理解する

IronOCRは、 .NET向けの商用オンプレミスOCRライブラリであり、単一のNuGetパッケージとして提供されます。 これは、最適化されたTesseract 5エンジンをベースに、自動前処理、ネイティブPDFサポート、クラウド認証情報、エンドポイント構成、非同期処理を必要としない同期APIを備えています。

主な特徴:

  • 単一の NuGet デプロイメント: dotnet add package IronOcr で OCR エンジン、ネイティブバイナリ、英語用の言語データがすべてインストールされます。 tessdataフォルダも、個別のネイティブライブラリのダウンロードもありません。
  • 永続ライセンス: $999 Lite / $1,499 Plus / $2,399 Professional / $4,799 Unlimited — 一回のみの購入、サブスクリプションではありません。 文書数に関わらず、文書ごとの料金は一切かかりません。 -ローカル処理:すべてのOCR処理は、お客様のプロセス内で実行されます。 文書はあなたのインフラストラクチャから決して外部に出ません。
  • 自動前処理: デスクュー、デノイズ、コントラスト、バイナライズ、および解像度の向上は OcrInput で自動的に、または明示的なフィルター呼び出しを介して適用されます。
  • ネイティブ PDF サポート: IronTesseract.Read("document.pdf") が PDF を直接処理し、パスワード保護されたファイルを含み、別のサービスや追加の NuGet パッケージを必要としません。
  • 125 以上の言語: IronOcr.Languages.ChineseSimplified などを使用して、別個の言語 NuGet パッケージとしてインストールされ、手動の tessdata 管理は必要ありません。
  • スレッドセーフ: IronTesseract は同時に使用することが安全です。 バッチワークロードには追加の同期なしで Parallel.ForEach を使用できます。
  • 構造化出力: OcrResult.Words、および .Barcodes コレクションを要素ごとの座標、信頼スコア、およびバウンディング矩形を伴って公開します。

機能比較

フィーチャーAzure コンピュータービジョンIronOCR
処理場所Microsoft Azureクラウド地元、店内
価格設定モデルトランザクションごとの料金(現在の価格についてはマイクロソフトにお問い合わせください)永続ライセンス ($999+)
インターネット接続が必要ですはい、常になし
PDFサポートフォーム認識機能経由(別売)組み込み、ネイティブ
セットアップの複雑さAzureアカウント + リソース + キーNuGetインストール
APIパターン非同期処理(クラウドI/O)同期(ローカル)
レート制限10 TPS (S1)ハードウェア依存のみ

詳細な機能比較

フィーチャーAzure コンピュータービジョンIronOCR
セットアップと展開
NuGetインストール複数のパッケージdotnet add package IronOcr
認証情報の設定エンドポイントURL + APIキーライセンスキー文字列
Azure サブスクリプションが必要ですはいなし
インターネット接続が必要はい、すべてのリクエストなし
エアギャップ展開不可能完全サポート
Dockerデプロイメント発信ネットワークが必要です自己完結型
OCR機能
画像OCRはい (AnalyzeAsync)はい (Read())
PDF OCRフォーム認識機能経由(追加サービス)ネイティブ、組み込み
パスワードで保護されたPDFフォーム認識機能経由単一の Password: パラメータ
複数ページPDF(ページごとの課金)はい、各ページは1件の取引に相当します。ページごとの料金はかかりません
検索可能なPDF出力手作業による組み立てSaveAsSearchablePdf()
自動前処理サーバー側の制限デスクスキュー、ノイズ除去、コントラスト調整、二値化
OCR中のバーコード読み取り制限的ReadBarCodes = true
地域ベースのOCR直接切り取らない(手動でトリミングする)CropRectangle at OcrInput
言語サポート
言語数164+125+
言語のインストールサービスレベル(クラウドが対応)NuGet言語パック
複数の言語の同時使用はいはい (AddSecondaryLanguage)
出力と構造
プレーンテキストはいはい
単語ごとの境界ボックスポリゴンベース長方形ベース
単語ごとの信頼度スコアはいはい(0~100点)
構造化された階層ブロック/線/単語ページ数/段落数/行数/単語数
hOCRエクスポートなしはい (SaveAsHocrFile)
コストとコンプライアンス
文書ごとの費用1ページあたり0.001ドル(フォーム認識機能)None
HIPAA準拠の導入複合体(BAA + クラウド)シンプル(地元限定)
ITAR適合性管理データには使用しないでください完全なオンプレミス
FedRAMPエアギャップなしはい
信頼性
ネットワーク障害モードはいNone
レート制限エラーはい(10 TPSで429)None
サービス可用性SLA99.9% (Azure)インフラストラクチャ

コストモデル

Azure Computer VisionとIronOCRの取引価格の差は、本番環境での取引量において決定的な要素となる。 Azureのソースファイルに含まれるコスト計算ツールは、計算結果を正確に示しています。

Azure コンピュータビジョンアプローチ

Azureは、ボリュームに基づいて階層化された価格でトランザクションごとに請求します。 Azure Computer Visionの料金ページを確認して、現在の料金をご確認ください。 PDFの各ページは1件の取引に相当します。 10ページのPDFファイルは、10回の課金対象となる通話に相当します。 月間5,000トランザクションの無料ティアがあります。

// Azure bills per transaction — costs grow with every document processed
// Free tier: 5,000 transactions/month
// Volume tiers apply at higher usage levels
// (Every PDF page multiplies the bill)

中程度から高いドキュメント量で、IronOCRの永続ライセンスは、継続的なAzureトランザクションコストと比較して迅速に元を取り、それ以降の追加ドキュメントごとに節約がされます。

IronOCRのアプローチ

IronOCRの料金体系は、単一の数値で表されます。 NuGetパッケージをインストールし、ライセンスキーを設定すれば、カウンターがカウントアップすることなく、任意のボリュームを処理できます。

// Install: dotnet add package IronOcr
// License: one-time, perpetual

IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");

var ocr = new IronTesseract();

// Process 1 document or 1 million — same cost
foreach (var path in documentPaths)
{
    var result = ocr.Read(path);
    Console.WriteLine($"Processed: {path}");
}

// Multi-page PDFs — no per-page billing
foreach (var path in pdfPaths)
{
    // 1 page or 100 pages, still no extra cost
    var result = ocr.Read(path);
    Console.WriteLine($"{path}: {result.Pages.Length} pages processed");
}

計測も、使用状況の追跡も、予算アラートも不要です。 初日から費用が予測可能。 画像からテキストを読み取る方法に関するチュートリアルを参照して、詳しい手順を確認してください。

データ主権とオフライン機能

クラウドOCRのコンプライアンス上の影響は、理論上の問題ではない。 Azure Computer Visionで処理されるすべての文書は、組織の境界を越えます。 Azure の README には、影響を受ける具体的な規制フレームワークが記載されています。具体的には、HIPAA の対象となる事業体、ITAR の防衛関連企業、CMMC 認証を受けた組織、GDPR の規制を受ける欧州企業、およびエアギャップ ネットワーク内でのあらゆる運用が含まれます。

Azure コンピュータビジョンアプローチ

地域別のエンドポイント選択とビジネスアソシエイト契約の締結を行ったとしても、データフローは固定されている。

// Azure: data flow for every OCR call
// 1. Your application reads the file
// 2. File is serialized to BinaryData
// 3. HTTPS transmission to Azure data center
// 4. Microsoft infrastructure processes the document
// 5. Result returned over HTTPS
// 6. You parse the result

using var stream = File.OpenRead(imagePath);
var imageData = BinaryData.FromStream(stream);  // Document in memory

// This call transmits your document to Azure
var result = await _client.AnalyzeAsync(
    imageData,           // Document leaves your network here
    VisualFeatures.Read);

エアギャップされたネットワークではエンドポイントURLに全くアクセスできません。Azure Computer Visionにはオフラインモードがないためです。 SCIF(機密情報隔離施設)、軍事施設、または隔離された処理環境を運用している組織にとって、このサービスは価格に関係なく、アーキテクチャ的に互換性がありません。

IronOCRのアプローチ

IronOCRは、呼び出しプロセス内で文書を処理します。 発信接続がありません。

// IronOCR: data never leaves your infrastructure
using IronOcr;

public class OnPremiseOcrService
{
    private readonly IronTesseract _ocr = new IronTesseract();

    public string ExtractText(string imagePath)
    {
        // Runs entirely in-process
        // なし network call, no serialization to external endpoint
        var result = _ocr.Read(imagePath);
        return result.Text;
    }

    public string ExtractFromPdf(string pdfPath)
    {
        // PDF processed entirely on-premise, native support
        using var input = new OcrInput();
        input.LoadPdf(pdfPath);
        return _ocr.Read(input).Text;
    }

    public string ExtractFromEncryptedPdf(string pdfPath, string password)
    {
        // Encrypted PDFs also stay local
        using var input = new OcrInput();
        input.LoadPdf(pdfPath, Password: password);
        return _ocr.Read(input).Text;
    }
}
C#

Dockerデプロイメントでは、アウトバウンドネットワークの要件が完全に不要になります。

FROM mcr.microsoft.com/dotnet/aspnet:8.0
RUN apt-get update && apt-get install -y libgdiplus
WORKDIR /app
COPY --from=build /app/publish .
ENV IRONOCR_LICENSE=your-key
# なし Azure endpoint, no API key, no outbound network rules needed
ENTRYPOINT ["dotnet", "YourApp.dll"]
Text

HIPAAの対象となる事業体、ITARのコンプライアンス、またはFedRAMPのエアギャップ環境においては、 IronOCRはサードパーティデータ処理業者のリスクというカテゴリー全体を排除します。 Azureインフラストラクチャ内でIronOCRを実行し、ドキュメントをコンピューティングインスタンスのローカルに保持する方法については、 Azureデプロイガイドを参照してください。コンテナ構成については、 Dockerデプロイガイドを参照してください。

同期型API設計と非同期型API設計

Azure Read API は非同期です。同期処理は不可能だからです。クラウド I/O にはネットワーク遅延が発生します。 IronOCR はローカルで処理を行い、同期的に結果を返すことができ、コードの呼び出しが簡素化され、async がコールスタックを通じて伝播することを排除し、ネットワーク I/O に固有の失敗モードを排除します。

Azure コンピュータビジョンアプローチ

すべての Azure OCR 呼び出しには await が必要です。 本番環境のコードでは、429レート制限エラーと5xxサービスエラーに対する再試行ロジックが追加されました。 最小限の運用実装は次のようになります。

public async Task<string> RobustExtractAsync(string imagePath)
{
    const int maxRetries = 3;
    int attempt = 0;

    while (attempt < maxRetries)
    {
        try
        {
            using var stream = File.OpenRead(imagePath);
            var imageData = BinaryData.FromStream(stream);

            var result = await _client.AnalyzeAsync(
                imageData,
                VisualFeatures.Read);

            return string.Join("\n",
                result.Value.Read.Blocks
                    .SelectMany(b => b.Lines)
                    .Select(l => l.Text));
        }
        catch (RequestFailedException ex) when (ex.Status == 429)
        {
            // Rate limited — Azure caps S1 at 10 TPS
            attempt++;
            await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, attempt)));
        }
        catch (RequestFailedException ex) when (ex.Status >= 500)
        {
            // Azure service error
            attempt++;
            await Task.Delay(TimeSpan.FromSeconds(1));
        }
        catch (RequestFailedException ex)
        {
            // Client error — bad credential, invalid endpoint
            throw new Exception($"Azure OCR failed: {ex.Message}", ex);
        }
    }

    throw new Exception("Max retries exceeded for Azure OCR");
}

これは防御的な過剰設計ではなく、本番環境におけるあらゆるAzure API呼び出しに必要な最低限の要件です。 レート制限、サービス停止、一時的なエラーは、Azureの利用者が実際に遭遇する可能性のある状況です。

IronOCRのアプローチ

ローカル処理により、ネットワーク障害発生領域が排除される。 エラー処理の範囲は、ファイルシステムと入力検証に限定される。

// なし async required — local processing returns synchronously
public string ExtractText(string imagePath)
{
    var result = new IronTesseract().Read(imagePath);
    return result.Text;
}

// One line for simple cases
public string OneLineOcr(string imagePath)
{
    return new IronTesseract().Read(imagePath).Text;
}

// Confidence-aware extraction
public (string Text, double Confidence) ExtractWithConfidence(string imagePath)
{
    var result = new IronTesseract().Read(imagePath);
    return (result.Text, result.Confidence);
}
C#

RequestFailedException がなく、リトライループもなし Task.WhenAll バッチジョブのための調整。 非同期コントローラパイプラインとの統合のために非同期が必要な場合、Task.Run(() => ocr.Read(path)) が同期呼び出しを内部の OCR ロジックに構造的変更を加えることなくラップします。 IronTesseract APIリファレンスには、同期インターフェースの全機能が網羅されています。 非同期パターンを真に必要とするワークロード向けに、 IronOCRは専用の非同期OCRガイドも提供しています。

認証情報とエンドポイントの設定

Azure Computer Visionでは、最初のテストを行う前にインフラストラクチャをプロビジョニングする必要があります。IronOCRIronOCR、 NuGetのインストールと、必要に応じてライセンスキー文字列が必要です。

Azure コンピュータビジョンアプローチ

OCRコードを書き込む前に必要なAzureのセットアップ手順:

  1. Azureアカウントが存在しない場合は作成します。
  2. Azure ポータルに移動し、Cognitive Services リソース (または Azure AI Services リソース) を作成します。
  3. 料金プランと地域を選択してください。
  4. エンドポイント URL をコピーします(形式: https://your-resource.cognitiveservices.azure.com/)。
  5. 2つのAPIキーのうち1つをコピーします。
  6. 両方の値を安全に保存してください。環境変数、Azure Key Vault、または appsettings.json(非本番環境のみ)で。
  7. Azure.AI.Vision.ImageAnalysis を NuGet 経由でインストールします。
  8. エンドポイントと資格情報を使用して ImageAnalysisClient を初期化します。

PDF 処理のためには、Form Recognizer リソースと別の NuGet パッケージ (Azure.AI.FormRecognizer)、および別のクライアントクラス (DocumentAnalysisClient) のステップ 2-8 を繰り返します。

appsettings.json はエンドポイントとキーを保存します。

{
  "Azure": {
    "ComputerVision": {
      "Endpoint": "https://your-resource.cognitiveservices.azure.com/",
      "ApiKey": "your-api-key"
    }
  }
}
JSON

APIキーのローテーション、認証情報の有効期限の処理、環境(開発、ステージング、本番)間でのエンドポイントURLの管理は、ローカル処理では対応できない継続的な運用タスクです。

IronOCRのアプローチ

IronTesseractのセットアップガイドでは、セットアップ手順を2ステップに簡略化しています。

dotnet add package IronOcr

// Set once at application startup — environment variable recommended
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");

// Then use immediately — no endpoint, no credential rotation, no portal setup
var text = new IronTesseract().Read("document.jpg").Text;

ライセンスキーは固定の文字列です。 リクエストごとに有効期限が切れることはなく、ローテーションも不要で、アクティベーション後に検証のためにサーバーにコールすることもありません。 展開環境では、OCRが機能するために送信ファイアウォールルールは必要ありません。

APIマッピングリファレンス

Azure コンピュータービジョンIronOCR相当値
ImageAnalysisClientIronTesseract
new AzureKeyCredential(apiKey)IronOcr.License.LicenseKey = key
client.AnalyzeAsync(data, VisualFeatures.Read)ocr.Read(imagePath)
BinaryData.FromStream(stream)input.LoadImage(stream)
result.Value.Read.Blocksresult.Paragraphs
block.Linesresult.Lines
line.Textline.Text
line.Wordsresult.Words
word.Confidenceword.Confidence(Azure の 0-1 スケールに対して 0-100 スケール)
word.BoundingPolygonword.X, word.Y, word.Width, word.Height
DocumentAnalysisClientIronTesseract + OcrInput
AnalyzeDocumentAsync(WaitUntil.Completed, "prebuilt-read", stream)ocr.Read(input) with input.LoadPdf(path)
operation.Value.Pagesresult.Pages
page.Lines / line.Contentresult.Lines / line.Text
RequestFailedException (429 リトライ)該当なし - レート制限なし
RequestFailedException (500 リトライ)該当なし - サービスエラーなし

チームがAzure Computer VisionからIronOCRへの移行を検討する際

コンプライアンス要件 ブロッククラウド処理

医療分野のISV(独立系ソフトウェアベンダー)が文書管理システムを構築する際、統合が迅速なため、Azure Computer Visionから開発を始める。 そして最初のEnterprise顧客である病院システムに到着し、HIPAAセキュリティ担当者から"私たちのPHIはどこに送られるのか?"と"その第三者に関するビジネスアソシエイト契約を見せていただけますか?"という2つの質問を受けました。AzureにはBAAがありましたが、最初の質問に対する答えである"マイクロソフトのデータセンター"がきっかけとなり、長期間にわたるセキュリティレビュー、マイクロソフトの監査レポートの要求、そして契約を遅らせるコンプライアンスのタイムラインが発生しました。 IronOCRに切り替えると、その質問自体が完全に消えます。 PHI(保護対象医療情報)は、顧客の環境から決して持ち出されません。 コンプライアンスの範囲は、顧客自身の組織内に留まります。

取引量の増加により、取引ごとの価格設定は維持不可能になる

運用チームは、月間5,000件の請求書を処理するパイプラインを立ち上げた。これはAzureの無料利用枠の範囲内に十分収まる。 ボリュームが増えると、トランザクションごとのコストがすべての処理されたドキュメントに蓄積されます。 IronOCR Professional ($2,399) は一回のみの購入であり、ドキュメントごとの料金は発生しません。 中程度の業務量増加を見込んでいるチームでも、すぐに損益分岐点に達し、その後は追加の文書はすべてコスト削減につながります。

ネットワーク遅延は処理SLAに影響を与える

文書処理サービスは、エンドツーエンドで2秒のSLA(サービスレベル契約)を目標としている。 Azure Computer Visionでは、OCR処理自体が行われる前に、同一リージョン内の通話では200~800ミリ秒、リージョンをまたぐ展開では500~2000ミリ秒のネットワーク遅延が発生します。 負荷がかかると、S1の10 TPSというレート制限によってキューイングが発生し、レイテンシがさらに増大する。 IronOCRは、汎用サーバーハードウェア上で、キュー、レート制限、ネットワークホップなしで、300 DPIの画像を100~400ミリ秒で処理します。サービスレベル契約(SLA)は、Azureサービスの健全性やネットワーク状況ではなく、ハードウェアのみに依存するため、予測可能になります。

エアギャップインフラストラクチャの要件

防衛関連企業、情報機関、重要インフラ事業者は、意図的にインターネット接続のないネットワーク上でワークロードを実行している。 Azure Computer Visionは、これらの環境とは技術的に互換性がありません。エンドポイントにアクセスできないためです。 これらの分野のチームは、自己完結型のバイナリとしてデプロイされ、外部接続を必要とせず、クラウドへのデータ送信を明確に禁止するセキュリティレビューに合格するライブラリを必要としています。 IronOCRはLinux環境へのデプロイとDockerのサポートにより、変更を加えることなく制限された環境にもデプロイ可能です。

複数環境への展開を簡素化する

SaaSアプリケーションの開発環境、ステージング環境、および本番環境を管理するチームは、3つのAzure Cognitive Servicesリソース、3組のAPIキー、および3つのエンドポイントURLを管理しており、それぞれに安全なストレージ、ローテーションポリシー、および環境固有の構成が必要です。 すべてのデプロイ環境において、Azureへのアウトバウンドネットワークアクセスが必要です。 IronOCR は環境設定を 1 つの環境変数 (IRONOCR_LICENSE) に削減し、ネットワークアクセス要件を排除し、環境全体での資格情報管理の運用上のオーバーヘッドを取り除きます。

一般的な移行の考慮事項

非同期から同期へのパターン

Azure コンシューマーコードは必要に迫られて async です。 IronOCRは非同期処理を必要としませんが、その移行は機械的なものです。 戻りの型を async Task<string> から string に置き換え、awaitasync のキーワードを削除し、リトライループを削除します。呼び出しメソッドが非同期である必要がある ASP.NET コントローラまたはサービスである場合、IronOCR の呼び出しを Task.Run にラップしてください。

// Before: Azure async chain
public async Task<string> ReadTextAsync(string imagePath)
{
    using var stream = File.OpenRead(imagePath);
    var data = BinaryData.FromStream(stream);
    var result = await _client.AnalyzeAsync(data, VisualFeatures.Read);
    return string.Join("\n", result.Value.Read.Blocks
        .SelectMany(b => b.Lines)
        .Select(l => l.Text));
}

// After: IronOCR synchronous
public string ReadText(string imagePath)
{
    return new IronTesseract().Read(imagePath).Text;
}

// If async signature must be preserved for interface compatibility
public Task<string> ReadTextAsync(string imagePath)
{
    return Task.Run(() => new IronTesseract().Read(imagePath).Text);
}

信頼度スケールの正規化

Azure Computer Vision は単語の信頼度を 0 から 1 までの float として返します。IronOCR は信頼度を 0-100 スケールの double として返します。 Azureの信頼度値に基づいてしきい値を設定するコードはすべて調整が必要です。

// Azure: confidence is 0.0 - 1.0
foreach (var word in line.Words)
{
    if (word.Confidence > 0.85f) { /* high confidence */ }
}

// IronOCR: confidence is 0 - 100
var result = new IronTesseract().Read(imagePath);
foreach (var word in result.Words)
{
    if (word.Confidence > 85.0) { /* equivalent threshold */ }
}
Console.WriteLine($"Overall: {result.Confidence}%");

OcrResult APIリファレンスには、信頼度スケールを含むすべての結果プロパティが記載されています。 信頼度スコアの算出方法に関するガイドでは、閾値の選択方法と要素ごとの解釈について解説しています。

PDF処理サービスの統合

Azure では、画像 OCR とPDF OCRを別々のサービスに分割し、それぞれに個別のクライアント、 NuGetパッケージ、エンドポイント構成を用意しています。 移行とは、両方のパスを単一の IronTesseract インスタンスに統合することを意味します。 OcrInput.LoadPdf メソッドはファイルパス、ストリーム、またはバイト配列を受け入れ、暗号化ファイル用のオプションの Password パラメータを備えています。二つ目のクライアントは必要ありません。

// Before: Two separate Azure clients for images vs PDFs
// Image: ImageAnalysisClient + AnalyzeAsync
// PDF:   DocumentAnalysisClient + AnalyzeDocumentAsync(WaitUntil.Completed, ...)

// After: One IronTesseract instance handles both
var ocr = new IronTesseract();

// Image
var imageResult = ocr.Read("document.jpg");

// PDF (same client, same Read method)
using var pdfInput = new OcrInput();
pdfInput.LoadPdf("document.pdf");
var pdfResult = ocr.Read(pdfInput);

// Password-protected PDF
using var encInput = new OcrInput();
encInput.LoadPdf("secured.pdf", Password: "secret");
var encResult = ocr.Read(encInput);

// 検索可能なPDF出力 — no manual construction
pdfResult.SaveAsSearchablePdf("searchable-output.pdf");
C#

PDF入力ガイドでは、ページ範囲の選択、ストリーム入力、およびネイティブPDFレンダリングパイプラインについて説明しています。画像入力については、画像入力ガイドを参照してください。

フォーム認識機能を使用しない構造化データ抽出

フィールド抽出のために、Form Recognizer の組み込みモデル(請求書、レシート、身分証明書)を使用しているチームは、IronOCR で CropRectangle を使用して地域ベースの OCR による抽出ロジックを模倣する必要があります。 位置情報の抽出は、モデルベースではなく明示的な方法で行われる。

// Form Recognizer extracted named fields automatically
// IronOCR: define extraction zones for known document layouts
var ocr = new IronTesseract();

// Define regions matching the document template
var vendorZone   = new CropRectangle(0,   0,   300, 100);
var invoiceDate  = new CropRectangle(400, 0,   200, 50);
var totalAmount  = new CropRectangle(400, 500, 200, 100);

string vendor, date, total;

using (var input = new OcrInput())
{
    input.LoadImage("invoice.jpg", vendorZone);
    vendor = ocr.Read(input).Text.Trim();
}

using (var input = new OcrInput())
{
    input.LoadImage("invoice.jpg", invoiceDate);
    date = ocr.Read(input).Text.Trim();
}

using (var input = new OcrInput())
{
    input.LoadImage("invoice.jpg", totalAmount);
    total = ocr.Read(input).Text.Trim();
}

地域ベースの OCR ガイド は、CropRectangle の詳細な使用法について説明しています。 請求書固有のワークフローについては、請求書OCRチュートリアルで完全な抽出パターンが説明されています。

IronOCRの追加機能

上記の比較点に加え、 IronOCRはAzure Computer Visionが標準のOCR APIを通じて公開していない機能を提供します。

-スキャン文書の処理:OCRエンジンが画像を認識する前に、完全な前処理パイプライン(傾き補正、ノイズ除去、コントラスト調整、二値化、シャープ化)が適用され、クラウドAPIから空または信頼性の低い結果が返されるスキャンの精度が向上します。 -長文ドキュメントの進捗状況追跡:複数ページのPDF処理中に進捗状況イベントを購読します。UIフィードバックが必要な長時間実行バッチジョブに役立ちます。 -コンピュータビジョン前処理:斜めから撮影された写真や、照明条件が一定でない写真など、処理が難しい文書に対する、深層学習に基づく前処理。

.NETの互換性と将来の準備

IronOCRは、単一のNuGetパッケージから.NET 8、 .NET 9、 .NET Standard 2.0、および.NET Framework 4.6.2から4.8までを対象としています。 Windows x64、Windows x86、Linux x64、macOS(IntelおよびApple Silicon)、ARM64をサポートしており、Azure App Service、AWS Lambda、Dockerコンテナ、オンプレミスLinuxサーバーなど、最新 for .NET展開ターゲットを網羅しています。 Azure コンピュータービジョン の .NET SDK (Azure.AI.Vision.ImageAnalysis) もモダンな .NET 互換性を維持していますが、クラウドアーキテクチャのため、SDKとは独立してバージョン管理および更新されているAzureエンドポイントとの互換性がランタイムとの互換性に優先します。 IronOCRは、言語とエンジンのアップデートをNuGet経由で提供することで、 .NETエコシステム全体とのアップデートモデルの一貫性を維持しています。

結論

Azure Computer Visionは、Azureエコシステム内で既に運用しているチームにとって、クラウド送信に関する規制上の制約がなく、かつ処理量が無料枠または少量有料枠の範囲内である場合に利用できる、高性能なOCRサービスです。 非同期APIは機能的で、標準文書における精度は信頼性が高く、フォーム認識機能の事前構築済みモデルにより、請求書や領収書などの構造化文書タイプの開発作業が軽減されます。

しかし、このコストモデルは規模拡大に対応できない。 月間5万件の文書を処理する場合、 IronOCR LiteはAzureのトランザクション手数料の節約分だけで2か月以内に元が取れます。 複数ページのPDFファイルの場合、ページごとの課金が発生するため、コストはさらに膨らみます。損益分岐点を超えた事業年度ごとに、マイクロソフトに支払われない資金が増えることになります。 月間1万件以上の文書処理が見込まれるチームにとって、長期的な経済性を考えると、永続的なオンプレミスライセンスが有利となる。

データ主権の主張は、より絶対的なものだ。 PHI(保護対象医療情報)、ITAR(国際武器取引規則)で規制されているデータ、弁護士と依頼人の間の秘匿通信、または法的もしくは契約上の理由で組織の境界を越えることができない文書カテゴリがOCRパイプラインを通過する場合、Azure Computer Visionは設計から除外されます。不利になるのではなく、完全に除外されるのです。 IronOCRのローカル処理モデルは、アーキテクチャ上の妥協をすることなく、これらのワークロードを処理します。

非同期ポーリングの複雑さは、実際のオーバーヘッドとなる。 リトライロジック、レート制限処理、ネットワーク失敗モード、ImageAnalysisClientDocumentAnalysisClient の分割により、OCR の価値がないコードが追加されます。それはクラウド統合コードです。 IronOCR の同期 Read() メソッドは、画像と PDF を同一のコードで扱い、非同期の伝播が必要なく、リトライロジックも不要です。 クラウドAPIの基盤構築ではなく、アプリケーション自体の開発にエンジニアリングの労力を費やしたいチームにとって、そのシンプルさはプロジェクトのライフサイクル全体を通して大きな価値をもたらします。

ご注意: Azure Computer Vision および Tesseract はそれぞれの所有者の登録商標です。 本サイトはGoogleやMicrosoftと提携しておらず、推薦またはスポンサーされていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。