IRONSOFTWAREHOME
影片

從 Aspose.OCR 遷移到 IronOCR

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

這個指南為 .NET 開發者提供了從 Aspose.OCR 遷移到 IronOCR 的完整過程。 它涵蓋了包交換、命名空間更改、授權初始化以及四個具體的程式碼遷移範例,這些範例來自於實際的 Aspose.OCR 使用模式——識別設置配置、區域檢測模式、使用信任度過濾的批量識別和結構化輸出處理。 每個範例都會同時顯示 Aspose.OCR 方法和IronOCR的對應方法,使您能夠無需猜測地翻譯現有的程式碼。

為什麼要從 Aspose.OCR 遷移

團隊離開 Aspose.OCR 的原因聚焦在兩個壓力點上:訂閱計費模式和手動識別流程引入的配置負擔。

訂閱費用無上限地累積。 Aspose.OCR 沒有永久授權等級。 開發者小企業授權每位開發者每年 $999。 一個五人團隊續訂三年需要支付 $14,985,還沒寫一行業務邏輯。IronOCR的 Professional 等級僅需支付 $2,399 一次——相同的覆蓋範圍,永遠不需續訂。 當財務部門詢問為什麼 OCR 相依性每年更新如同 SaaS 訂閱時,數字變得不容忽視。

每次辨識呼叫都需要設置物件的儀式。 Aspose.OCR 將其配置介面分為 DetectAreasModePreprocessingFilter 集合。 在您能呼叫 RecognizeImage 之前,您需要構建一個設置物件,填充它,並顯式傳遞它。IronOCR將其合併為 .Read()。 每次呼叫的差異很小; 它累積在整個程式碼庫中。

區域檢測模式選擇是手動且具有影響的。 Aspose.OCR 揭露 DetectAreasMode 值(NONE),開發者必須為每種文件型別選擇。 在結構化表單上選錯模式會降低識別精度。IronOCR自動分析文件佈局,並揭露結構化結果——段落、行、字詞——無需事先聲明模式。

批處理需要進行手動管理。 在 Aspose.OCR 中將識別的頁面批處理保存為可搜尋的 PDF 或結構化資料文件,意味著需要將 RecognitionResult 物件累積到 List<RecognitionResult> 中,然後將該列表傳遞給 SaveMultipageDocument。 列表執行緒是您的負責。IronOCR通過單個 OcrInput 物件接受多個輸入,並生成一個包含所有頁面的 OcrResult

輸出格式轉換涉及多個 API 介面。 在 Aspose.OCR 中導出到 JSON、XML 或純文字都需要將單獨的 SaveFormat 枚舉值傳給 SaveMultipageDocument。 在保存之前根據信任度過濾這些結果需要遍歷列表並檢查每個 RecognitionAreasConfidence 陣列。IronOCR在單個結果物件上揭露 result.Confidenceresult.Pages - 信任度過濾是一行 LINQ 表達式。

IronOCR 授權模式完全消除了續訂風險。 購買的授權是永久歸您所有。 更新在一年內包含; 之後,最後收到的版本繼續在生產環境中運作而不會暴露合規風險。 並不存在未支付導致部署失效的情境。

根本問題

Aspose.OCR 將識別配置與一個需要構建、填充並在每次呼叫中傳遞的設置物件相關聯。 模式、語言、過濾器和區域策略都是該物件的屬性:

// Aspose.OCR: build a settings object for every recognition call
var api = new AsposeOcr();
var settings = new RecognitionSettings
{
    Language = Language.Eng,
    DetectAreasMode = DetectAreasMode.DOCUMENT, // must choose the right mode
    RecognizeSingleLine = false,
    AutoSkew = true
};
var result = api.RecognizeImage("form.jpg", settings);
string text = result.RecognitionText;

IronOCR 使用單一的 .Read() 呼叫。 配置啟用在 IronTesseract 實例上,而不是在每次呼叫的物件上觸發:

// IronOCR: one call, no settings object required
var text = new IronTesseract().Read("form.jpg").Text;

##IronOCRvs Aspose.OCR:功能比較

