IRONSOFTWAREHOME
VIDEOLAR

Aspose.OCR'den IronOCR'a Geçiş

Curtis Chau
Curtis Chau
Updated: 20 Haziran 2026

Bu kılavuz .NET geliştiricilerini, Aspose.OCR'dan IronOCR'a tam bir geçişe yönlendirir. Paket değişimini, ad alanı değişikliklerini, lisans başlatmasını ve gerçek Aspose.OCR kullanım modellerinden alınan dört somut kod geçiş örneğini kapsamaktadır — tanıma ayarları konfigürasyonu, alan algılama modları, güven temelli filtrelemeyle toplu tanıma ve yapılandırılmış çıktı yönetimi. Her örnek, mevcut kodunuzu tahmin etmeden çevirebilmeniz için Aspose.OCR yaklaşımınıIronOCR eşdeğerine gösterir.

Aspose.OCR'dan Neden Geçiş Yapmalısınız

Ekiplerin Aspose.OCR'yi terk etme nedenleri iki baskı noktasında kümelenir: abonelik faturalandırma modeli ve manuel tanıma hattı tarafından getirilen yapılandırma yükü.

Abonelik maliyetleri bir tavan olmadan birleşir. Aspose.OCR'nin süresiz lisans seviyesi yoktur. Geliştirici Küçük İşletme lisansı, geliştirici başına yıllık 999 dolardır. Beş kişilik bir ekip, üç yıl boyunca yenileme yaparsa, tek bir iş mantığı yazmadan önce 14.985 dolar öder. IronOCR'nin Professional seviyesi, 2.999 dolardır — aynı kapsama, sonsuza kadar, yenileme zorunluluğu olmadan. Finansman, neden bir OCR bağımlılığının yıllık bir SaaS aboneliği gibi yenilendiğini sorduğunda matematik kaçınılmaz hale gelir.

Her tanıma çağrısı bir ayar nesneleri töreni gerektirir. Aspose.OCR, yapılandırma yüzeyini RecognitionSettings, DocumentRecognitionSettings, DetectAreasMode ve PreprocessingFilter koleksiyonuna ayırır. RecognizeImage çağırmadan önce, bir ayar nesnesi oluşturur, doldurur ve açıkça geçirirsiniz.IronOCR bunu .Read() içinde toplar. Fark, çağrı başına küçüktür; Kod tabanı boyunca birikir.

Alan algılama modu seçimi elle ve sonuç odaklıdır. Aspose.OCR, her belge türü için geliştiricinin seçmesi gereken DetectAreasMode değerlerini (COMBINE, DOCUMENT, TABLE, NONE) açığa çıkarır. Yapılandırılmış bir formda yanlış mod seçmek, tanıma doğruluğunu düşürür. IronOCR, belge düzenini otomatik olarak analiz eder ve yapılandırılmış sonucu — paragraflar, satırlar, kelimeler — öngörüleri önceden yapmayı gerektirmeden açığa çıkarır.

Toplu işlem, sonuç listelerini el ile yönetmeyi gerektirir. Aspose.OCR'de, tanınan sayfaların bir grubunu aranabilir bir PDF veya yapılandırılmış veri dosyası olarak kaydetmek, RecognitionResult nesnelerini bir List<RecognitionResult> içinde biriktirip, ardından bu listeyi SaveMultipageDocument'e geçirmek anlamına gelir. Liste iş parçacığı sizin sorumluluğunuzdadır. IronOCR, tek bir OcrInput nesnesi üzerinden birden fazla girdi kabul eder ve tüm sayfaları kapsayan bir OcrResult üretir.

Çıktı formatı değiştirme, birden çok API yüzeyine dokunur. Aspose.OCR'de JSON, XML veya düz metne dışa aktarmak, her biri SaveMultipageDocument'e geçirilen ayrı bir SaveFormat enum değeri gerektirir. Bunları kaydetmeden önce güvene göre filtrelemek, listeyi yinelemek ve her RecognitionAreasConfidence dizisini incelemek gerektirir. IronOCR, bir sonuç nesnesinde result.Text, result.Confidence ve result.Pages'i açığa çıkarır — güven filtresi, tek satırlık bir LINQ ifadesidir.

