最高の C# OCR ライブラリ: IronOCR vs Tesseract vs Azure AI OCR vs Aspose.OCR
SyncfusionはOCR機能に対して開発者1人あたり年間995ドルを請求しますが、そのマーケティングの裏側では、Tesseractのラッパーに過ぎず、tessdataファイルを手動でダウンロードし、バイナリパスを設定し、すべての環境にわたって言語データの展開を管理する必要があります。 要求していない1,600以上のコンポーネントへのアクセス権、 Syncfusionがいつでも監査できる100万ドルの収益上限付きコミュニティライセンス、そして他のすべてのTesseractラッパーが持つ基本的なTesseractの制約(自動前処理なし、直接画像OCRなし)が付与されます。 この比較では、そのトレードオフが実際にどのようなコストを伴うのかを検証する。
Syncfusion OCRについて理解する
Syncfusion OCR Processorは、Syncfusion.PDF.OCR.Net.Core NuGetパッケージに組み込まれたテキスト認識機能で、Syncfusion Essential Studioスイートの一部です。このスイートは、エコシステム内で最大級の.NETコンポーネントコレクションの1つで、1,600以上の個々のコンポーネントを持っています。 OCRは単体製品ではありません。 これはPDFモジュールの機能であり、ライセンス、バージョン管理、およびサポートはすべてEssential Studioのリリースサイクル全体を通して提供されます。
基盤となるOCRエンジンは、LSTMをサポートするTesseract 5です。 Syncfusionは独自のエンジンを開発するのではなく、オープンソースのTesseractプロジェクトをラップし、自社のPDF処理ワークフローを通じて利用できるようにしている。 OCRProcessorと対話する開発者は、事実上、TesseractをPDF優先の抽象化レイヤーを通じて駆動しています。 そのアーキテクチャ上の選択は、画像OCR、展開、および前処理に重大な影響を与える。
主な建築上の特徴:
- Tesseract 5 ラッパー: OCR の精度と機能の限界は、完全に Tesseract によって決定されます。 Syncfusionはエンジンレベルの改善は一切行いません。
- PDF中心の入力モデル:
OCRProcessorはPdfLoadedDocumentオブジェクト上で動作します。 画像は直接渡すことはできません。 それらはまずPDFファイルに埋め込む必要があります。 - 手動のtessdata管理:
OCRProcessorコンストラクタは、tessdataフォルダへのファイルシステムパスを必要とします。 言語.traineddataファイルは、Tesseract GitHubリポジトリから別途ダウンロードする必要があり、各言語につき15–50MBの重さです。 - 2段階のOCRパターン: ドキュメントを処理するには、まず
processor.PerformOCR(document)を呼び出し、その後ページを反復処理して各ページでpage.ExtractText()を呼び出す必要があります。 結果文字列への単一呼び出しパスは存在しません。 -Suiteライセンス:単体でのOCRライセンスはありません。 Syncfusion OCRを使用するすべての開発者は、Essential StudioSuite全体のライセンスを取得します。 -コミュニティライセンスの制限:無料ティアでは、組織の年間収益が100万ドル未満、開発者が5人以下、従業員総数が10人以下、生涯の外部資金調達額が300万ドル以下であることが条件となります。 政府機関は対象外です。 Syncfusionは、コンプライアンスを監査する権利を留保します。
tessdataの依存関係
すべてのSyncfusion OCRの配置には、必要とする各言語の.traineddataファイルを含むtessdataフォルダが必要です。 これらのファイルはNuGetパッケージには同梱されていません。
// tessdata path is required — files are not bundled with the package
private const string TessDataPath = @"tessdata/";
// OCRProcessor constructor: fails if tessdata directory is missing
// or if the required .traineddata files are absent
using var processor = new OCRProcessor(TessDataPath);
processor.Settings.Language = Languages.English;
// Perform OCR on the loaded PDF
processor.PerformOCR(document);
// Extract text requires a separate loop over pages
var text = new StringBuilder();
foreach (PdfLoadedPage page in document.Pages)
{
text.AppendLine(page.ExtractText());
}
// tessdata path is required — files are not bundled with the package
private const string TessDataPath = @"tessdata/";
// OCRProcessor constructor: fails if tessdata directory is missing
// or if the required .traineddata files are absent
using var processor = new OCRProcessor(TessDataPath);
processor.Settings.Language = Languages.English;
// Perform OCR on the loaded PDF
processor.PerformOCR(document);
// Extract text requires a separate loop over pages
var text = new StringBuilder();
foreach (PdfLoadedPage page in document.Pages)
{
text.AppendLine(page.ExtractText());
}
Imports System.Text
' tessdata path is required — files are not bundled with the package
Private Const TessDataPath As String = "tessdata/"
' OCRProcessor constructor: fails if tessdata directory is missing
' or if the required .traineddata files are absent
Using processor As New OCRProcessor(TessDataPath)
processor.Settings.Language = Languages.English
' Perform OCR on the loaded PDF
processor.PerformOCR(document)
' Extract text requires a separate loop over pages
Dim text As New StringBuilder()
For Each page As PdfLoadedPage In document.Pages
text.AppendLine(page.ExtractText())
Next
End Using
tessdataフォルダは、デプロイ先の環境に存在する必要があります。 Dockerコンテナの場合、これはファイルをイメージに組み込むことを意味します(言語数に応じて50~500MBが追加されます)。 Azure App Serviceの場合、これはフォルダをアプリケーションと同じ場所にデプロイすることを意味します。 CI/CDパイプラインの場合、これはファイルのダウンロードをスクリプト化したり、tessdataをソース管理にチェックインしたりすることを意味します。 これは純粋な運用上のオーバーヘッドであり、一度解決すれば済むような技術的な制約ではなく、新しい環境が導入されるたびに発生する問題です。
IronOCRを理解する
IronOCRは、 .NET専用のOCRライブラリであり、外部ランタイム依存関係のない単一のNuGetパッケージとして提供されます。 これは最適化されたTesseract 5エンジンをラップし、開発者の介入を必要とせずにOCR処理の前に実行される自動前処理(傾き補正、ノイズ除去、コントラスト強調、二値化、解像度スケーリング)のレイヤーを追加します。 言語パックは、手動でファイルをダウンロードするのではなく、個別のNuGetパッケージとして提供されます。
主な特徴:
-自己完結型のデプロイメント: tessdataフォルダ、ネイティブバイナリパス構成、 NuGetパッケージ以外の追加ファイルは不要です。
- 直接入力モデル:
IronTesseractは画像ファイル、PDF、ストリーム、バイト配列、URLを直接受け入れます。 画像入力の場合、中間的なPDF変換は不要です。 -自動前処理パイプライン:エンジンはOCRの前にインテリジェントな画像補正を適用し、手動でフィルターを適用することなく、低品質または回転したスキャン画像の精度を大幅に向上させます。 - 1回のAPI呼び出し:
new IronTesseract().Read("file").Textは1つの表現で抽出されたテキストを返します。 - NuGet経由で 125 以上の言語:言語パックは、 GitHubから手動でダウンロードする必要はなく、標準のパッケージ マネージャーを介してインストールされます。
- 永続ライセンス: Liteレベルの$999一度支払いから始まります。 年間更新の必要はありません。 収益制限はありません。 監査リスクなし。 -スレッドセーフ、クロスプラットフォーム: Windows、Linux、macOS、Docker、Azure、AWS上で、プラットフォーム固有の設定なしで動作します。
機能比較
| フィーチャー | Syncfusion OCR | IronOCR |
|---|---|---|
| OCRエンジン | Tesseract 5 (ラッパー) | 最適化されたTesseract 5 |
| tessdata 必須 | はい — 手動ダウンロード | いいえ — 内蔵 |
| ダイレクトイメージOCR | いいえ — PDF変換は不要です | はい |
| 自動前処理 | なし | はい |
| ライセンスモデル | 年間Suiteサブスクリプション | 永久オプションあり |
| 開始価格 | $995/開発者/年 | $999一度支払い |
| コミュニティティア | はい、ただし厳格な上限あり | 無料トライアル |
詳細な機能比較
| フィーチャー | Syncfusion OCR | IronOCR |
|---|---|---|
| 入力フォーマット | ||
| PDF入力 | はい | はい |
| 画像入力(JPG、PNG、BMP形式) | PDF変換のみ | 直接 |
| ストリーム入力 | PDF変換経由 | 直接 |
| パスワードで保護されたPDF | 部分的 | Passwordパラメータと組み込み |
| URL入力 | なし | はい |
| 前処理 | ||
| 自動傾き補正 | いいえ — 外部ライブラリを使用したマニュアル | はい — input.Deskew() |
| 自動ノイズ除去 | いいえ — マニュアル | はい — input.DeNoise() |
| コントラスト強調 | いいえ — マニュアル | はい — input.Contrast() |
| 二値化 | いいえ — マニュアル | はい — input.Binarize() |
| 解像度スケーリング | いいえ — マニュアル | はい — input.EnhanceResolution(300) |
| 出力 | ||
| プレーンテキスト | はい — via page.ExtractText() |
はい — result.Text |
| 検索可能なPDF | はい | はい — result.SaveAsSearchablePdf() |
| 単語レベルの座標 | なし | はい |
| 信頼度スコア | なし | はい — result.Confidence |
| hOCRエクスポート | なし | はい |
| 言語 | ||
| 言語数 | 60歳以上 | 125+ |
| 言語配信 | tessdataの手動ダウンロード | NuGetパッケージ |
| 文書ごとに複数の言語 | はい — ビットごとのフラグ | はい — AddSecondaryLanguage() |
| デプロイメント | ||
| tessdata フォルダが必要です。 | はい | なし |
| Dockerデプロイメント | イメージ内にtessdataが必要です | 単一パッケージ |
| Linuxサポート | はい | はい |
| macOS対応 | はい | はい |
| API。 | ||
| 基本的なPDF OCRのためのコード行数 | 10~15 | 1 |
| 画像OCRのためのコード行数 | 20+(PDF変換) | 1 |
| 地域ベースのOCR | なし | はい — CropRectangle |
| OCR中のバーコード読み取り | なし | はい |
| 非同期OCR | Manual Task.Run |
ネイティブ非同期サポート |
Tesseractの依存関係と継承された制限
Syncfusion OCRは、Tesseractの制約セットを完全に継承しています。 スキャン画像にわずかな回転がある場合、事前に傾き補正を行わないと、Tesseract の出力は判読不能になります。また、文書に背景ノイズが含まれている場合、ノイズ除去処理を行わないと認識精度が低下します。 Tesseractはこれらの補正を自動的に適用しません。受信したデータをそのまま受け取ります。 Syncfusionは独自のプリプロセッシングAPIを提供していません。
Syncfusionアプローチ
事前処理が必要な開発者は、別のイメージングライブラリ(System.Drawing、SkiaSharp、ImageSharp、または類似)を取り入れ、フィルタロジックを実装し、結果をファイルまたはストリームに直列化して、PDFに埋め込み、その後OCRProcessorに渡す必要があります。 これがサプライチェーンの全容です。
// Syncfusion: no preprocessing API — external library required before OCR
// This shows only the OCR portion; image manipulation is extra
using var document = new PdfLoadedDocument(preprocessedPdfPath);
// tessdata path — must exist on deployment target
using var processor = new OCRProcessor(@"tessdata/");
processor.Settings.Language = Languages.English;
// Step 1: OCR pass (adds text layer)
processor.PerformOCR(document);
// Step 2: Text extraction (separate iteration)
var text = new StringBuilder();
foreach (PdfLoadedPage page in document.Pages)
{
text.AppendLine(page.ExtractText());
}
return text.ToString();
// Syncfusion: no preprocessing API — external library required before OCR
// This shows only the OCR portion; image manipulation is extra
using var document = new PdfLoadedDocument(preprocessedPdfPath);
// tessdata path — must exist on deployment target
using var processor = new OCRProcessor(@"tessdata/");
processor.Settings.Language = Languages.English;
// Step 1: OCR pass (adds text layer)
processor.PerformOCR(document);
// Step 2: Text extraction (separate iteration)
var text = new StringBuilder();
foreach (PdfLoadedPage page in document.Pages)
{
text.AppendLine(page.ExtractText());
}
return text.ToString();
Imports Syncfusion.Pdf
Imports Syncfusion.OCR
Imports System.Text
' Syncfusion: no preprocessing API — external library required before OCR
' This shows only the OCR portion; image manipulation is extra
Using document As New PdfLoadedDocument(preprocessedPdfPath)
' tessdata path — must exist on deployment target
Using processor As New OCRProcessor("tessdata/")
processor.Settings.Language = Languages.English
' Step 1: OCR pass (adds text layer)
processor.PerformOCR(document)
' Step 2: Text extraction (separate iteration)
Dim text As New StringBuilder()
For Each page As PdfLoadedPage In document.Pages
text.AppendLine(page.ExtractText())
Next
Return text.ToString()
End Using
End Using
画像入力のパターンはさらに悪い。 SyncfusionのOCRProcessorは画像ファイルを受け入れません。 JPGをOCRする必要がある開発者は、PdfDocumentを作成し、ページを追加し、画像をPdfBitmapとして読み込み、ページに描画し、PDFをMemoryStreamに保存し、PdfLoadedDocumentとして再読み込みし、その後OCRパスを実行する必要があります — テキスト抽出前に9ステップ必要です。
// Syncfusion: OCR an image — requires full PDF creation round-trip
using var pdfDoc = new PdfDocument();
var page = pdfDoc.Pages.Add();
var image = new PdfBitmap(imagePath);
page.Graphics.DrawImage(image, 0, 0, page.Size.Width, page.Size.Height);
using var stream = new MemoryStream();
pdfDoc.Save(stream);
stream.Position = 0;
using var loadedDoc = new PdfLoadedDocument(stream);
using var processor = new OCRProcessor(@"tessdata/");
processor.Settings.Language = Languages.English;
processor.PerformOCR(loadedDoc);
var text = new StringBuilder();
foreach (PdfLoadedPage p in loadedDoc.Pages)
text.AppendLine(p.ExtractText());
return text.ToString();
// Syncfusion: OCR an image — requires full PDF creation round-trip
using var pdfDoc = new PdfDocument();
var page = pdfDoc.Pages.Add();
var image = new PdfBitmap(imagePath);
page.Graphics.DrawImage(image, 0, 0, page.Size.Width, page.Size.Height);
using var stream = new MemoryStream();
pdfDoc.Save(stream);
stream.Position = 0;
using var loadedDoc = new PdfLoadedDocument(stream);
using var processor = new OCRProcessor(@"tessdata/");
processor.Settings.Language = Languages.English;
processor.PerformOCR(loadedDoc);
var text = new StringBuilder();
foreach (PdfLoadedPage p in loadedDoc.Pages)
text.AppendLine(p.ExtractText());
return text.ToString();
Imports Syncfusion.Pdf
Imports Syncfusion.OCR
Imports System.IO
Imports System.Text
' Syncfusion: OCR an image — requires full PDF creation round-trip
Dim text As New StringBuilder()
Using pdfDoc As New PdfDocument()
Dim page = pdfDoc.Pages.Add()
Dim image As New PdfBitmap(imagePath)
page.Graphics.DrawImage(image, 0, 0, page.Size.Width, page.Size.Height)
Using stream As New MemoryStream()
pdfDoc.Save(stream)
stream.Position = 0
Using loadedDoc As New PdfLoadedDocument(stream)
Using processor As New OCRProcessor("tessdata/")
processor.Settings.Language = Languages.English
processor.PerformOCR(loadedDoc)
For Each p As PdfLoadedPage In loadedDoc.Pages
text.AppendLine(p.ExtractText())
Next
End Using
End Using
End Using
End Using
Return text.ToString()
IronOCRのアプローチ
IronOCRのプリプロセスパイプラインは、 OCRエンジンが画像を処理する前に、画像に対して自動的に実行されます。 標準のドキュメントでは、Read()を呼び出すだけで十分です。 劣化したスキャンに対しては、OcrInputオブジェクト上で前処理フィルタを連鎖させることができます。
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
// Explicit preprocessing when needed
input.Deskew();
input.DeNoise();
input.Contrast();
input.Binarize();
input.EnhanceResolution(300);
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
// Explicit preprocessing when needed
input.Deskew();
input.DeNoise();
input.Contrast();
input.Binarize();
input.EnhanceResolution(300);
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr
Using input As New OcrInput()
input.LoadImage("low-quality-scan.jpg")
' Explicit preprocessing when needed
input.Deskew()
input.DeNoise()
input.Contrast()
input.Binarize()
input.EnhanceResolution(300)
Dim result = New IronTesseract().Read(input)
Console.WriteLine(result.Text)
Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
画像とPDFは同じAPIを使用します。 同じRead()呼び出しが両方を処理します。 中間的な文書作成も、設定すべきtessdataパスも、ページ反復ループもありません。ただ結果だけが得られます。 利用可能な前処理操作の詳細については、画像フィルタのチュートリアルを参照してください。また、低品質スキャンの例では、劣化した入力画像における実際の精度比較を確認できます。
tessdataの管理と展開
tessdataの要件は単なるセットアップ手順ではなく、繰り返し発生するデプロイメント上の問題です。 すべての環境(開発者マシン、CIランナー、ステージングサーバー、本番コンテナ、エアギャップ環境)において、アプリケーションが使用する各言語に対応する適切な言語ファイルを含むtessdataフォルダが、設定されたパスに存在する必要があります。 Tesseractの言語ファイルは小さくありません。英語の場合、標準モデルで約23MB、最良とされるLSTMモデルでは約94MBになります。 5 つの言語が 200MB を軽々と超えます。
Syncfusionアプローチ
OCRProcessorコンストラクタは、最初の引数としてtessdataのパスを取ります。 ディレクトリが存在しない場合や必要な.traineddataファイルがない場合は、コンストラクタが即座に例外をスローします。 本番環境へのデプロイでは、最初のOCR呼び出しの前にこれを検証する必要があります。
// Syncfusion tessdata validation — production code needs this
private const string TessDataPath = @"tessdata/";
public bool ValidateTessdata()
{
if (!Directory.Exists(TessDataPath))
return false; // Application fails to OCR entirely
var requiredLanguages = new[] { "eng", "fra", "deu" };
foreach (var lang in requiredLanguages)
{
string filePath = Path.Combine(TessDataPath, $"{lang}.traineddata");
if (!File.Exists(filePath))
return false;
}
return true;
}
// Language configuration using bitwise flags
// Requires ALL flagged language files in tessdata folder
processor.Settings.Language = Languages.English | Languages.French;
// Syncfusion tessdata validation — production code needs this
private const string TessDataPath = @"tessdata/";
public bool ValidateTessdata()
{
if (!Directory.Exists(TessDataPath))
return false; // Application fails to OCR entirely
var requiredLanguages = new[] { "eng", "fra", "deu" };
foreach (var lang in requiredLanguages)
{
string filePath = Path.Combine(TessDataPath, $"{lang}.traineddata");
if (!File.Exists(filePath))
return false;
}
return true;
}
// Language configuration using bitwise flags
// Requires ALL flagged language files in tessdata folder
processor.Settings.Language = Languages.English | Languages.French;
Imports System.IO
' Syncfusion tessdata validation — production code needs this
Private Const TessDataPath As String = "tessdata/"
Public Function ValidateTessdata() As Boolean
If Not Directory.Exists(TessDataPath) Then
Return False ' Application fails to OCR entirely
End If
Dim requiredLanguages = New String() {"eng", "fra", "deu"}
For Each lang In requiredLanguages
Dim filePath As String = Path.Combine(TessDataPath, $"{lang}.traineddata")
If Not File.Exists(filePath) Then
Return False
End If
Next
Return True
End Function
' Language configuration using bitwise flags
' Requires ALL flagged language files in tessdata folder
processor.Settings.Language = Languages.English Or Languages.French
Dockerデプロイメントでは、tessdataをイメージに追加する必要があります。 典型的なDockerfileへの追加例:
# tessdataはコンテナイメージに組み込む必要があります
COPY tessdata/ /app/tessdata/
# eng.traineddataだけでも、品質レベルに応じて23~94MBになります。
# 5言語=画像レイヤーごとに100~500MBが追加される
そのオーバーヘッドは累積します。イメージの再構築のたびにtessdataファイルがコピーされ、レイヤーキャッシュのミスが発生するたびにそれらが再ダウンロードされ、すべてのデプロイメントターゲットはアプリケーションが想定する正確なパスにフォルダを必要とします。
IronOCRのアプローチ
IronOCRの言語パックはNuGet経由でインストールされます。 パッケージマネージャーは、ダウンロード、バージョン管理、およびアップデートを処理します。 フォルダ管理もパス設定も不要です。
# Language packs install via NuGet — no manual downloads
dotnet add package IronOcr.Languages.French
dotnet add package IronOcr.Languages.German
dotnet add package IronOcr.Languages.ChineseSimplified
# Language packs install via NuGet — no manual downloads
dotnet add package IronOcr.Languages.French
dotnet add package IronOcr.Languages.German
dotnet add package IronOcr.Languages.ChineseSimplified
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;
ocr.AddSecondaryLanguage(OcrLanguage.German);
ocr.AddSecondaryLanguage(OcrLanguage.English);
var result = ocr.Read("multilingual-document.pdf");
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;
ocr.AddSecondaryLanguage(OcrLanguage.German);
ocr.AddSecondaryLanguage(OcrLanguage.English);
var result = ocr.Read("multilingual-document.pdf");
Imports IronOcr
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.French
ocr.AddSecondaryLanguage(OcrLanguage.German)
ocr.AddSecondaryLanguage(OcrLanguage.English)
Dim result = ocr.Read("multilingual-document.pdf")
Dockerイメージにはtessdataレイヤーは必要ありません。 CIパイプラインでは、tessdataのダウンロード手順は不要です。 エアギャップ環境では、バイナリファイルの管理をスクリプト化する代わりに、ローカルのNuGetフィードを使用できます。 Docker導入ガイドとLinux導入ガイドには、それぞれのプラットフォームに関する詳細が記載されています。
コミュニティライセンスの制限事項とSuite料金
Syncfusionのコミュニティライセンスは、小規模チームにとってライブラリを無料で利用できる理由としてよく挙げられる。 これらの規約は、ほとんどの開発者が出荷後に気づく以上に、大きな露出をもたらす。
Syncfusionアプローチ
コミュニティライセンスを取得するには、以下の5つの条件すべてを同時に満たす必要があります。
年間総収入が100万米ドル未満(投資収益を含むすべての収入源)
- 開発者(正社員、パートタイム、およびコードを書く契約社員)が5名以下
- 従業員総数10名以下(開発者に加えて営業、マーケティング、管理スタッフ)
- 生涯外部資金調達額が300万ドル未満 政府機関ではない
Syncfusionは、いつでもコンプライアンス監査を実施する権利を留保します。ライセンス登録は簡単です。
// Syncfusion: suite-wide license — community license terms apply
// Revenue < $1M, developers <= 5, employees <= 10, funding < $3M
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-SYNCFUSION-KEY");
// Syncfusion: suite-wide license — community license terms apply
// Revenue < $1M, developers <= 5, employees <= 10, funding < $3M
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-SYNCFUSION-KEY");
' Syncfusion: suite-wide license — community license terms apply
' Revenue < $1M, developers <= 5, employees <= 10, funding < $3M
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-SYNCFUSION-KEY")
納期を守るために請負業者を追加したり、収益が100万ドルを超える大型契約を締結したり、シリーズAラウンドの資金調達を行ったりするなど、いずれかの基準値を超えると、コミュニティライセンスは無効になり、商用価格への移行が即座に行われます。 遡及的な対応が求められる。 商業料金は、完全なEssential Studioスイートの開発者1人あたり年額$995です; OCR専用のプランはありません。
Syncfusion OCRを使用する5人の開発チームが、ベース商業料金で3年間使用する場合、IronOCR Professionalで同じ機能を$2,999で一度の支払いで利用できるものと比べ、ライセンス費用が大幅に高くなります。 この違いにより、ドキュメントからのテキスト抽出とは無関係の 1,000 を超えるコンポーネントにアクセスできます。
IronOCRのアプローチ
IronOCRのライセンスは、開発者ごと、またはプロジェクトごとに永続的に購入できるもので、収益制限、従業員数の制限、監査規定は一切ありません。
// IronOCR: no revenue restrictions, no employee count limits
// Perpetual license — use indefinitely after one-time purchase
IronOcr.License.LicenseKey = "YOUR-IRONOCR-KEY";
// IronOCR: no revenue restrictions, no employee count limits
// Perpetual license — use indefinitely after one-time purchase
IronOcr.License.LicenseKey = "YOUR-IRONOCR-KEY";
' IronOCR: no revenue restrictions, no employee count limits
' Perpetual license — use indefinitely after one-time purchase
IronOcr.License.LicenseKey = "YOUR-IRONOCR-KEY"
Liteレベル($999一度支払い、開発者1人)でほとんどの個別プロジェクトシナリオをカバーします。 Professional($2,999一度支払い、開発者10人)は、Syncfusionの開発者1人あたり年ごとのモデルへの直接の比較ポイントです。 Unlimited($5,999一度支払い)は、開発者とプロジェクト数の制限をすべて削除します。 開発者のチームが5人から15人に増えても、ライセンスに関するイベントは発生しません。
前処理のギャップ
Tesseractは、前処理を行わない場合、回転、ノイズ、低コントラスト、または300 DPI未満の解像度を持つ画像に対して、性能の低い結果しか得られません。 これはTesseractの既知の動作です。 Syncfusionは前処理APIを提供していないため、開発者がそのコストをすべて負担することになります。
Syncfusionアプローチ
Syncfusion OCRワークフローに前処理を追加するには、サードパーティ製の画像ライブラリ、追加のコード、および追加の導入に関する考慮事項が必要です。 SyncfusionのPDF抽出例のパターンは、そのギャップを明確に示している。
// Syncfusion: manual preprocessing required using separate imaging library
// (System.Drawing, SkiaSharp, ImageSharp, etc. — not included in Syncfusion OCR)
// After external preprocessing, image must be embedded in PDF before OCR:
using var pdfDoc = new PdfDocument();
var page = pdfDoc.Pages.Add();
var processedImage = new PdfBitmap(processedImagePath); // result of external preprocessing
page.Graphics.DrawImage(processedImage, 0, 0, page.Size.Width, page.Size.Height);
using var stream = new MemoryStream();
pdfDoc.Save(stream);
stream.Position = 0;
using var loadedDoc = new PdfLoadedDocument(stream);
using var processor = new OCRProcessor(@"tessdata/");
processor.Settings.Language = Languages.English;
processor.PerformOCR(loadedDoc);
// Text extraction loop still required after preprocessing + OCR
var text = new StringBuilder();
foreach (PdfLoadedPage p in loadedDoc.Pages)
text.AppendLine(p.ExtractText());
// Syncfusion: manual preprocessing required using separate imaging library
// (System.Drawing, SkiaSharp, ImageSharp, etc. — not included in Syncfusion OCR)
// After external preprocessing, image must be embedded in PDF before OCR:
using var pdfDoc = new PdfDocument();
var page = pdfDoc.Pages.Add();
var processedImage = new PdfBitmap(processedImagePath); // result of external preprocessing
page.Graphics.DrawImage(processedImage, 0, 0, page.Size.Width, page.Size.Height);
using var stream = new MemoryStream();
pdfDoc.Save(stream);
stream.Position = 0;
using var loadedDoc = new PdfLoadedDocument(stream);
using var processor = new OCRProcessor(@"tessdata/");
processor.Settings.Language = Languages.English;
processor.PerformOCR(loadedDoc);
// Text extraction loop still required after preprocessing + OCR
var text = new StringBuilder();
foreach (PdfLoadedPage p in loadedDoc.Pages)
text.AppendLine(p.ExtractText());
Imports System.IO
Imports Syncfusion.Pdf
Imports Syncfusion.OCR
' Syncfusion: manual preprocessing required using separate imaging library
' (System.Drawing, SkiaSharp, ImageSharp, etc. — not included in Syncfusion OCR)
' After external preprocessing, image must be embedded in PDF before OCR:
Dim pdfDoc As New PdfDocument()
Dim page = pdfDoc.Pages.Add()
Dim processedImage As New PdfBitmap(processedImagePath) ' result of external preprocessing
page.Graphics.DrawImage(processedImage, 0, 0, page.Size.Width, page.Size.Height)
Using stream As New MemoryStream()
pdfDoc.Save(stream)
stream.Position = 0
Using loadedDoc As New PdfLoadedDocument(stream)
Using processor As New OCRProcessor("tessdata/")
processor.Settings.Language = Languages.English
processor.PerformOCR(loadedDoc)
End Using
' Text extraction loop still required after preprocessing + OCR
Dim text As New StringBuilder()
For Each p As PdfLoadedPage In loadedDoc.Pages
text.AppendLine(p.ExtractText())
Next
End Using
End Using
結果として、サードパーティ製の画像処理ライブラリへの依存、20行以上の定型文、そしてスキャンした画像1枚をOCR処理するためだけにPDFの往復処理が発生するという事態に陥った。 Syncfusionのドキュメントでは、標準印刷出力以下の品質の文書については、このパターンを明確に推奨しています。
IronOCRのアプローチ
IronOCRの前処理機能は、コアパッケージの一部です。 各フィルタはOcrInputのメソッドです。 開発者は、ドキュメントで要求されている内容のみを適用するか、標準的なケースについては自動修正に頼る。
using var input = new OcrInput();
input.LoadImage("rotated-noisy-scan.jpg");
// Preprocessing filters built into IronOCR
input.Deskew(); // Correct rotation
input.DeNoise(); // Remove background noise
input.Contrast(); // Improve contrast
input.Binarize(); // Convert to black/white
input.EnhanceResolution(300); // Scale to optimal DPI
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
using var input = new OcrInput();
input.LoadImage("rotated-noisy-scan.jpg");
// Preprocessing filters built into IronOCR
input.Deskew(); // Correct rotation
input.DeNoise(); // Remove background noise
input.Contrast(); // Improve contrast
input.Binarize(); // Convert to black/white
input.EnhanceResolution(300); // Scale to optimal DPI
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Using input As New OcrInput()
input.LoadImage("rotated-noisy-scan.jpg")
' Preprocessing filters built into IronOCR
input.Deskew() ' Correct rotation
input.DeNoise() ' Remove background noise
input.Contrast() ' Improve contrast
input.Binarize() ' Convert to black/white
input.EnhanceResolution(300) ' Scale to optimal DPI
Dim result = New IronTesseract().Read(input)
Console.WriteLine(result.Text)
End Using
外部画像ライブラリはありません。 PDFの往復はありません。同じOcrInputオブジェクトが前処理指示を運ぶと同時にファイルパスも運び、2つの懸念が一緒に移動するので、別個のパイプラインステージは必要ありません。 入力画像が常に劣化している制作ワークフローについては、利用可能なフィルターの全セットについて、画像方向補正ガイドと画像色補正ガイドを参照してください。
APIマッピングリファレンス
| Syncfusion OCR | IronOCR相当値 | ノート |
|---|---|---|
Syncfusion.PDF.OCR.Net.Core |
IronOcr |
NuGetパッケージ |
SyncfusionLicenseProvider.RegisterLicense() |
IronOcr.License.LicenseKey = |
Suiteの登録はできません |
OCRProcessor(tessdataPath) |
new IronTesseract() |
パス引数なし |
PdfLoadedDocument(path) |
OcrInput with LoadPdf(path) |
またはRead()にパスを直接渡します |
processor.Settings.Language |
ocr.Language |
OcrLanguage enum |
Languages.English \| Languages.French |
ocr.AddSecondaryLanguage(OcrLanguage.French) |
言語ごとに個別の呼び出し |
processor.PerformOCR(document) |
ocr.Read(input) |
結果を直接返します |
page.ExtractText() |
result.Text |
ページループは不要です |
document.Pages iteration |
result.Pages[] array |
ページレベルのアクセスが必要な場合に利用可能です。 |
| tessdataの手動ダウンロード | dotnet add package IronOcr.Languages.* |
NuGet 管理 |
| 画像OCRのためのPDF往復通信 | input.LoadImage(path) |
変換不要 |
| 前処理APIなし | input.Deskew(), input.DeNoise()など。 |
内蔵フィルター |
document.Save(outputStream) |
result.SaveAsSearchablePdf(path) |
検索可能なPDF出力 |
チームがSyncfusion OCRからIronOCRへの移行を検討する場合
コミュニティライセンスの増加がライセンスイベントを引き起こす場合
あるスタートアップ企業が、最初の製品開発にあたり、 Syncfusionのコミュニティライセンスを使用している。 売上高は70万ドルです。 チームは4人の開発者で構成されています。 製品は順調に出荷され、大規模なEnterprise契約が締結され、年初から売上は120万ドルを超えた。 コミュニティライセンスは現在無効です。 同社は直ちにすべての開発者向けに商用ライセンスを購入しなければならない。 1 人の開発者あたり 995 ドルで、4 人の開発者の年間コストは 3,980 ドル - 計画外、中間年度、および会社が使用したことのないコンポーネントを含める。 チームが重要な納品サイクルの真っ只中にいる場合、そのコンプライアンス違反は最悪のタイミングで発生する。
より深刻なリスクは構造的なものだ。 コミュニティライセンスを使用しているチームが成長していく過程では、ライセンスの強制アップグレードが避けられなくなる可能性が高い。 問題は、移行が起こるかどうかではなく、いつ起こるかである。 これを予測し、しきい値に達する前にIronOCRの永続モデルを評価するチームは、慌てて対応する必要性を回避できる。
画像OCRが主要なユースケースとなる場合
多くの文書処理ワークフローは、主に画像を取り扱う。例えば、スキャンされた請求書、撮影された領収書、カメラで撮影されたフォームなどである。 Syncfusionのアーキテクチャは、主要な入力フォーマットとしてPDFを想定しています。 そのプロセッサは画像を直接受け付けません。 画像OCRワークフローでは、OCRを開始する前に、PDFの作成、画像の埋め込み、ストリームへの保存、再読み込みといった一連の処理をすべて完了させる必要があります。 1日に数千枚の請求書画像を処理するような大量処理パイプラインでは、この往復処理によって実行時間とコードの複雑さの両面で、測定可能なオーバーヘッドが増加する。
画像OCRを主な用途とするチーム(PDFテキストレイヤー抽出を主な用途としないチーム)は、Syncfusionのアーキテクチャの枠組みに逆行する形で作業を進めている。 IronOCRは、画像パスとPDFを同じ単一呼び出しAPIで受け入れるため、画像優先のワークフローもPDF優先のワークフローと同様に簡単に実行できます。
tessdataの導入の複雑さが、その価値提案を上回る場合
コンテナ化された環境でSyncfusionベースのOCRアプリケーションを維持するDevOpsエンジニアは、tessdataに多くの時間を費やします: Dockerfilesに追加し、バージョン管理から外してCIでは利用可能にし、言語ファイルのバージョンをアプリケーションのバージョンとは独立して管理し、新しい環境でtessdata directory not foundエラーのデバッグを行います。 そうした作業はどれもビジネス価値を生み出さない。 SyncfusionがIronOCRが提供するものをバンドルしていないという理由だけで、この状況が存在するのです。
tessdataの管理に伴うオーバーヘッドが、本番環境でのインシデント、デプロイの失敗、分かりにくいセットアップ要件に戸惑う新メンバーなど、継続的なサポートコストになると、チームは、よりシンプルなツールで摩擦なく実現できる機能に対して、 SyncfusionSuiteの価格が妥当かどうかを検討し始める。
年間更新が予算計画上の問題となる場合
Syncfusionは、アップデートとサポートを維持するために年間更新が必要です。 開発者5人からなるチームは、開発者1人あたり年間995ドルを支払うため、製品が稼働している限り、年間4,975ドルの費用が発生します。10年間の製品利用にかかるSyncfusionのライセンス料は49,750ドルで、これはすべてOCR機能のための費用です。 IronOCRの永久ライセンスモデルは、最初の購入で無期限の使用が保証されることを意味します。 任意加入の年間更新プランでは、アップデートや新機能の利用が可能になりますが、更新プランに加入しなくても図書館は引き続き利用できます。 複数年にわたるソフトウェア費用を計画する財務チームにとって、永久ライセンスは、時間の経過とともに累積していく繰り返し発生する費用項目を排除できるという利点がある。
OCRのみが必要な場合
Syncfusionの価値提案は、チームがグリッド、チャート、PDF編集、OCRなど、複数のSuiteを同じ製品内で積極的に活用する場合にこそ真価を発揮します。 テキスト抽出を必要とするチームにとって、未使用のコンポーネント1,599個は、何のメリットもないコストを意味する。 Essential StudioのNuGetグラフは、どの機能を使用するかに関わらず、複数の推移的依存関係を取り込むため、パッケージの復元時間とデプロイ成果物のサイズの両方において、ビルドに大きな負荷がかかります。IronOCRは対象範囲を絞り込んでいるため、依存関係グラフにはテキスト抽出ワークフローに必要なものだけが含まれており、それ以外のものは一切含まれていません。
一般的な移行の考慮事項
tessdataフォルダの削除
移行時に最初に行う具体的な変更は、プロジェクトからtessdataフォルダを削除することです。 tessdataファイルをCopyToOutputDirectory = AlwaysまたはCopyToOutputDirectory = PreserveNewestとしてマークしている.csprojファイルは、これらのエントリを削除する必要があります。 tessdataのダウンロードをスクリプト化したり、共有場所からtessdataをコピーしたりするCI/CDパイプラインは、これらの手順を削除する必要があります。 COPY tessdata/ /app/tessdata/を持つDockerfileレイヤーは削除する必要があります。 それぞれの削除作業は簡単ですが、移行後のアプリケーションをテストする前に、すべてのパイプライン定義を監査して、孤立したtessdata参照が残っていないことを確認することをお勧めします。
2段階OCRパターンの置き換え
Syncfusionの、PerformOCR(document)を呼び出してからpage.ExtractText()を反復するパターンには、IronOCRの直接の対応がありません — IronOCRは両方のステップを1回のRead()呼び出しに組み合わせているからです。 基本的なPDF OCRメソッドの移行は、メソッド本体のほぼ完全な書き直しですが、結果として行数は大幅に削減されます。
// Before (Syncfusion): ~15 lines including using statements
using var document = new PdfLoadedDocument(pdfPath);
using var processor = new OCRProcessor(@"tessdata/");
processor.Settings.Language = Languages.English;
processor.PerformOCR(document);
var text = new StringBuilder();
foreach (PdfLoadedPage page in document.Pages)
text.AppendLine(page.ExtractText());
return text.ToString();
// After (IronOCR): 1 line
return new IronTesseract().Read(pdfPath).Text;
// Before (Syncfusion): ~15 lines including using statements
using var document = new PdfLoadedDocument(pdfPath);
using var processor = new OCRProcessor(@"tessdata/");
processor.Settings.Language = Languages.English;
processor.PerformOCR(document);
var text = new StringBuilder();
foreach (PdfLoadedPage page in document.Pages)
text.AppendLine(page.ExtractText());
return text.ToString();
// After (IronOCR): 1 line
return new IronTesseract().Read(pdfPath).Text;
Imports Syncfusion.Pdf
Imports Syncfusion.OCR
Imports System.Text
' Before (Syncfusion): ~15 lines including using statements
Using document As New PdfLoadedDocument(pdfPath)
Using processor As New OCRProcessor("tessdata/")
processor.Settings.Language = Languages.English
processor.PerformOCR(document)
Dim text As New StringBuilder()
For Each page As PdfLoadedPage In document.Pages
text.AppendLine(page.ExtractText())
Next
Return text.ToString()
End Using
End Using
' After (IronOCR): 1 line
Return New IronTesseract().Read(pdfPath).Text
結合されたテキストではなく、ページレベルの結果が必要な呼び出し元には、result.Pages[]が同じ構造を提供します。 読み取り結果ガイドは、単語、行、段落、および座標データを含む完全なOcrResultオブジェクトをカバーしています。
言語設定の変換
Syncfusionは、複数言語を組み合わせるためにビットワイズフラグを持つLanguages enumを使用します: Languages.English | Languages.French。 IronOCRは、主要言語に加えて付加的な二次言語を使用します。
// Syncfusion (remove)
processor.Settings.Language = Languages.English | Languages.French | Languages.German;
// IronOCR (replace with)
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.French);
ocr.AddSecondaryLanguage(OcrLanguage.German);
// Syncfusion (remove)
processor.Settings.Language = Languages.English | Languages.French | Languages.German;
// IronOCR (replace with)
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.French);
ocr.AddSecondaryLanguage(OcrLanguage.German);
' Syncfusion (remove)
' processor.Settings.Language = Languages.English Or Languages.French Or Languages.German
' IronOCR (replace with)
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
ocr.AddSecondaryLanguage(OcrLanguage.French)
ocr.AddSecondaryLanguage(OcrLanguage.German)
IronOCRのOcrLanguage enumは、品質層を区別します(例: 高精度なLSTMモデルにはOcrLanguage.EnglishBest、標準モデルにはOcrLanguage.English)。 適切なプランを選択するには、文書の品質とパフォーマンス要件を考慮する必要があります。
エラー処理の更新
Syncfusion OCRコードベースには通常、tessdataの検証チェック(ディレクトリの存在を確認し、特定の.traineddataファイルをチェックする)やコミュニティライセンスのコンプライアンスガードが含まれています。 これらは全て移行後に削除できます。 IronOCRは、見逃す可能性のあるtessdataが存在しないため、tessdata関連の例外をスローしません。 残りのエラー処理は、ファイルが見つからない、サポートされていない形式、ライセンスの検証に関するもので、これらは他の.NETライブラリと本質的に同じです。
// IronOCR error handling after migration
// なし tessdata validation needed
// なし community license compliance checks needed
try
{
return new IronTesseract().Read(pdfPath).Text;
}
catch (FileNotFoundException ex)
{
throw new ArgumentException($"PDF file not found: {pdfPath}", ex);
}
// IronOCR error handling after migration
// なし tessdata validation needed
// なし community license compliance checks needed
try
{
return new IronTesseract().Read(pdfPath).Text;
}
catch (FileNotFoundException ex)
{
throw new ArgumentException($"PDF file not found: {pdfPath}", ex);
}
Imports IronOcr
' IronOCR error handling after migration
' なし tessdata validation needed
' なし community license compliance checks needed
Try
Return New IronTesseract().Read(pdfPath).Text
Catch ex As FileNotFoundException
Throw New ArgumentException($"PDF file not found: {pdfPath}", ex)
End Try
IronOCRの追加機能
上記で説明した前処理、tessdataの削除、ライセンスの違いに加えて、 IronOCRはSyncfusion OCRにはない文書タイプ固有の機能を提供します。
-パスポートおよびID文書の読み取り:カスタム設定なしで、機械読み取り可能な旅行文書、政府発行のID、およびMRZゾーンの認識設定を最適化しました。 -ナンバープレート認識:複数の文字セットに対応した英数字プレート形式に特化した認識モード。
- MICR小切手読み取り:標準的なOCRでは一貫性のない結果しか得られない金融文書から、磁気インク文字認識の行を読み取ります。
- マルチページTIFF処理: マルチフレームTIFFファイルを1つの
OcrInputオブジェクトとして処理し、すべてのページを構造化された結果で返します — フレーム分割は不要です。 -文書からの表の抽出:単語と文字の座標データにより、スキャンされた文書から表構造をプログラムで再構築することが可能になり、ページレベルのテキストに必要な文字列解析のアプローチを回避できます。
.NETの互換性と将来の準備
IronOCRは、 .NET Framework 4.6.2、 .NET Core 3.1、 .NET 5、 .NET 6、 .NET 7、 .NET 8、および.NET 9を対象としており、アップデートはMicrosoftの.NETリリーススケジュールに合わせて提供されます。 Windows x64、Windows x86、Linux x64、macOS(IntelおよびApple Silicon)、Dockerコンテナ、Azure App Service、Azure Functions、AWS Lambda上で動作し、プラットフォーム固有のネイティブバイナリ管理は不要です。 Syncfusion Essential Studioは同様のフレームワーク範囲を対象としていますが、tessdataへの依存関係により、IronOCRのデプロイメントモデルには存在しないプラットフォーム固有のレイヤーが導入されます。これは、すべてのターゲットアーキテクチャとオペレーティングシステムで解決する必要のあるファイルシステムパスです。 コンテナ化されたワークロードやマルチクラウド環境を実行しているチームにとって、 IronOCRが採用する自己完結型パッケージ方式は、環境固有の障害というカテゴリーを完全に排除します。
結論
Syncfusion OCRは、特定のニッチ市場をうまく開拓しています。それは、複数のプラットフォームでEssential Studioを既に運用しており、スイートのUIコンポーネント、PDFツール、レポート機能を積極的に活用している組織向けであり、OCRはその多くの機能の一つに過ぎません。 そのプロファイルの場合、開発者一人当たりの年間コストは非常に幅広い機能に分散され、tessdataのオーバーヘッドは既に複雑なデプロイメントの一部として受け入れられています。
そのニッチ市場以外では、そのトレードオフを正当化するのは難しい。 Tesseractラッピングの開発者1人あたり年額$995を支払うことにより、事前処理APIがなく、直接画像OCRもなく、必須のtessdata管理が必要で、成長する組織に監査のリスクを生むコミュニティライセンスがあり、IronOCRがより低い総額でよりシンプルな運用モデルで提供する機能を有料で取得することになります。 5人の開発者、3年間の比較(Syncfusionでは非常に多く、IronOCR Professional永続版の$2,999に対して)は、その差が実際にどれだけのコストになるかを数量化します。
tessdataの問題は抽象的なものではない。 これは、構成が必要なすべての新しい開発環境、言語ファイルを格納する必要のあるすべてのDockerイメージ、ダウンロードをスクリプト化する必要のあるすべてのCIパイプライン、およびパスが間違っているかファイルが見つからないすべての本番環境でのインシデントで発生します。 IronOCRは、標準的なNuGetインストールで、その問題カテゴリ全体を解消します。
2026年に新しいOCR機能を構築しようとしているチームにとって、最も簡単な推奨事項はIronOCRから始めることです。 APIはよりシンプルで、導入も簡単、ライセンスモデルは成長を阻害するものではなく、エンジンに組み込まれた前処理機能は、ラッパーに関係なくTesseract単体では自動的に解決できない文書品質の問題を処理します。 IronOCRのドキュメントとチュートリアルでは、基本的な設定から高度な文書処理ワークフローまで、すべての機能を網羅しています。
よくある質問
Syncfusion OCR ライブラリとは?
Syncfusion OCR Library は、開発者や企業が画像や文書からテキストを抽出するために使用する OCR ソリューションです。.NETアプリケーション開発のためにIronOCRと一緒に評価されるいくつかのOCRオプションの一つです。
IronOCRは.NET開発者向けSyncfusion OCRライブラリと比べてどうですか?
IronOCRはNuGetネイティブ for .NET OCRライブラリで、.CoreエンジンとしてIronTesseractを使用しています。Syncfusion OCR Libraryと比較して、よりシンプルなデプロイメント(SDKインストーラーなし)、定額制価格、COMインターオプやクラウド依存のないクリーンなC# APIを提供します。
IronOCRはSyncfusion OCR Libraryよりもセットアップが簡単ですか?
IronOCRは単一のNuGetパッケージでインストールされます。SDKインストーラー、ライセンスファイルのコピー、COMコンポーネントの登録、ランタイムバイナリの管理は必要ありません。OCRエンジン全体がパッケージにバンドルされています。
Syncfusion OCRライブラリとIronOCRにはどのような精度の違いがありますか?
IronOCRは、標準的なビジネス文書、請求書、領収書、スキャンしたフォームに対して高い認識精度を達成します。高度に劣化した文書や一般的でないスクリプトの場合、精度はソースの品質によって異なります。IronOCRは低品質入力の認識を向上させる画像前処理フィルターを含んでいます。
IronOCRはPDFテキスト抽出をサポートしていますか?
IronOCRは、ネイティブPDFとスキャンしたPDFイメージの両方から、一回の呼び出しでテキストを抽出します。また、複数ページのTIFFファイル、画像、ストリームもサポートします。スキャンしたPDFの場合、OCRはページごとに適用され、ページごとの結果オブジェクトを持ちます。
Syncfusion OCRライブラリのライセンスはIronOCRと比べてどうですか?
IronOCRは、定額制の永久ライセンスで、ページ毎やスキャン毎の課金はありません。大量のドキュメントを処理する組織は、ボリュームに関係なく同じライセンス費用を支払います。詳しくはIronOCRライセンスページをご覧ください。
IronOCR はどの言語をサポートしていますか?
IronOCRは個別のNuGet言語パックにより127言語をサポートしています。言語を追加するには'dotnet add package IronOcr.Languages.{Language}'コマンドを実行するだけです。手動でのファイル配置やパス設定は必要ありません。
.NETプロジェクトにIronOCRをインストールするにはどうすればよいですか?
NuGet経由でインストールします:パッケージマネージャーコンソールで'Install-Package IronOcr'、またはCLIで'dotnet add package IronOcr'。追加の言語パックも同様にインストールされます。ネイティブSDKインストーラーは必要ありません。
IronOcr はSyncfusion OCRと違い、Dockerやコンテナでのデプロイに適していますか?
IronOCRはNuGetパッケージによってDockerコンテナで動作します。ライセンスキーは環境変数で設定します。OCRエンジン自体にはライセンスファイル、SDKパス、ボリュームマウントは必要ありません。
購入前にIronOCRをSyncfusion OCRと比較して試すことはできますか?
IronOCRのトライアルモードでは、ドキュメントを処理し、出力に透かしをオーバーレイしたOCR結果を返します。ライセンスを購入する前に、ご自身の文書で精度を確認することができます。
IronOCRはテキスト抽出とバーコード読み取りをサポートしていますか?
IronOCRはテキスト抽出とOCRに重点を置いています。バーコード読み取りについては、Iron SoftwareはIronBarcodeをコンパニオンライブラリとして提供しています。どちらも個別に、あるいはIron Suiteのバンドルとして提供されています。
Syncfusion OCR LibraryからIronOCRへの移行は簡単ですか?
Syncfusion OCRライブラリからIronOCRへの移行は、初期化シーケンスをIronTesseractのインスタンス生成に置き換え、COMライフサイクル管理を削除し、APIコールを更新することを含みます。ほとんどの移行はコードの複雑さを大幅に軽減します。