下表對兩個庫在遷移決策中最重要的方面進行了映射。

功能Aspose.OCRIronOCR
授權模式年度訂閱(無永久選項)永久一次性購買
一位開發者成本每年 $999$999 一次
10 位開發者成本每年 $4,995(站點授權)一次性 $2,399(專業版)
授權到期影響不能部署新版本,無安全補丁無 - 購買的版本無限期運行
主要的 OCR 類AsposeOcrIronTesseract
需要設置物件是(RecognitionSettingsDocumentRecognitionSettings無 - 進階情境下可選用 OcrInput
區域檢測手動 DetectAreasMode 枚舉選擇自動佈局分析
預處理手動 PreprocessingFilter 集合自動,有可選的顯式覆蓋
PDF輸入標準 PDF 透過 RecognizePdf()原生透過 .Read()OcrInput.LoadPdf()
受密碼保護的 PDF需要 Aspose.PDF(單獨授權)內建 Password: 參數
可搜尋的PDF輸出SaveMultipageDocument(path, SaveFormat.Pdf, list)result.SaveAsSearchablePdf(path)
信任值result.RecognitionAreasConfidence.Average()(陣列)result.Confidence(單一雙精度,0-100)
字級結構化資料區域級幾何透過 RecognitionAreasRectanglesresult.Words,具有 X、Y、寬度、高度、信心
頁級結構化資料未提供result.Pages,包括段落、行、字詞、字元
多語言同時支援每次呼叫單一語言OcrLanguage.French + OcrLanguage.German
包含的語言主包中超過 130 種125+經由NuGet語言包
條碼識別不可用內建(ocr.Configuration.ReadBarCodes = true
執行緒安全建議每執行緒新實例完全執行緒安全,單一共享實例
多幀 TIFF非原生input.LoadImageFrames("file.tiff")
hOCR 輸出有限result.SaveAsHocrFile(path)
跨平台 NuGet是(Windows、Linux、macOS、Docker、Azure、AWS)
NuGet 包數1主包+可選語言包1主包+可選語言包

快速開始:從 Aspose.OCR 到IronOCR的遷移

步驟1:替換NuGet包

移除 Aspose.OCR:

dotnet remove package Aspose.OCR
SHELL

NuGet安裝IronOCR:

dotnet add package IronOcr

步驟2:更新命名空間

替換所有 Aspose.OCR 命名空間導入:

// Before (Aspose.OCR)
using Aspose.OCR;
using Aspose.OCR.Models;
using Aspose.OCR.Models.PreprocessingFilters;

// After (IronOCR)
using IronOcr;

步驟3:初始化許可證

移除 Aspose 的基於文件的授權呼叫,用IronOCR的字串金鑰來替換。 將此放置在應用程式啟動位置——每個進程一次,而不是每次請求一次:

// Remove Aspose license setup
// var license = new Aspose.OCR.License();
// license.SetLicense("Aspose.OCR.lic");

// AddIronOCRlicense at startup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

// Production pattern: read from environment variable
IronOcr.License.LicenseKey = Environment.GetEnvironmentVariable("IRONOCR_LICENSE");
C#

程式碼遷移範例

識別設置配置

Aspose.OCR 將所有識別行為集中到一個 RecognitionSettings 物件中。 語言、區域檢測模式、單行標誌和閾值都作為屬性存在其中。 您每種型別的文件或呼叫模式都需要重新構建它。

Aspose.OCR 方法:

// Configuring recognition settings for a structured form
var api = new AsposeOcr();

var settings = new RecognitionSettings
{
    Language = Language.Eng,
    DetectAreasMode = DetectAreasMode.DOCUMENT,
    RecognizeSingleLine = false,
    AutoSkew = true,
    RecognitionAreas = new List<Rectangle>
    {
        new Rectangle(0, 0, 800, 100)  // header zone
    }
};

var result = api.RecognizeImage("structured-form.jpg", settings);
Console.WriteLine(result.RecognitionText);

IronOCR方法:

// Recognition behavior configured once on the IronTesseract instance
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;

// Region targeting replaces RecognitionAreas in RecognitionSettings
var headerRegion = new CropRectangle(0, 0, 800, 100);
using var input = new OcrInput();
input.LoadImage("structured-form.jpg", headerRegion);

var result = ocr.Read(input);
Console.WriteLine(result.Text);

不需要為每次呼叫構建設置物件。 語言需要放在 IronTesseract 實例上; 區域定位需要在載入時放置在 OcrInput 上。 DetectAreasModeRecognizeSingleLine 決策由引擎自動處理。 有關基於區域的 OCR 之詳細指導,請參見 基於區域的 OCR 指南

區域檢測模式遷移

Aspose.OCR 需要您在每次識別呼叫前選擇一個 DetectAreasMode 值。 COMBINE 合併來自不同佈局區域的文字,DOCUMENT 將圖像視為標準文件,TABLE 為格子佈局進行優化。 為文件型別選擇錯誤模式會導致輸出錯位或丟失。

Aspose.OCR 方法:

// Three separate calls with different modes for different document types
var api = new AsposeOcr();

// For a document with mixed prose and table content
var docSettings = new RecognitionSettings
{
    DetectAreasMode = DetectAreasMode.COMBINE,
    Language = Language.Eng
};

// For a pure tabular document
var tableSettings = new RecognitionSettings
{
    DetectAreasMode = DetectAreasMode.TABLE,
    Language = Language.Eng
};

// For a single-column text document
var linearSettings = new RecognitionSettings
{
    DetectAreasMode = DetectAreasMode.DOCUMENT,
    Language = Language.Eng
};

string mixedResult = api.RecognizeImage("mixed-layout.jpg", docSettings).RecognitionText;
string tableResult = api.RecognizeImage("data-table.jpg", tableSettings).RecognitionText;
string linearResult = api.RecognizeImage("text-document.jpg", linearSettings).RecognitionText;

IronOCR方法:

// Single API surface handles all layout types automatically
var ocr = new IronTesseract();

// Same code path for every document type
var mixedResult = ocr.Read("mixed-layout.jpg").Text;
var tableResult = ocr.Read("data-table.jpg").Text;
var linearResult = ocr.Read("text-document.jpg").Text;

// For table documents, structured data is immediately available
var result = ocr.Read("data-table.jpg");
foreach (var page in result.Pages)
{
    foreach (var paragraph in page.Paragraphs)
    {
        Console.WriteLine($"Block at ({paragraph.X}, {paragraph.Y}): {paragraph.Text}");
    }
}

IronOCR 完全消除了模式選擇決策。 引擎分析佈局並通過 LinesWords 層級揭露結果。 已讀取結果指南涵蓋如何導航完整的結構化結果模型以進行文件佈局剖析。 有關特定於表格的擷取模式,請參閱表格讀取指南

使用信任度過濾的批量識別

Aspose.OCR 批次工作流程將 RecognitionResult 物件累積到一個列表中。信任度過濾需要遍歷該列表並計算每區域的平均值後才能接受結果。 需要顯式管理列表,並在您希望將多個頁面輸出為單一文件時傳遞給 SaveMultipageDocument

Aspose.OCR 方法:

// Batch recognition with confidence filtering before output
var api = new AsposeOcr();
var settings = new RecognitionSettings
{
    Language = Language.Eng,
    DetectAreasMode = DetectAreasMode.DOCUMENT
};

string[] documentPaths = Directory.GetFiles("invoice-archive", "*.jpg");
var acceptedResults = new List<RecognitionResult>();
var rejectedPaths = new List<string>();

foreach (var path in documentPaths)
{
    var result = api.RecognizeImage(path, settings);

    // Confidence is an array of per-region values — must average manually
    float avgConfidence = result.RecognitionAreasConfidence != null
        ? result.RecognitionAreasConfidence.Average()
        : 0f;

    if (avgConfidence >= 0.70f)
    {
        acceptedResults.Add(result);
    }
    else
    {
        rejectedPaths.Add(path);
        Console.WriteLine($"Rejected: {path} ({avgConfidence:P0} confidence)");
    }
}

// Save accepted pages as a single searchable PDF
if (acceptedResults.Any())
{
    api.SaveMultipageDocument("high-confidence-invoices.pdf",
        SaveFormat.Pdf, acceptedResults);
}

Console.WriteLine($"Accepted: {acceptedResults.Count}, Rejected: {rejectedPaths.Count}");

IronOCR方法:

// Batch recognition with confidence filtering using unified result model
var ocr = new IronTesseract();
string[] documentPaths = Directory.GetFiles("invoice-archive", "*.jpg");

var acceptedResults = new List<OcrResult>();
var rejectedPaths = new List<string>();

foreach (var path in documentPaths)
{
    var result = ocr.Read(path);

    // Single confidence value — no averaging required
    if (result.Confidence >= 70.0)
    {
        acceptedResults.Add(result);
    }
    else
    {
        rejectedPaths.Add(path);
        Console.WriteLine($"Rejected: {path} ({result.Confidence:F1}% confidence)");
    }
}

// Save accepted pages — each result becomes a page in the output PDF
if (acceptedResults.Any())
{
    using var outputInput = new OcrInput();
    foreach (var path in documentPaths
        .Where(p => !rejectedPaths.Contains(p)))
    {
        outputInput.LoadImage(path);
    }
    var combined = ocr.Read(outputInput);
    combined.SaveAsSearchablePdf("high-confidence-invoices.pdf");
}

Console.WriteLine($"Accepted: {acceptedResults.Count}, Rejected: {rejectedPaths.Count}");

result.Confidence 是一個範圍從 0 到 100 的 double。Aspose RecognitionAreasConfidence 陣列平均值以該版本而定的範圍返回 float - 在遷移期間需要調整比較閾值。 信任分數指南記錄了文件驗證工作流程中的每個字、每行和整頁的信任值。 有關高容量批次模式,請參見多執行緒範例

結構化輸出處理

Aspose.OCR 通過 SaveMultipageDocument 輸出結構化資料,並使用格式特定的 SaveFormat 枚舉值。 JSON 輸出寫入機器可讀文件;XML 輸出寫入帶註解的文件。存取原始結構資料——字詞位置、行邊界——需要遍歷 RecognitionAreasRectangles,它返回區域級別的幾何,而不是字級別。

Aspose.OCR 方法:

// Structured output: JSON and XML via SaveMultipageDocument
var api = new AsposeOcr();
var settings = new RecognitionSettings
{
    Language = Language.Eng,
    DetectAreasMode = DetectAreasMode.COMBINE
};

var results = new List<RecognitionResult>();
foreach (var path in new[] { "page1.jpg", "page2.jpg", "page3.jpg" })
{
    results.Add(api.RecognizeImage(path, settings));
}

// Export as JSON
api.SaveMultipageDocument("output.json", SaveFormat.Json, results);

// Export as XML
api.SaveMultipageDocument("output.xml", SaveFormat.Xml, results);

// Accessing area-level geometry (not word-level)
foreach (var result in results)
{
    var areas = result.RecognitionAreasRectangles;
    if (areas != null)
    {
        foreach (var area in areas)
        {
            Console.WriteLine($"Area at ({area.X},{area.Y}): {area.Width}x{area.Height}");
        }
    }
    // No direct word-level collection with individual confidence values
}

IronOCR方法:

// Structured output: navigate a rich result object model
var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("page1.jpg");
input.LoadImage("page2.jpg");
input.LoadImage("page3.jpg");

var result = ocr.Read(input);

// Export as searchable PDF (preserves layout)
result.SaveAsSearchablePdf("output.pdf");

// Export as hOCR (XHTML with bounding box coordinates — feeds downstream tools)
result.SaveAsHocrFile("output.hocr");

// Word-level structured access — direct collection, no indirection
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Words.Length} words, " +
                      $"{page.Confidence:F1}% confidence");

    foreach (var word in page.Words)
    {
        Console.WriteLine($"  '{word.Text}' at ({word.X},{word.Y}) " +
                          $"size {word.Width}x{word.Height}{word.Confidence:F1}%");
    }
}