IronOCR lisanslama modeli, yenileme riskini tamamen ortadan kaldırır. Satın alınan bir lisans sizin kalıcı olarak kalır. Güncellemeler bir yıl dahil edilir; O andan sonra, alınan son sürüm, uyum maruziyeti olmadan üretimde çalışmaya devam eder. Ödenmemiş bir ödemeyle dağıtımınızı bozan bir senaryo yoktur.

Temel Sorun

Aspose.OCR, tanıma konfigürasyonunu her çağrıda oluşturulması, doldurulması ve geçirilmesi gereken bir ayar nesnesine bağlar. Mod, dil, filtreler ve alan stratejisi bu nesnenin tüm özellikleridir:

// 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, tek bir .Read() çağrısı kullanır. Yapılandırma gerektiğinde IronTesseract örneğinde yaşar, çağrı başına nesneler üzerinde değil:

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

##IronOCR ve Aspose.OCR: Özellik Karşılaştırması

Aşağıdaki tablo, bir geçiş kararı sırasında en çok önem arz eden boyutlar boyunca iki kütüphaneyi eşleştirir.

ÖzellikAspose.OCRIronOCR
Lisans modeliYıllık abonelik (süresiz seçenek yok)Tek seferlik süresiz satın alma
1-geliştirici maliyeti$999/yıl$999 bir kez
10-geliştirici maliyetiYıllık 4.995 $ (Site lisansı)Tek seferlik 2.999 $ (Professional)
Lisans bitişinin sonucuYeni derlemeler dağıtılamaz, güvenlik yamaları yokHiçbiri - satın alınan sürüm süresiz çalışır
Birincil OCR sınıfıAsposeOcrIronTesseract
Ayarlar nesnesi gerekliEvet (RecognitionSettings veya DocumentRecognitionSettings)Hayır — gelişmiş senaryolar için isteğe bağlı OcrInput
Alan tespitiElle DetectAreasMode enum seçimiOtomatik düzen analizi
Ön işlemElle PreprocessingFilter koleksiyonuOtomatik, opsiyonel açıkça geçersiz kılma ile
PDF girişiRecognizePdf() aracılığıyla standart PDF'ler.Read() veya OcrInput.LoadPdf() aracılığıyla yerel
Şifre korumalı PDFAspose.PDF gerektirir (ayrı lisans)Yerleşik Password: parametresi
Aranabilir PDF çıktısıSaveMultipageDocument(path, SaveFormat.Pdf, list)result.SaveAsSearchablePdf(path)
Güven değerresult.RecognitionAreasConfidence.Average() (dizi)result.Confidence (tek çift, 0-100)
Kelime seviyesinde yapısal veriRecognitionAreasRectangles üzerinden alan düzeyinde geometriX, Y, Genişlik, Yükseklik, Güven ile result.Words
Sayfa seviyesinde yapısal veriAçığa çıkarılmamışresult.Pages ile paragraflar, satırlar, kelimeler, karakterler
Çok dillilik aynı andaÇağrı başına tek dilOcrLanguage.French + OcrLanguage.German
Dahil edilen dillerAna pakette 130+125+ NuGet dil paketleri aracılığıyla
Barkod okumaMevcut değilYerleşik (ocr.Configuration.ReadBarCodes = true)
Thread güvenliğiİş parçacığı başına yeni örnek önerilirTamamen iş parçacığı güvenli, tek bir paylaşılan örnek
TIFF çoklu çerçeveYerel olarak değilinput.LoadImageFrames("file.tiff")
hOCR ihracatSınırlıresult.SaveAsHocrFile(path)
Platformlar arası NuGetEvetEvet (Windows, Linux, macOS, Docker, Azure, AWS)
NuGet paket sayısı1 ana + isteğe bağlı dil paketleri1 ana + isteğe bağlı dil paketleri

Hızlı Başlangıç: Aspose.OCR'dan IronOCR'a Geçiş

Adım 1: NuGet Paketini Değiştirin

Aspose.OCR'yi kaldırın:

dotnet remove package Aspose.OCR
SHELL

NuGet kullanarak IronOCR'u yükleyin:

dotnet add package IronOcr

Adım 2: Ad Alanlarını Güncelleyin

Tüm Aspose.OCR ad alanı içe aktarımlarını değiştirin:

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

// After (IronOCR)
using IronOcr;

Adım 3: Lisansa İzin Verin

Aspose dosya tabanlı lisans çağrısını kaldırın ve yerine IronOCR dize anahtarını koyun. Bu işlemi uygulama başlatıldığında yerleştirin — işlem başına bir kere, istek başına değil:

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

// Add IronOCR license at startup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

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

Kod Göç Örnekleri

Tanıma Ayarları Yapılandırması

Aspose.OCR, tüm tanıma davranışını RecognitionSettings nesnesinde merkezileştirir. Dil, alan tespit modu, tek satır bayrağı ve eşik orada özellik olarak bulunur. Her doküman türü veya çağrı deseni için taze şekilde oluşturursunuz.

Aspose.OCR Yaklaşımı:

// 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 Yaklaşımı:

// 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);

Çağrı başına bir ayar nesnesi oluşturulmasına gerek yok. Dil IronTesseract örneğinde bulunur; bölge hedefleme yükleme zamanında OcrInput üzerinde bulunur. DetectAreasMode ve RecognizeSingleLine kararları otomatik olarak motor tarafından yönetilir. Bölge tabanlı OCR ile ilgili ayrıntılı rehberlik için, bölge tabanlı OCR nasıl yapılır rehberine bakın.

Alan Tespit Modu Geçişi

Aspose.OCR, her tanıma çağrısında DetectAreasMode değerini seçmenizi gerektirir. COMBINE, metni farklı düzen bölgelerinden birleştirir, DOCUMENT, resmi standart bir belge olarak ele alır, TABLE, ızgara düzenleri için optimize eder. Yanlış modu belge türü için seçmek yanlış hizalanmış veya eksik çıktılara neden olur.

Aspose.OCR Yaklaşımı:

// 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 Yaklaşımı:

// 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 mod seçme kararını tamamen ortadan kaldırır. Motor, düzeni analiz eder ve sonucu Pages, Paragraphs, Lines ve Words hiyerarşisi aracılığıyla açığa çıkarır. Sonuçları okuma rehberi, belge düzeni ayrıştırma için tam yapılandırılmış sonuç modelini nasıl gezileceğini kapsar. Tabloya özel çıkarım desenleri için, tablo okuma nasıl yapılır rehberine bakın.

Güven Tabanlı Filtreleme ile Toplu Tanıma

Aspose.OCR toplu iş akışları, bir listede RecognitionResult nesneleri biriktirir. Güven filtresi, bu listeyi yinelemek ve bir sonuç kabul etmeden önce bölge başına ortalamayı hesaplamayı gerektirir. Liste, açıkça yönetilmeli ve birden fazla sayfası tek bir dosya olarak çıktılama istemeniz halinde SaveMultipageDocument'e geçirilmelidir.

Aspose.OCR Yaklaşımı:

// 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 Yaklaşımı:

// 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 ile 100 arasında değişen tek bir double'dir. Aspose RecognitionAreasConfidence dizisi ortalaması, sürüme göre değişen bir aralıkta bir float döndürür — karşılaştırma eşiği, taşınma sırasında ayarlanmalıdır. Güven puanları rehberi, belge doğrulama iş akışları için kelime başına, satır başına ve sayfa başına güven değerlerini belgelendirir. Yüksek hacimli toplu desenler için, çoklu iş parçacığı örneğine bakın.

Yapılandırılmış Çıktı İşleme

Aspose.OCR, formatna özgü SaveFormat enum değerleriyle SaveMultipageDocument aracılığıyla yapılandırılmış veri çıktısı verir. JSON çıktısı, makine tarafından okunabilir bir dosya yazar; XML çıktısı, açıklamalı bir belge dosyası yazar. Ham yapılandırılmış veriye — kelime konumlarına, satır sınırlarına — erişmek, RecognitionAreasRectangles dizisinin yinelemesini gerektirir, bu da kelime düzeyinde değil, bölge düzeyinde geometri döndürür.

Aspose.OCR Yaklaşımı:

// 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 Yaklaşımı:

// 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, her sayfadaki doğrudan bir Words koleksiyonu olarak kelime düzeyinde veriyi açığa çıkarır ve kelime başına bireysel Confidence değerleriyle sağlar. Aspose.OCR'nin RecognitionAreasRectangles'ı, kelime düzeyinde güven çözümlemesi yapmadan bölge geometrisini sağlar. hOCR ihracatı, çerçeve kutusu açıklamalı çıktı tüketen araçlarla uyumlu XHTML üretir — format ayrıntıları için hOCR ihracat rehberine bakın. Tam yapılandırılmış sonuç modeli için OcrResult API referansı, OcrResult.Page, OcrResult.Paragraph, OcrResult.Line ve OcrResult.Word üzerindeki her özelliği belgeler.

Aspose.OCR API'den IronOCR'a Haritalama Referansı

Aspose.OCRIronOCR Karşılığı
AsposeOcrIronTesseract
RecognitionSettingsIronTesseract ve OcrInput üzerindeki özellikler
DocumentRecognitionSettingsOcrInput ile LoadPdf() / LoadPdfPages()
api.RecognizeImage(path, settings)ocr.Read(path) veya ocr.Read(input)
api.RecognizePdf(path, settings)ocr.Read(path) veya ocr.Read(input)
result.RecognitionTextresult.Text
result.RecognitionAreasConfidence.Average()result.Confidence (tek çift, 0-100)
result.RecognitionAreasRectanglesresult.Words (X, Y, Genişlik, Yükseklik, Güven ile)
RecognitionResultOcrResult
Language.EngOcrLanguage.English
DetectAreasMode.COMBINEOtomatik — enum gerekli değil
DetectAreasMode.TABLEOtomatik — düzen için result.Pages[n].Paragraphs kullanın
DetectAreasMode.DOCUMENTOtomatik — motor düzen analizi yapar
settings.RecognizeSingleLine = trueocr.Configuration.WhiteListCharacters veya tek bölge kırpma
settings.RecognitionAreas = new List<Rectangle> { r }input.LoadImage(path, cropRectangle)
settings.AutoSkew = trueOtomatik ya da açık input.Deskew()
PreprocessingFilter.AutoSkew()input.Deskew()
PreprocessingFilter.AutoDenoising()input.DeNoise()
PreprocessingFilter.ContrastCorrectionFilter()input.Contrast()
PreprocessingFilter.Binarize()input.Binarize()
PreprocessingFilter.Threshold(value)input.Binarize() (otomatik eşik)
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 dışa aktarımı aracılığıyla: result.SaveAsHocrFile(path)
api.SaveMultipageDocument(path, SaveFormat.Json, list)result.Pages gezin ve doğrudan seri hale getirin
api.PreprocessImage(path, filters)input.GetPages()[0].SaveAsImage(path)
api.CalculateSkew(imagePath)input.Deskew() (tıespit edilen açıyı otomatik olarak uygular)
new Aspose.OCR.License().SetLicense("file.lic")IronOcr.License.LicenseKey = "key"
settings.ThreadsCount = nVarsayılan olarak iş parçacığı güvenli; Parallel.ForEach kullanın

Yaygın Göç Sorunları ve Çözümleri

Sorun 1: DetectAreasMode Doğrudan Eşdeğere Sahip Değil

Aspose.OCR: Kod, belirli düzen davranışı bekleyen settings.DetectAreasMode = DetectAreasMode.TABLE veya DetectAreasMode.COMBINE ayarlar. Enumu kaldırmak, IronOCR'nin aynı düzeni nasıl ele aldığını sorusunu bırakar.

Çözüm: Enum tamamen kaldırılmalıdır.IronOCR düzen analizini otomatik olarak gerçekleştirir. Algılanan düzen yapısını incelemeniz gerekiyorsa, result.Pages[n].Paragraphs gezin — her paragraf bir X, Y, Genişlik, Yükseklik sınır kutusunu ve içerdiği metni taşır. Açıkça tablo çıkarımı için, tablo okuma nasıl yapılır rehberine bakın.