// Paragraph-level layout for document structure analysis
foreach (var paragraph in result.Pages[0].Paragraphs)
{
    Console.WriteLine($"Paragraph at ({paragraph.X},{paragraph.Y}): {paragraph.Text}");
}

IronOCR 在每頁上將字級資料作為直接的 Words 集合揭露,每字有個別的 Confidence 值。 Aspose.OCR 的 RecognitionAreasRectangles 提供區域幾何,而無法分析字級信任。 hOCR 輸出生成與消費帶有邊界盒標註輸出的工具相容的 XHTML - 格式細節請參見 hOCR 輸出指南。 有關完整的結構化結果模型,OcrResult API 參考記錄了OcrResult.LineOcrResult.Word 上的每個屬性。

Aspose.OCR API 到IronOCR映射參考

Aspose.OCRIronOCR 等效
AsposeOcrIronTesseract
RecognitionSettingsIronTesseract 上的屬性 + OcrInput
DocumentRecognitionSettingsOcrInput,帶有 LoadPdf() / LoadPdfPages()
api.RecognizeImage(path, settings)ocr.Read(path)ocr.Read(input)
api.RecognizePdf(path, settings)ocr.Read(path)ocr.Read(input)
result.RecognitionTextresult.Text
result.RecognitionAreasConfidence.Average()result.Confidence(單一雙精度,0-100)
result.RecognitionAreasRectanglesresult.Words(備有 X、Y、寬度、高度、信任)
RecognitionResultOcrResult
Language.EngOcrLanguage.English
DetectAreasMode.COMBINE自動 - 無需枚舉
DetectAreasMode.TABLE自動 - 使用 result.Pages[n].Paragraphs 進行佈局
DetectAreasMode.DOCUMENT自動 - 引擎負責佈局分析
settings.RecognizeSingleLine = trueocr.Configuration.WhiteListCharacters 或單區域裁切
settings.RecognitionAreas = new List<Rectangle> { r }input.LoadImage(path, cropRectangle)
settings.AutoSkew = true自動,或顯式 input.Deskew()
PreprocessingFilter.AutoSkew()input.Deskew()
PreprocessingFilter.AutoDenoising()input.DeNoise()
PreprocessingFilter.ContrastCorrectionFilter()input.Contrast()
PreprocessingFilter.Binarize()input.Binarize()
PreprocessingFilter.Threshold(value)input.Binarize()(自動閾值)
PreprocessingFilter.Median()input.DeNoise()
PreprocessingFilter.Scale(factor)input.Scale(percent)
PreprocessingFilter.Invert()input.Invert()
PreprocessingFilter.Rotate(angle)input.Rotate(angle)
api.SaveMultipageDocument(path, SaveFormat.Pdf, list)result.SaveAsSearchablePdf(path)
api.SaveMultipageDocument(path, SaveFormat.Docx, list)通過 hOCR 輸出:result.SaveAsHocrFile(path)
api.SaveMultipageDocument(path, SaveFormat.Json, list)瀏覽 result.Pages 後直接序列化
api.PreprocessImage(path, filters)input.GetPages()[0].SaveAsImage(path)
api.CalculateSkew(imagePath)input.Deskew()(自動應用檢測到的角度)
new Aspose.OCR.License().SetLicense("file.lic")IronOcr.License.LicenseKey = "key"
settings.ThreadsCount = n預設執行緒安全; 使用 Parallel.ForEach

常見的遷移問題与解決方案

議題 1:DetectAreasMode 無直接對應

Aspose.OCR: 程式碼設置 settings.DetectAreasMode = DetectAreasMode.TABLEDetectAreasMode.COMBINE 預期特定的佈局行為。 移除枚舉留給如何以IronOCR處理相同佈局的問題。

解決方案: 完全移除枚舉。IronOCR自動進行佈局分析。 如果您需要檢查檢測的佈局結構,請導航 result.Pages[n].Paragraphs - 每個段落都帶有 X、Y、寬度、高度邊框盒及其包含的文字。 要進行顯式表格提取,請參見表格讀取指南

// No mode to set — read directly and inspect the structure
var result = new IronTesseract().Read("data-table.jpg");
foreach (var paragraph in result.Pages[0].Paragraphs)
{
    Console.WriteLine($"Block ({paragraph.X},{paragraph.Y}): {paragraph.Text}");
}

議題 2:RecognitionAreasConfidence 閾值不匹配

Aspose.OCR: 現有程式碼將 result.RecognitionAreasConfidence.Average() 與閾值如 0.75f 比較。IronOCR的 result.Confidence 位於不同的尺度上。

解決方案: result.Confidence 是一個 0-100 百分比。 將您的 Aspose 閾值乘以 100 以進行轉換:0.75f 變為 75.0。 然後更新所有比較邏輯:

// Aspose.OCR threshold pattern
// if (result.RecognitionAreasConfidence.Average() >= 0.75f)

//IronOCRequivalent — multiply old threshold by 100
var result = new IronTesseract().Read("document.jpg");
if (result.Confidence >= 75.0)
{
    Console.WriteLine($"High confidence result: {result.Text}");
}
C#

議題 3:SaveMultipageDocument JSON/XML 輸出無直接方法

Aspose.OCR: api.SaveMultipageDocument("out.json", SaveFormat.Json, results) 寫入帶有識別元資料的 JSON 文件。 耗用此輸出資料的團隊下游需要找到對應內容。

**解決方案:**IronOCR沒有 SaveFormat.Json 對應方法。 替代方法是導航 result.PagesSystem.Text.Json 進行序列化。 這給予您對架構的完全控制:

using var input = new OcrInput();
input.LoadImage("document.jpg");
var result = new IronTesseract().Read(input);

// Build your own structured JSON from the result model
var pageData = result.Pages.Select(p => new
{
    PageNumber = p.PageNumber,
    Confidence = p.Confidence,
    Text = p.Text,
    Words = p.Words.Select(w => new
    {
        Text = w.Text,
        X = w.X,
        Y = w.Y,
        Width = w.Width,
        Height = w.Height,
        Confidence = w.Confidence
    }).ToArray()
}).ToArray();

File.WriteAllText("output.json",
    System.Text.Json.JsonSerializer.Serialize(pageData,
        new System.Text.Json.JsonSerializerOptions { WriteIndented = true }));

使用具嵌入座標的 XHTML 輸出以便下游工具可解析,result.SaveAsHocrFile("output.hocr") 是較為相符的語義對等。

議題 4:DocumentRecognitionSettings.StartPage 使用 0 基於索引

Aspose.OCR: DocumentRecognitionSettings.StartPage = 2 意味著第三頁(基於 0)。 這是 Aspose 往IronOCR遷移中最常見的溢出錯誤。

**解決方案:**IronOCR內部使用 1 基於頁面索引。 為每個 StartPage 值加上 1,並重新計算結束頁面。 針對已知的多頁面 PDF 撰寫目標測試以預防這在生產之前發生:

// Aspose.OCR: StartPage = 2 means the 3rd page (0-based)
// var settings = new DocumentRecognitionSettings { StartPage = 2, PagesNumber = 3 };

// IronOCR: page 3 is index 3 (1-based), range of 3 ends at page 5
using var input = new OcrInput();
input.LoadPdfPages("document.pdf", 3, 5);
var result = new IronTesseract().Read(input);

議題 5:RecognizeSingleLine 無直接標誌

Aspose.OCR: settings.RecognizeSingleLine = true 指示引擎將整個圖像視為同一行文字。這用於標籤識別、字段擷取和其他固定格式輸入。

解決方案: 使用 CropRectangle 精確隔離文字行,這樣可以防止引擎在單行圖像上運行完整的佈局檢測。 對於機器可讀區域或標籤格式,讀取特定文件指南涵蓋了適當方法:

// Aspose.OCR: single-line flag
// var settings = new RecognitionSettings { RecognizeSingleLine = true };

// IronOCR: crop to the line region — layout detection skips automatically
var lineRegion = new CropRectangle(10, 45, 600, 30); // x, y, width, height
using var input = new OcrInput();
input.LoadImage("label.jpg", lineRegion);
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text.Trim());