// 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}");
}

Sorun 2: RecognitionAreasConfidence Eşik Uyumsuzluğu

Aspose.OCR: Mevcut kod result.RecognitionAreasConfidence.Average()'i, 0.75f gibi bir eşik ile karşılaştırır. IronOCR'in result.Confidence farklı bir ölçeğe sahiptir.

Çözüm: result.Confidence, 0-100 arası bir yüzde. Ölçeği dönüştürmek için Aspose eşiğinizi 100 ile çarpın: 0.75f 75.0 haline gelir. Sonra tüm karşılaştırma mantığını güncelleyin:

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

//IronOCR equivalent — 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#

Sorun 3: SaveMultipageDocument JSON/XML Çıktısının Doğrudan Bir Yöntemi Yok

Aspose.OCR: api.SaveMultipageDocument("out.json", SaveFormat.Json, results), tanıma meta verisi ile bir JSON dosyası yazar. Bu çıktıyı alt takımlar tarafından tüketen ekipler denk eşdeğer bulmalıdır.

Çözüm: IronOCR'nin bir SaveFormat.Json eşdeğer yöntemi yoktur. Yerine result.Pages gezin ve System.Text.Json ile seri hale getirin. Bu, şema üzerinde tam kontrol sağlar:

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 }));

Gömülü koordinatlarla birlikte araçların ayrıştırabileceği XHTML çıktısı için, result.SaveAsHocrFile("output.hocr") daha yakın bir anlamsal eşdeğeridir.

Sorun 4: DocumentRecognitionSettings.StartPage 0 Based Index Kullanıyor

Aspose.OCR: DocumentRecognitionSettings.StartPage = 2, üçüncü sayfa anlamına gelir (0 tabanlıdır). Bu, Aspose'dan IronOCR'ye geçişlerde en yaygın bir ters of-by-one hatasıdır.

Çözüm: IronOCR, her yerde 1-tabanlı sayfa indeksleme kullanır. Her StartPage değerine 1 ekleyin ve bitiş sayfasını buna göre yeniden hesaplayın. Üretimden önce bunu yakalamak için bilinen çok sayfalı bir PDF'ye karşı hedefli bir test yazın:

// 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);

Sorun 5: RecognizeSingleLine Doğrudan Bayrağı Yok

Aspose.OCR: settings.RecognizeSingleLine = true, motoru tüm görüntüyü tek bir metin satırı olarak ele alması için yönlendirir. Bu, etiket tanıma, alan çıkarma ve diğer sabit formatlı girdiler için kullanılır.

Çözüm: Motorun tek satırlık bir görüntü üzerinde tam düzen algılamasını engelleyen @--CODE-3329--@@ kullanarak metin satırını kesin olarak izole edin. Makine tarafından okunabilir bölgeler veya etiket formatları için, belirli belgeleri okuma rehberi uygun yaklaşımı kapsar:

// 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());

Sorun 6: Her İş Parçacığı için Gerekmeyen Aspose.OCR Örnekleri

Aspose.OCR: Belge, paralel işlemde iş parçacığı güvenliği sorunlarından kaçınmak için her iş parçacığı başına yeni bir AsposeOcr() örneği oluşturmanızı önerir. Mevcut kod, örnekleri Parallel.ForEach lamdaları içinde oluşturur.

Çözüm: IronTesseract iş parçacığı güvenlidir. Tek bir örnek paralel iş yüklerini taşır. İş parçacığı başına başlangıçtan kaldırın ve bir örneği paylaşın:

// 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 Geçiş Kontrol Listesi

Geçiş Öncesi Görevler

Kod tabanındaki tüm Aspose.OCR referanslarını denetleyin:

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

Her birini kategorisine göre belgeleyin: tanıma çağrıları, ayarlar nesneleri, ön işleme hatları, çıktı çağrıları ve lisans başlatma. Kullanılan tüm DetectAreasMode değerlerini not edin — bunlar, hangi düzen geçiş yolunun uygulanacağını belirler. Tüm SaveFormat enum değerlerini kaydedin — her PDF olmayan format, yukarıda Sorun 3'teki özel seri hale getirme yaklaşımını gerektirir.

Kod Geçişi

  1. Çözümdeki tüm projelerden Aspose.OCR NuGet paketini kaldırın
  2. Tüm projelere IronOcr NuGet paketini yükleyin
  3. using Aspose.OCR; ve using Aspose.OCR.Models;'yi using IronOcr; ile değiştirin
  4. Uygulama başlangıcında new Aspose.OCR.License().SetLicense("file.lic") ile IronOcr.License.LicenseKey = "key" yer değiştirin
  5. new AsposeOcr() ile new IronTesseract() yer değiştirin
  6. Tüm RecognitionSettings ve DocumentRecognitionSettings yapım bloklarını kaldırın
  7. Tüm DetectAreasMode enum referanslarını kaldırın — hiçbir eşdeğer gerekmez
  8. api.RecognizeImage(path, settings) ile ocr.Read(path) yer değiştirin
  9. api.RecognizePdf(path, settings)'yi ocr.Read(path) veya ocr.Read(input) ile input.LoadPdf() kullanarak değiştirin
  10. result.RecognitionText ile result.Text yer değiştirin
  11. result.RecognitionAreasConfidence.Average()'yi result.Confidence ile değiştirin ve eski eşiği %100 ile çarpın
  12. api.SaveMultipageDocument(path, SaveFormat.Pdf, list) ile result.SaveAsSearchablePdf(path) yer değiştirin
  13. api.SaveMultipageDocument(path, SaveFormat.Json, list)'yi result.Pages'ın doğrudan seri hale getirilmesi ile değiştirin
  14. Tüm PreprocessingFilter zincirlerini OcrInput yöntem çağrılarına dönüştürün (API eşleme tablosuna bakın)
  15. DocumentRecognitionSettings.StartPage'ü 0 tabanlıdan 1 tabanlıya güncelleyin (her değere 1 ekleyin)
  16. Her iş parçacığında AsposeOcr instansı oluşturmayı kaldırın — tek bir IronTesseract örneği paylaşın

Geçiş Sonrası Testler

  • Üretimde kullanmakta olan her doküman türünden temsil edici bir örnek üzerinde OCR çalıştırın ve karakter sayılarını temel Aspose.OCR çıktısı ile karşılaştırın.
  • Güven değerlerini doğrulayın:IronOCR 0–100 döndürür; tüm eşik karşılaştırmalarının yeni skalayı kullandığından emin olun
  • 10+ sayfalık bir PDF üzerinde sayfa aralığı seçim testini, 1-tabanlı sayfa numarası kullanarak yapın ve doğru sayfaların döndürüldüğünü doğrulayın.
  • Aspose.PDF yüklü olmadan şifre korumalı PDF içe alımını test edin — bağımlılık istisnası olmadığını doğrulayın.
  • Her kullanılan DetectAreasMode için beklenen çıktıyla result.Text eşleşmesini doğrulayın (COMBINE, TABLE, DOCUMENT)
  • JSON çıktı yolunu test edin: result.Pages'ı seri hale getirip herhangi bir sonraki tüketiciye karşı şemayı doğrulayın
  • Paralel toplu işlemciyi çalıştırın ve iş parçacığı istisnası olmadığını doğrulayın (paylaşılan IronTesseract örneği)
  • Aranabilir PDF çıktısının bir PDF görüntüleyicide açıldığını doğrulayın ve metinlerin doğru konumlarda seçilebilir olduğunu
  • Her dağıtım ortamında lisans anahtarının hatasız başlatıldığını doğrulayın (ASP.NET başlangıcı, Azure İşlevi, Docker konteyneri)
  • Önceden işlenmiş TIFF girdilerinin input.LoadImageFrames() üzerinden beklenen çıktıyı hâlâ ürettiğinden emin olun

IronOCR'a Geçişin Ana Faydaları