議題 6:每執行緒 Aspose.OCR 實例並不需要

Aspose.OCR: 文件建議建立每個執行緒新 AsposeOcr() 實例以避免多執行緒處理中的執行緒安全問題。 現有程式碼在 Parallel.ForEach lambda 中建立實例。

解決方案: IronTesseract 是執行緒安全的。 單一實例處理並行工作負載。 移除每執行緒實例化,並共享一個實例:

// Aspose.OCR: per-thread instance due to thread-safety concerns
// Parallel.ForEach(paths, path => { var api = new AsposeOcr(); ... });

// IronOCR: single shared instance, fully thread-safe
var ocr = new IronTesseract();

Parallel.ForEach(documentPaths, path =>
{
    var result = ocr.Read(path);
    Console.WriteLine($"{Path.GetFileName(path)}: {result.Confidence:F1}%");
});

Aspose.OCR 遷移檢查清單

遷移前的任務

審計程式碼庫中的所有 Aspose.OCR 參考:

grep -rn "using Aspose.OCR" --include="*.cs" .
grep -rn "AsposeOcr\|RecognitionSettings\|DocumentRecognitionSettings" --include="*.cs" .
grep -rn "DetectAreasMode\|SaveFormat\|RecognitionResult" --include="*.cs" .
grep -rn "RecognitionAreasConfidence\|RecognitionText\|RecognizePdf" --include="*.cs" .
grep -rn "PreprocessingFilter\|SaveMultipageDocument" --include="*.cs" .
grep -rn "Aspose.OCR.License\|SetLicense" --include="*.cs" .
SHELL

通過類別記錄每個出現:識別呼叫、設置物件、預處理流水線、輸出呼叫以及許可初始化。 記錄使用中的所有 DetectAreasMode 值——這些驅動適用的佈局遷移路徑。 記錄所有使用中的 SaveFormat 枚舉值——每個非 PDF 格式需要上面的第 3 號問題中的自定義序列化方法。

程式碼遷移

  1. 從解決方案中的所有專案中移除 Aspose.OCR NuGet 套件
  2. 在所有專案中安裝 IronOcr NuGet 套件
  3. 使用 using IronOcr; 替換 using Aspose.OCR;using Aspose.OCR.Models;
  4. 在應用程式啟動時使用 IronOcr.License.LicenseKey = "key" 替換 new Aspose.OCR.License().SetLicense("file.lic")
  5. 使用 new IronTesseract() 替換 new AsposeOcr()
  6. 移除所有 RecognitionSettingsDocumentRecognitionSettings 建構區塊
  7. 移除所有 DetectAreasMode 枚舉參考 - 不需要對應
  8. 使用 ocr.Read(path) 替換 api.RecognizeImage(path, settings)
  9. 使用 ocr.Read(path)ocr.Read(input) 並用 input.LoadPdf() 替換 api.RecognizePdf(path, settings)
  10. 使用 result.Text 替換 result.RecognitionText
  11. 使用 result.Confidence 替換 result.RecognitionAreasConfidence.Average(),並將舊閾值乘以 100
  12. 使用 result.SaveAsSearchablePdf(path) 替換 api.SaveMultipageDocument(path, SaveFormat.Pdf, list)
  13. 使用 result.Pages 的直接序列化替換 api.SaveMultipageDocument(path, SaveFormat.Json, list)
  14. 將所有 PreprocessingFilter 鏈條轉為 OcrInput 方法呼叫(參見 API 映射表)
  15. DocumentRecognitionSettings.StartPage 更新為 0 基於到 1 基於(給每個值加 1)
  16. 移除每執行緒 AsposeOcr 實例化——共享單一 IronTesseract 實例

遷移後測試

  • 在每種文件型別的代表性樣本上運行 OCR ,並將字元計數與基準 Aspose.OCR 輸出進行比較
  • 驗證信任值:IronOCR 返回 0-100; 確認所有閾值比較使用新尺度
  • 在一個 10+ 頁面的 PDF 上測試頁面範圍選擇,使用 1 基於頁碼,並驗證正確的頁面被返回
  • 測試不安裝 Aspose.PDF 的情況下的密碼保護 PDF 輸入——確認沒有相依性異常
  • 確認 result.Text 與使用的每個 DetectAreasMode 相符的預期輸出(COMBINE、TABLE、DOCUMENT)
  • 測試 JSON 輸出路徑:序列化 result.Pages ,並根據下游消費者驗證架構
  • 運行並行批次處理器,驗證沒有執行緒處理異常(共享 IronTesseract 實例)
  • 確認搜尋 PDF 輸出在 PDF 檢視器中開啟,且文字在正確位置可選
  • 驗證在每次部署環境內(ASP.NET 啟動、Azure 功能、Docker 容器)許可金鑰皆成功初始化
  • 檢查預處理過的 TIFF 輸入是否仍然通過 input.LoadImageFrames() 產生預期輸出

遷移至IronOCR的主要好處

從第一天起預測可擁有的總成本。 $2,999 的專業版授權涵蓋 10 位開發者和 10 個專案,無需每年續訂。 財務部門只需關閉 OCR 項目一次。 新增工程師、啟動新項目或擴展產品生命週期的預算影響為零——無需運行許可層級數學運算,沒有續訂日期需要跟踪,且不存在因未支付而造成的合規風險。 IronOCR 許可頁面文件顯示了每個層級覆蓋範圍。

表達意圖而非基礎設施的識別呼叫。 遷移後,每次識別呼叫皆為 ocr.Read("document")。 在每次 Aspose.OCR 呼叫前的 RecognitionSettings 構建、 DetectAreasMode 選擇和 PreprocessingFilter 填充完全消失。 新工程師閱讀程式碼庫的 OCR 層時,看到的是業務目的——"讀取該文件"——而不是在實際工作開始之前組裝的設定物件。 IronTesseract API 參考涵蓋每個可用的配置屬性。

無需第二產品支持加密 PDF。 企業文件流水線通常會處理受密碼保護的 PDF。 遷移後,input.LoadPdf("doc.pdf", Password: "secret") 內建處理它們。 無需管理 Aspose.PDF 訂閱,無需保持解密至影像流程,也無需第二次的續訂追踪。 流水線上的所有 PDF 格式都通過一個包裹、一個許可和一個程式碼路徑。 PDF 輸入指南涵蓋頁面範圍、非連續選擇和流輸入。

在字詞和字元級的結構化結果資料。 result.Pages[n].Words 返回一個集合,其中每個字都有其邊界盒、文字和個別的信任分數。 Aspose.OCR 的區域級幾何涵蓋區域,而不是個別的標記。 遷移後,文件佈局解析器、欄位擷取器和發票處理流水線能夠存取每字詞的位置而無需額外的處理步驟。 查看OCR 結果功能頁面以獲取完整結果階層。

**所有平台單一包裝部署。**IronOCR作為一個 NuGet 包提供,無需平台特定配置,即可在 Windows 、Linux 、macOS 、Docker 、Azure App Service 和 AWS Lambda 上運行。 Aspose.OCR 在各平台上工作,但在容器環境中可能需要調整原生庫。 遷移後,OCR 服務的 Dockerfile 是一個標準的 .NET 基礎映像,除包裝安裝之外無需 OCR 特定的設置步驟。 Deployment guides cover Docker, Azure, AWS, and Linux.

與 OCR 同步執行的條碼識別。 設置 ocr.Configuration.ReadBarCodes = true 從同一張圖片中擷取條碼、二維碼和 Code 128 符號,在一次引擎過程中。 Aspose.OCR 不具備條碼能力——需要單獨的條碼庫。 遷移後,混合了印刷文字及條碼的文件(運送標籤、庫存表單、事件票券)由單次呼叫透過 result.Barcodes 處理其結果。 查看條碼 OCR 指南以獲取支援的符號列表。

請注意: Aspose和Tesseract是各自所有者的註冊商標。 本網站不附屬於、由Aspose Pty Ltd或Google認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供資訊用途,並反映撰寫時獲得的公開資訊。

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費線上演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務咨詢
填寫下方表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立