İlk günden itibaren öngörülebilir toplam sahip olma maliyeti. 2.999 $ Professional lisansı, 10 geliştirici ve 10 proje arasında yıllık yenileme olmadan kapsamaktadır. Finans, OCR çizgi kalemini bir kere kapatır. Mühendis eklemek, yeni projeler başlatmak veya ürün ömrünü uzatmak bütçe etkisi sıfırdır — takip edilecek lisans katmanı matematiği, yenileme tarihi yok ve kaçırılan bir ödeme yüzünden uyumluluk risk yoktur. IronOCR lisanslama sayfası her seviyenin ne kapsadığını belgeler.

Niyet ifade eden, altyapı değil, tanıma çağrıları. Geçişten sonra, her tanıma çağrısı ocr.Read("document") olur. Her Aspose.OCR çağrısının öncesinde yer alan RecognitionSettings yapımı, DetectAreasMode seçimi ve PreprocessingFilter doldurması tamamen ortadan kalkar. Kod tabanının OCR katmanını okuyan yeni mühendisler, iş niyetini — "bu belgenin okunması" — ve iş başlamadan önce monte edilen bir yapılandırma nesnesi yerine görüyor. IronTesseract API referansı, kullanılabilir her yapılandırma özelliği belgeler.

İkinci bir ürün olmadan şifreli PDF desteği. Kurumsal belge hatları rutin olarak şifre korumalı PDF'lerle ilgilenir. Geçişten sonra, input.LoadPdf("doc.pdf", Password: "secret") onları yerel olarak işler. Yönetilecek bir Aspose.PDF aboneliği yok, bakım gerektiren bir şifre çözme-görüntü hattı yok ve izlenecek ikinci bir yenileme tarihi yok. Hattaki her PDF formatı bir paketten geçer, bir lisans ve bir kod yolu. PDF giriş nasıl yapılır sayfa aralıklarını, bitişik olmayan seçimi ve akış girişini kapsar.

Kelime ve karakter düzeyinde yapılandırılmış sonuç verileri. result.Pages[n].Words, her kelimenin kendi sınır kutusunu, metnini ve bireysel güven puanını taşıdığı bir koleksiyon döndürür. Aspose.OCR'nin alan seviyesi geometrisi bölgeleri kapsar, bireysel jetonları değil. Geçişten sonra, belge düzeni ayrıştırıcılar, form alan çıkarıcıları ve fatura işleme hatları, ek işlem adımları olmadan kelime başına konumlandırmaya erişim sağlayabilir. Tüm sonuç hiyerarşisi için, OCR sonuç özellikleri sayfasına bakın.

Tüm platformlarda tek paket dağıtımı. IronOCR, Windows, Linux, macOS, Docker, Azure App Service ve AWS Lambda üzerinde çalışır, platform-özel yapılandırma olmadan, tek bir NuGet paketi olarak piyasaya sunulur. Aspose.OCR platformlar arasında çalışır ancak konteyner ortamlarında yerel kütüphane ayarlamaları gerektirebilir. Geçişten sonra, bir OCR hizmeti için Dockerfile, paket yüklemenin ötesinde OCR-özel kurulum adımları olmadan standart bir .NET temel görüntüsüdür. Dağıtım rehberleri Docker, Azure, AWS ve Linux kapsar.

OCR ile aynı geçişte barkod okuma. ocr.Configuration.ReadBarCodes = true ayarlandığında, aynı görüntüden bir motor geçişiyle barkodlar, QR kodlar ve Kod 128 sembolleri çıkarır. Aspose.OCR'nin barkod yeteneği yoktur — ayrı bir barkod kütüphanesi gereklidir. Geçişten sonra, basılı metin ile barkodları karıştıran belgeler (gönderi etiketleri, envanter formları, etkinlik biletleri) tek bir çağrı ile ve result.Barcodes üzerinde sonuçlarla ele alınır. Desteklenen sembolojiler için barkod OCR nasıl yapılır rehberine bakın.

Lütfen dikkate alın: Aspose ve Tesseract kendi sahiplerinin tescilli markalarıdır. Bu site, Aspose Pty Ltd veya Google ile ilişkilendirilmemiş, onaylanmamış veya desteklenmemiştir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.
Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez