Altbilgi içeriğine atla
DIğER BILEşENLERLE KARşıLAşTıRıN

IronOCR ile Aspose.OCR Arasında Bir Karşılaştırma

Asprise OCR, önceJavakütüphanesini gönderir ve .NET'i ikincil hedef olarak kabul eder - bu tasarım kararı,Javaörnekleriyle yazılmış belgelerden, belirli platform DLL'leri gerektiren yerel bir ikili dağıtım modeline kadar (aocr.dll, aocr_x64.dll, libaocr.so, libaocr.dylib) yazılımı çalıştıran her makinede ürünün her katmanında kendini gösterir. İş parçacığı modeli bunu bileşik bir hale getirir: LITE ve STANDARD lisanslar sözleşmesel olarak tek iş parçacıklı, tek işlem yürütme ile sınırlıdır, bu da bu katmanlarda Asprise çağıran her ASP.NET Core uç noktasının, Windows Servisinin veya Azure Fonksiyonunun lisans sözleşmesini ihlal ettiği anlamına gelir..NETekipleri üretim sistemleri inşa ederken, bunlar teorik sorunlar değildir — bunlar üretime ulaşmadan önce ya pahalı ENTERPRISE lisanslamasına zorlayan ya da bir kütüphane değişimine zorlayan dağıtım engelleridir.

Asprise OCR Anlamak

Asprise OCR, Asprise Inc.'in ticari bir OCR ürünüdür. Ürün, birJavaOCR motoru olarak doğdu..NETdesteği daha sonra C# kodunu altta yatan yönetilmeyen OCR ikili dosyalarına köprüleyen yerel kütüphane sarmalayıcıları üzerinden geldi. Bu köprü mimarisi,.NETgeliştiricileri için kütüphanenin belirleyici özelliğidir.

Ana mimari özellikler:

  • Java-öncelikli tasarım: Tüm ana belgeler, örnek kod ve SDK örnekleriJavaiçin yazılmıştır..NETgeliştiricileri Java'dan zihinsel çevrim yapar veya seyrek ikincil belgelemeye güvenir.
  • Yerel ikili bağımlılık: Platforma özgü yönetilmeyen DLL'ler, dağıtım dizininde veya sistem yolunda bulunmalıdır. Doğru ikili, işlem mimarisiyle eşleşmelidir; 32-bit işlemler aocr.dll gerektirir, 64-bit işlemler aocr_x64.dll gerektirir.
  • Manuel motor yaşam döngüsü: Kütüphane,Javakökenlerinden miras alınan C tarzı bir başlatma düzeni açığa çıkarır (Ocr.SetUp(), ocr.StartEngine(), ocr.StopEngine()). IDisposable uygulaması yok. StopEngine() unutulması yerel hafızayı sızdırır.
  • Lisans katmanı iş parçacığı sınırlamaları: LITE (~$299) ve STANDARD (~$699) katmanlar yalnızca tek iş parçacıklı, tek işlem yürütmeye izin verirler. Çok iş parçacıklı çalışma ENTERPRISE gerektirir ki bu satışlarla iletişim kurulmasını gerektirir.
  • Hata kodları, istisnalar değil: Tanıma hataları,.NETistisna kalıpları yerine C/Java hata kodu uygulamalarına uygun olarak "ERROR:" ile öneki verilmiş null dönüşler veya dizgiler olarak kendini gösterir.
  • 20+ OCR dili:.NETekosistemine göre inşa edilmiş alternatiflerden belirgin olarak daha az.

Motor Yaşam Döngüsü Problemi

HerAsprise OCRçağrısı açık motor yönetimi gerektirir. Desen dört zorunlu adımdan oluşur: statik küresel kurulum, örnek oluşturma, dil dizgisi ile motor başlatma ve tamamlandıktan sonra motor durdurma. Motor durdurmak atlanırsa, çöp toplayıcı yönetilmeyen belleği serbest bırakamadığı için yerel kaynakları sızdırır:

// Asprise: four required steps before reading a single image
Ocr.SetUp();                              // Static global init
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);   // Allocates native engine
    string text = ocr.Recognize(
        imagePath,
        Ocr.RECOGNIZE_TYPE_TEXT,
        Ocr.OUTPUT_FORMAT_PLAINTEXT);
    return text;
}
finally
{
    ocr.StopEngine();                         // Must call — no IDisposable fallback
}
// Asprise: four required steps before reading a single image
Ocr.SetUp();                              // Static global init
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);   // Allocates native engine
    string text = ocr.Recognize(
        imagePath,
        Ocr.RECOGNIZE_TYPE_TEXT,
        Ocr.OUTPUT_FORMAT_PLAINTEXT);
    return text;
}
finally
{
    ocr.StopEngine();                         // Must call — no IDisposable fallback
}
' Asprise: four required steps before reading a single image
Ocr.SetUp()                              ' Static global init
Dim ocr As New Ocr()
Try
    ocr.StartEngine("eng", Ocr.SPEED_FAST)   ' Allocates native engine
    Dim text As String = ocr.Recognize( _
        imagePath, _
        Ocr.RECOGNIZE_TYPE_TEXT, _
        Ocr.OUTPUT_FORMAT_PLAINTEXT)
    Return text
Finally
    ocr.StopEngine()                         ' Must call — no IDisposable fallback
End Try
$vbLabelText   $csharpLabel

Bu düzen, üç yaygın durumda sessizce başarısız olur: StopEngine() çağrılmadan önce ele alınamayan bir istisna, temizliği atlayan yeniden düzenlenmiş bir kod yolu ve eşzamanlı kullanım, LITE/STANDARD'da lisansın paralel çalışmasına izin verecek iş parçacığı oluşturmayı yasakladığı durumlar. finally bloğu ilk sorunu azaltır, ancak lisans kısıtlaması sunucu iş yükleri için bu düzeni zaten geçersiz kılar.

IronOCR'u Anlamak

IronOCR, tamamen.NET/için sıfırdan oluşturulmuş ticari bir OCR kütüphanesidir. Otomatik ön işleme, yerel PDF desteği ve baştan sona standart.NET/konvansiyonlarını takip eden bir yönetilen API ile optimize edilmiş bir Tesseract 5 motorunu sarmalar.

Anahtar özellikler:

  • Tek NuGet paketi: dotnet add package IronOcr her şeyi yükler - yerel ikili yönetim, tessdata klasörleri, platforma özgü yapılandırma yok.
  • IDisposable kaynak yönetimi: OcrInput, IDisposable uygular. using deyimi temizliği otomatik olarak halleder.
  • Tüm lisans katmanlarında iş parçacığı güvenli: Yapay iş parçacığı sınırlamaları yok. IronTesseract örnekleri, $999 Lite lisansı üzerinde paralel kullanılmak için güvenlidir.
  • Otomatik ön işleme: Yerleşik Deskew(), DeNoise(), Contrast(), Binarize() ve EnhanceResolution() yöntemleri, harici görüntü işleme kütüphanelerine olan ihtiyacı ortadan kaldırır.
  • Doğal PDF girişi: Bir PDF yolunu doğrudan geçirin — sayfalarını önce resimlere dönüştürmek için harici bir render kütüphanesi gerektirmez.
  • 125+ dil: Gerekli olduğunda kurulabilen ayrı NuGet paketleri olarak mevcuttur (IronOcr.Languages.French, vb.).
  • Arama yapılabilir PDF çıktısı: result.SaveAsSearchablePdf(), herhangi bir OCR sonucundan PDF/A uyumlu çıktı oluşturur.
  • Yapısal veri erişimi: Sonuçlar kelime düzeyi, satır düzeyi ve paragraf düzeyi metinleri piksel koordinatları ve kelime başına güvenilirlik puanları ile açığa çıkarır.

Özellik Karşılaştırması

Özellik Asprise OCR IronOCR
Birincil platform Java .NET
NuGet dağıtımı Sarmalayıcı + yerel DLL'ler Ekstra gerektirmeyen tek paket
İş parçacığı (tüm katmanlar) Yalnızca ENTERPRISE Tüm seviyeler
Sunucu/web uygulama kullanımı Yalnızca ENTERPRISE Tüm seviyeler
Yerel PDF girişi Hayır Evet
Dahili ön işleme Hayır Evet
OCR dilleri 20+ 125+
Aranabilir PDF çıktısı Hayır Evet

Ayrıntılı Özellik Karşılaştırması

Özellik Asprise OCR IronOCR
Mimari
Tasarım kökeni Java,.NETikinci sırada .NETyerel
API stili Tamsayı sabitleri ile C-stili Akıcı C#
IDisposable / using düzeni Uygulanmadı Evet (OcrInput)
Hata işleme Null / hata-dize dönüşleri .NETistisnaları
Yerelden istisna yayılımı Interop boşlukları Yönetilen istisnalar
İş Parçacığı ve Sunucu Kullanımı
Çok iş parçacıklı, LITE katmanı Yasaklandı İzin verildi
Çok iş parçacıklı — STANDART katman Yasaklandı İzin verildi
Çok iş parçacıklı — ENTERPRISE/yukarı katman İzin verildi İzin verildi
ASP.NET Core Web API ENTERPRISE gerektirir Herhangi bir katman
Azure Fonksiyonları / AWS Lambda ENTERPRISE gerektirir Herhangi bir katman
Parallel.ForEach toplu ENTERPRISE gerektirir Herhangi bir katman
Giriş Desteği
Görüntü dosyaları (JPG, PNG, TIFF) Evet Evet
Yerel PDF girişi Hayır (harici lib gerektirir) Evet
Şifre korumalı PDF Hayır Evet
Byte dizi / Akış girişi Sınırlı Evet
Çok sayfalı TIFF Sınırlı Evet
Ön işlem
Hizalama Manuel / harici Yerleşik
Gürültü giderme Manuel / harici Yerleşik
Kontrast artırma Manuel / harici Yerleşik
Binarizasyon Manuel / harici Yerleşik
Çözünürlük ölçekleme (DPI) Manuel / harici Yerleşik
Çıktı
Düz metin Evet Evet
Aranabilir PDF çıktısı Hayır Evet
Kelime koordinatları Sınırlı Evet
Kelime başına güvenilirlik puanları Hayır Evet
hOCR içeri aktarma Hayır Evet
Diller
Dil sayımı 20+ 125+
Dil kurulumu Paket içinde NuGet paketleri
Güçlü tür sahipli dil enumu Hayır (dize kodları) Evet (OcrLanguage)
Dağıtım
Yerel ikili dosya gerekiyor Evet (platforma özel DLL) Hayır
Tessdata dosya yönetimi Hayır Hayır
Docker Manuel ikili yapılandırma Kutusundan çıkar çıkmaz çalışır
Linux libaocr.so gerektirir NuGet yönetir
Fiyatlandırma
Giriş fiyatı fiyatlandırma için Asprise ile iletişime geçin (LITE, sadece tek iş parçacıklı) $999 (Lite, tüm özellikler)
Sunucu kullanım giriş fiyatı ENTERPRISE (satışla iletişime geçin) $999 (Lite)

Yerel .NET vs Java Köprü Mimarisi

.NET ekipleri için temel soru, hangi kütüphanenin kâğıt üstünde daha fazla özelliğe sahip olduğu değil, kullandıkları dağıtım ve operasyon ortamlarında hangi kütüphanenin birinci sınıf.NET/vatandaşı gibi davrandığıdır.

Asprise Yaklaşımı

Asprise, yönetilen.NET/kodu ile yönetilmeyen OCR motoru arasında P/Invoke marshalling aracılığıyla iletişim kurar. asprise-vs-ironocr-examples.cs kaynağı, alttaki mekanizmayı gösterir:

// Asprise interop layer — bridging managed C# to native OCR engine
[DllImport("aocr.dll")]
private static extern IntPtr OCR(string imagePath, int type);

public string ExtractText(string imagePath)
{
    // P/Invoke call into unmanaged DLL
    IntPtr result = OCR(imagePath, 0);
    return Marshal.PtrToStringAnsi(result);  // Manual string marshal
}
// Asprise interop layer — bridging managed C# to native OCR engine
[DllImport("aocr.dll")]
private static extern IntPtr OCR(string imagePath, int type);

public string ExtractText(string imagePath)
{
    // P/Invoke call into unmanaged DLL
    IntPtr result = OCR(imagePath, 0);
    return Marshal.PtrToStringAnsi(result);  // Manual string marshal
}
Imports System.Runtime.InteropServices

' Asprise interop layer — bridging managed VB.NET to native OCR engine
Private Class OCRInterop
    <DllImport("aocr.dll")>
    Private Shared Function OCR(imagePath As String, type As Integer) As IntPtr
    End Function

    Public Function ExtractText(imagePath As String) As String
        ' P/Invoke call into unmanaged DLL
        Dim result As IntPtr = OCR(imagePath, 0)
        Return Marshal.PtrToStringAnsi(result)  ' Manual string marshal
    End Function
End Class
$vbLabelText   $csharpLabel

Üst düzey API'de, geliştiriciler bir sınıf sarmalayıcı aracılığıyla aynı köprüye çağrı yaparlar, ancak dağıtım gereksinimi değişmez: her hedef makine, doğru yerel ikili dosyayı, doğru yola, doğru işlem mimarisiyle eşleşecek şekilde gerektirir. 64-bit bir dağıtım, aocr_x64.dll yerine aocr.dll ile gönderildiğinde, çalışma zamanında BadImageFormatException atar. libaocr.so içinde LD_LIBRARY_PATH olmadan çalışan bir LinuxDockerkonteynerı DllNotFoundException atar. Her iki hata da derleme sırasında yakalanmaz.

IronOCR Yaklaşımı

IronOCR tek bir NuGet referansı olarak yüklenir. Paket, tüm yerel bağımlılıkları NuGet'in platforma özel paket seçimi mekanizması aracılığıyla dahili olarak yönetir:

// Installation — one command, all platforms
// dotnet add package IronOcr

// License setup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

// Basic OCR — no native binary setup, no tessdata, no config files
var text = new IronTesseract().Read("document.jpg").Text;
// Installation — one command, all platforms
// dotnet add package IronOcr

// License setup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

// Basic OCR — no native binary setup, no tessdata, no config files
var text = new IronTesseract().Read("document.jpg").Text;
Imports IronOcr

' Installation — one command, all platforms
' dotnet add package IronOcr

' License setup
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"

' Basic OCR — no native binary setup, no tessdata, no config files
Dim text As String = New IronTesseract().Read("document.jpg").Text
$vbLabelText   $csharpLabel

using deyimi OcrInput üzerinde manuel motor yaşam döngüsü çağrılarını değiştirir. Çağrılacak StartEngine() yok ve unutulacak StopEngine() da yok. Çöp toplayıcı ve IDisposable düzeni, her OCR çağrısının etrafına try/finally iskele kurmayı gerektirmeden istisna senaryolarında temizliği doğru şekilde halleder.

Ayrıntılı kurulum kılavuzu için IronTesseract kurulum kılavuzuna bakın.

İş Parçacığı Modeli

İş parçacığı kısıtlaması,.NETsunucu geliştiricileri için Asprise ve alternatifleri arasındaki en önemli farktır. Bu bir performans endişesi değil - bu bir lisans uyum meselesidir.

Asprise Yaklaşımı

LITE ve STANDARD lisanslar, açıkça çok iş parçacıklı ve çok işlemli yürütmeyi yasaklar. Asprise'yi aynı anda birden fazla iş parçacığından çağıran herhangi bir kod, o seviyelerdeki lisans sözleşmesini ihlal eder. ASP.NET Core, varsayılan olarak bir iş parçacığı havuzunda istekleri işler. Bu, Asprise'yi çağıran her standart Web API denetleyicisinin, LITE/STANDARD üzerinde bir lisans ihlali olmasına neden olur:

// ASPRISE LITE/STANDARD — violates license in ASP.NET Core context
// Web server thread pool = multiple concurrent threads = prohibited
[ApiController]
public class OcrController : ControllerBase
{
    [HttpPost("extract")]
    public IActionResult ExtractText(IFormFile file)
    {
        // Two concurrent requests = two threads = license violation
        var ocr = new Ocr();
        ocr.StartEngine("eng", Ocr.SPEED_FAST);
        var text = ocr.Recognize(tempPath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        ocr.StopEngine();
        return Ok(text);
    }
}
// ASPRISE LITE/STANDARD — violates license in ASP.NET Core context
// Web server thread pool = multiple concurrent threads = prohibited
[ApiController]
public class OcrController : ControllerBase
{
    [HttpPost("extract")]
    public IActionResult ExtractText(IFormFile file)
    {
        // Two concurrent requests = two threads = license violation
        var ocr = new Ocr();
        ocr.StartEngine("eng", Ocr.SPEED_FAST);
        var text = ocr.Recognize(tempPath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        ocr.StopEngine();
        return Ok(text);
    }
}
Imports Microsoft.AspNetCore.Mvc

' ASPRISE LITE/STANDARD — violates license in ASP.NET Core context
' Web server thread pool = multiple concurrent threads = prohibited
<ApiController>
Public Class OcrController
    Inherits ControllerBase

    <HttpPost("extract")>
    Public Function ExtractText(file As IFormFile) As IActionResult
        ' Two concurrent requests = two threads = license violation
        Dim ocr As New Ocr()
        ocr.StartEngine("eng", Ocr.SPEED_FAST)
        Dim text As String = ocr.Recognize(tempPath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT)
        ocr.StopEngine()
        Return Ok(text)
    End Function
End Class
$vbLabelText   $csharpLabel

LITE/STANDARD üzerinde toplu işlem, mevcut CPU çekirdeklerinden bağımsız olarak sırayla yapılır:

// ASPRISE LITE/STANDARD — sequential only (100 docs at 2 sec each = 3+ minutes)
Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    foreach (var path in imagePaths)  // Cannot use Parallel.ForEach — license violation
    {
        string text = ocr.Recognize(path, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        results.Add(text);
    }
}
finally
{
    ocr.StopEngine();
}
// ASPRISE LITE/STANDARD — sequential only (100 docs at 2 sec each = 3+ minutes)
Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    foreach (var path in imagePaths)  // Cannot use Parallel.ForEach — license violation
    {
        string text = ocr.Recognize(path, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        results.Add(text);
    }
}
finally
{
    ocr.StopEngine();
}
' ASPRISE LITE/STANDARD — sequential only (100 docs at 2 sec each = 3+ minutes)
Ocr.SetUp()
Dim ocr As New Ocr()
Try
    ocr.StartEngine("eng", Ocr.SPEED_FAST)
    For Each path In imagePaths ' Cannot use Parallel.ForEach — license violation
        Dim text As String = ocr.Recognize(path, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT)
        results.Add(text)
    Next
Finally
    ocr.StopEngine()
End Try
$vbLabelText   $csharpLabel

ENTERPRISE, iş parçacığı kısıtlamasını kaldırır, ancak ENTERPRISE, yayınlanmamış bir fiyat ile Asprise satışlarıyla iletişim kurmayı gerektirir.

IronOCR Yaklaşımı

IronTesseract, herhangi bir lisans katmanında iplik güvenlidir ve iş parçacığı oluşturma kısıtlaması taşımaz. Bir $999 Lite lisansı üzerinde paralel toplu işlem tam olarak desteklenir:

//IronOCR— parallel batch on any license tier
// 100 docs at 2 sec each, 8 cores = ~25 seconds vs 200 seconds sequential
var results = imagePaths
    .AsParallel()
    .Select(path => new IronTesseract().Read(path).Text)
    .ToList();
//IronOCR— parallel batch on any license tier
// 100 docs at 2 sec each, 8 cores = ~25 seconds vs 200 seconds sequential
var results = imagePaths
    .AsParallel()
    .Select(path => new IronTesseract().Read(path).Text)
    .ToList();
Imports System.Linq

'IronOCR— parallel batch on any license tier
' 100 docs at 2 sec each, 8 cores = ~25 seconds vs 200 seconds sequential
Dim results = imagePaths _
    .AsParallel() _
    .Select(Function(path) New IronTesseract().Read(path).Text) _
    .ToList()
$vbLabelText   $csharpLabel

ASP.NET Core denetleyicileri herhangi bir özel yapılandırma gerektirmeden çalışır:

//IronOCR— concurrent requests on any license tier
[ApiController]
public class OcrController : ControllerBase
{
    [HttpPost("extract")]
    public IActionResult ExtractText(IFormFile file)
    {
        // Thread-safe on Lite, Plus, Professional, Unlimited — all tiers
        var text = new IronTesseract().Read(tempPath).Text;
        return Ok(text);
    }
}
//IronOCR— concurrent requests on any license tier
[ApiController]
public class OcrController : ControllerBase
{
    [HttpPost("extract")]
    public IActionResult ExtractText(IFormFile file)
    {
        // Thread-safe on Lite, Plus, Professional, Unlimited — all tiers
        var text = new IronTesseract().Read(tempPath).Text;
        return Ok(text);
    }
}
Imports Microsoft.AspNetCore.Mvc

<ApiController>
Public Class OcrController
    Inherits ControllerBase

    <HttpPost("extract")>
    Public Function ExtractText(file As IFormFile) As IActionResult
        ' Thread-safe on Lite, Plus, Professional, Unlimited — all tiers
        Dim text = New IronTesseract().Read(tempPath).Text
        Return Ok(text)
    End Function
End Class
$vbLabelText   $csharpLabel

Toplu iş yüklerinde paralel geçiş kalıpları için çok iş parçacığı örneğine bakın.

Görüntü Ön İşleme

Asprise, görüntüleri ön işlem yapmadan yerel motoruna aktarır. Düşük kaliteli taramalar - eğik sayfalar, gürültü artifaktları, düşük kontrast - tanıma öncesinde görüntü kusurlarını düzelten bir ön işleme katmanı olmadığı için OCR doğruluğunu doğrudan düşürür.

Asprise Yaklaşımı

Ön işleme, harici bir görüntü kütüphanesi gerektirir. Asprise ile çalışan bir geliştirici, ImageMagick, SkiaSharp veya System.Drawing gibi bir bağımlılık ekler, ön işleme işlemlerini elle çalıştırır, işlenmiş görüntüyü geçici bir dosyaya kaydeder ve ardından o dosyayı Asprise'ye aktarır:

// Asprise preprocessing: external dependency required
// 1. Load with external library
// 2. Apply corrections (deskew, denoise, contrast) with external library
// 3. Save to temp file
// 4. Pass temp file to Asprise

var ocr = new Ocr();
ocr.StartEngine("eng", Ocr.SPEED_FAST);
// preprocessedImagePath comes from your external preprocessing pipeline
string text = ocr.Recognize(preprocessedImagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
ocr.StopEngine();
// Asprise preprocessing: external dependency required
// 1. Load with external library
// 2. Apply corrections (deskew, denoise, contrast) with external library
// 3. Save to temp file
// 4. Pass temp file to Asprise

var ocr = new Ocr();
ocr.StartEngine("eng", Ocr.SPEED_FAST);
// preprocessedImagePath comes from your external preprocessing pipeline
string text = ocr.Recognize(preprocessedImagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
ocr.StopEngine();
' Asprise preprocessing: external dependency required
' 1. Load with external library
' 2. Apply corrections (deskew, denoise, contrast) with external library
' 3. Save to temp file
' 4. Pass temp file to Asprise

Dim ocr As New Ocr()
ocr.StartEngine("eng", Ocr.SPEED_FAST)
' preprocessedImagePath comes from your external preprocessing pipeline
Dim text As String = ocr.Recognize(preprocessedImagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT)
ocr.StopEngine()
$vbLabelText   $csharpLabel

Bu, yapıya bir bağımlılık ekler, ek kütüphaneden gelen çalışma zamanı yükü ekler, geliştiricinin etkili düzeltmeler uygulayabilecek kadar görüntü işlemesini anlamasını gerektirir.

IronOCR Yaklaşımı

Ön işleme OcrInput içine yerleştirilmiştir. Harici bir kütüphane ile ve dikkatli parametre ayarı gerektiren 50-100 satır alan aynı işlem hattı, beş yöntem çağrısına dönüşür:

//IronOCR— preprocessing built in, no external dependencies
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
input.Deskew();               // Correct page rotation
input.DeNoise();              // Remove scanner artifacts
input.Contrast();             // Improve text/background separation
input.Binarize();             // Convert to black/white for cleaner engine input
input.EnhanceResolution(300); // Scale to optimal DPI

var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
//IronOCR— preprocessing built in, no external dependencies
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");
input.Deskew();               // Correct page rotation
input.DeNoise();              // Remove scanner artifacts
input.Contrast();             // Improve text/background separation
input.Binarize();             // Convert to black/white for cleaner engine input
input.EnhanceResolution(300); // Scale to optimal DPI

var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' IronOCR— preprocessing built in, no external dependencies
Using input As New OcrInput()
    input.LoadImage("low-quality-scan.jpg")
    input.Deskew()               ' Correct page rotation
    input.DeNoise()              ' Remove scanner artifacts
    input.Contrast()             ' Improve text/background separation
    input.Binarize()             ' Convert to black/white for cleaner engine input
    input.EnhanceResolution(300) ' Scale to optimal DPI

    Dim result = New IronTesseract().Read(input)
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

Dönüşün öngörülemez olduğu taramalar için, otomatik düzeltme, geliştiriciye dönüş değerlerini tespit etme veya belirtme gerektirmeden keyfi açılarda çalışır. Görüntü kalitesi düzeltme kılavuzu, tüm filtre setini ve her birinin ne zaman uygulanacağını kapsar.

PDF İşleme

Belge işleme hatlarında PDF girişi sık bir gereksinimdir. Asprise, yerel PDF desteği sağlamaz - kütüphane görüntü dosyaları üzerinde çalışır. Asprise ile bir PDF işlemek, her sayfayı önce bir görüntüye dönüştürmek ve ardından her bir görüntü dosyasını ayrı ayrı işlemek için harici bir kütüphane gerektirir.

Asprise Yaklaşımı

// Asprise PDF workaround — external library required to render PDF pages
var images = ExternalPdfLibrary.RenderPages("invoice.pdf");

Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    var allText = new System.Text.StringBuilder();
    foreach (var imagePath in images)
    {
        string pageText = ocr.Recognize(imagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        allText.Append(pageText);
    }
    return allText.ToString();
}
finally
{
    ocr.StopEngine();
}
// Also: clean up temp image files
// Asprise PDF workaround — external library required to render PDF pages
var images = ExternalPdfLibrary.RenderPages("invoice.pdf");

Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    var allText = new System.Text.StringBuilder();
    foreach (var imagePath in images)
    {
        string pageText = ocr.Recognize(imagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT);
        allText.Append(pageText);
    }
    return allText.ToString();
}
finally
{
    ocr.StopEngine();
}
// Also: clean up temp image files
Imports System.Text

' Asprise PDF workaround — external library required to render PDF pages
Dim images = ExternalPdfLibrary.RenderPages("invoice.pdf")

Ocr.SetUp()
Dim ocr As New Ocr()
Try
    ocr.StartEngine("eng", Ocr.SPEED_FAST)
    Dim allText As New StringBuilder()
    For Each imagePath In images
        Dim pageText As String = ocr.Recognize(imagePath, Ocr.RECOGNIZE_TYPE_TEXT, Ocr.OUTPUT_FORMAT_PLAINTEXT)
        allText.Append(pageText)
    Next
    Return allText.ToString()
Finally
    ocr.StopEngine()
End Try
' Also: clean up temp image files
$vbLabelText   $csharpLabel

Bu yaklaşım bir PDF render bağımlılığı ekler (genellikle iText, PDFSharp veya ticari bir render), geçici dosyaları yönetmeyi gerektirir ve yerel bir PDF okuyucusunun koruyacağı PDF meta verilerini ve yapısını kaybeder. Şifre korumalı PDF'ler üçüncü bir bileşen gerektirir.

IronOCR Yaklaşımı

IronOCR, PDF'leri doğrudan okur. OcrInput.LoadPdf() yöntemi, çok sayfalı belgeler ve şifre korumalı dosyalar da dahil olmak üzere içsel olarak işleme sahiptir:

//IronOCR— native PDF input, no external rendering library
using var input = new OcrInput();
input.LoadPdf("invoice.pdf");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);

// Password-protected PDFs — same API, one parameter
using var secureInput = new OcrInput();
secureInput.LoadPdf("confidential.pdf", Password: "secret");
var secureResult = new IronTesseract().Read(secureInput);

// Generate searchable PDF from a scanned document
var scanResult = new IronTesseract().Read("scanned-contract.pdf");
scanResult.SaveAsSearchablePdf("searchable-contract.pdf");
//IronOCR— native PDF input, no external rendering library
using var input = new OcrInput();
input.LoadPdf("invoice.pdf");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);

// Password-protected PDFs — same API, one parameter
using var secureInput = new OcrInput();
secureInput.LoadPdf("confidential.pdf", Password: "secret");
var secureResult = new IronTesseract().Read(secureInput);

// Generate searchable PDF from a scanned document
var scanResult = new IronTesseract().Read("scanned-contract.pdf");
scanResult.SaveAsSearchablePdf("searchable-contract.pdf");
Imports IronOcr

' IronOCR— native PDF input, no external rendering library
Using input As New OcrInput()
    input.LoadPdf("invoice.pdf")
    Dim result = New IronTesseract().Read(input)
    Console.WriteLine(result.Text)
End Using

' Password-protected PDFs — same API, one parameter
Using secureInput As New OcrInput()
    secureInput.LoadPdf("confidential.pdf", Password:="secret")
    Dim secureResult = New IronTesseract().Read(secureInput)
End Using

' Generate searchable PDF from a scanned document
Dim scanResult = New IronTesseract().Read("scanned-contract.pdf")
scanResult.SaveAsSearchablePdf("searchable-contract.pdf")
$vbLabelText   $csharpLabel

PDF OCR kılavuzu, sayfa aralığı seçimi, karışık PDF türleri ile başa çıkma ve aramalı PDF çıktısı ele alma işlemlerini kapsar.

API Eşleme Başvurusu

Asprise OCR IronOCR Karşılığı
Ocr.SetUp() Gerekli değil
new Ocr() new IronTesseract()
ocr.StartEngine("eng", Ocr.SPEED_FAST) Gerekli değil (motor ilk kullanımda başlatılır)
ocr.Recognize(path, type, format) ocr.Read(path)
Ocr.RECOGNIZE_TYPE_TEXT Varsayılan davranış
Ocr.RECOGNIZE_TYPE_BARCODE ocr.Configuration.ReadBarCodes = true
Ocr.RECOGNIZE_TYPE_ALL ocr.Configuration.ReadBarCodes = true
Ocr.OUTPUT_FORMAT_PLAINTEXT result.Text
Ocr.OUTPUT_FORMAT_XML result.Words / yapılandırılmış sonuç
Ocr.OUTPUT_FORMAT_PDF result.SaveAsSearchablePdf()
Ocr.SPEED_FASTEST ocr.Configuration hız ayarları
Ocr.SPEED_FAST Varsayılan yapılandırma
Ocr.SPEED_SLOW Daha yüksek doğruluk yapılandırması
ocr.StopEngine() Gerekli değil (using temizlik işlemini halleder)
Dil dizgisi "eng+fra" ocr.Language = OcrLanguage.English; ocr.AddSecondaryLanguage(OcrLanguage.French)
Manuel try/finally temizliği using var input = new OcrInput()
Hata-dizisi dönüş değeri Standart.NET/istisnaları

Takımlar Asprise'dan IronOCR'a Geçmeyi Düşündüğünde

Üretim Hazırlığı Engelleyicisi

İş parçacığı kısıtlaması, çoğu üretim.NET/iş yükü için sert bir engelleyici olarak yüzeye çıkar. Bir ekip, geliştirme sırasında Asprise LITE kullanarak bir OCR özelliği oluşturur - tek iş parçacıklı testler geçer, her şey çalışır. Ardından özellik ASP.NET Core API'nin arkasında bir sahne ortamına gönderilir, eş zamanlı test istekleri gelir ve uygulama ya hatalar fırlatır ya da teknik olarak uyumsuz bir durumda çalışır. Çözüm, ENTERPRISE'a geçmek (ilgili maliyetlerle ve satış etkileşimiyle) veya kütüphaneyi değiştirmektir. Sahne ortamında değil de canlıya geçişte bu noktaya ulaşan ekipler şanslıdır; bunu lansman sonrası keşfedenler, daha acil bir geçişle karşı karşıyadırlar. IronOCR, bu türdeki tüm sorun grubunu ortadan kaldırır — $999 Lite lisansı, eşzamanlı istek işleme, toplu paralel çalışma, Windows Hizmetleri ve bulut işlevlerini sınırsız destekler.

Dağıtım Karmaşıklığı Vergisi

Asprise ile modern dağıtım ortamlarında -Dockerkonteynerleri,LinuxVM'ler, Kubernetes podları - çalışan ekipler, sırf NuGet paketleri ile var olmayan sürekli bakım maliyetiyle karşılaşır. Her bir konteyner görüntü derlemesi, hedef mimari için doğru yerel ikili dosyayı dahil etmelidir. Birden fazla platformu hedefleyen her CI/CD hattı, platforma özgü dosya eklemeyi yönetmelidir. Üretim linux konteynerinde eksik bir yerel kütüphane, bir çalışma zamanı keşfi, değil bir derleme zamanı hatasıdır. Bir 32-bit DLL'yi 64-bit bir işleme yükleme konusunda saatler harcayan ekipler, maliyeti somut bir şekilde anlarlar. IronOCR'nun yalnızca NuGet dağıtımı, bu tür dağıtım hatalarını tamamen ortadan kaldırır.

Java Belgeleri Sorunu

.NET uygulamaları geliştiren ekipler,Javaörnekleri değil, C# örnekleri ihtiyaç duyuyor. Asprise'nin birincil belgeleri, API referansları ve topluluk kaynaklarıJavageliştiricilerine yönelik olarak düzenlenmiştir..NETgeliştiricileri Asprise belgelerini okuyarakJavasözdizimini,Javapaket geleneklerini ve Java'ya özgü kalıpları C# eşdeğerlerine çevirir - ve bazen çeviri doğrudan değildir çünkü.NETsarmalayıcısı herJavatarafından sunulan özelliği açığa çıkarmayabilir. IronOCR'nun belgeleri, eğiticileri ve kod örnekleri C# geliştiricilerine yazılmıştır. Görüntülerden metin okuma eğitimi ve tam eğitim merkezi, tercüme maliyeti olmadan her özellik için çalışan C# örnekleri sağlar.

PDF Hat Boşluğu

Taranmış belgeleri, faturaları, sözleşmeler veya PDF formatındaki formları işleyen ekipler, Asprise'yi PDF render kütüphanesini bağımlılık grafiğine eklemeden kullanamaz. O render kütüphanesi, kendi lisanslama hususlarını, bakım yükünü ve olası uyumsuzlukları getirir. OCR + PDF'ye tek bir yığında ihtiyacı olan ekipler için,IronOCR her ikisini de yerel olarak yönetir. Arşivleme ve uyumluluk iş akışları için yaygın bir gereklilik olan taranmış girişlerden aranalabilir PDF'ler oluşturma yeteneği, Asprise'de herhangi bir lisans katmanında eşdeğeri yoktur.

Dil Kapsama Boşluğu

Asprise 20'den fazla OCR dili destekler.IronOCR 125+ destekler, her biri bağımsız bir NuGet paketi olarak yüklenebilir. Arapça, Hintçe, Tayca veya Asprise tarafından desteklenmeyen onlarca diğer dilde belgeleri işleyen ekipler, Asprise aracılığıyla çok dilli desteğe bir yol bulamaz. çok dilli kılavuzu, dil paketlerinin kurulumu ve birçok dil arasında eşzamanlı tanıma dahil ol olmak üzere kapsamaktadır.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

Motor Yaşam Döngüsü Kodunu Değiştirme

Geçişteki en büyük mekanik değişiklik, Asprise motorunun yaşam döngüsü düzenini kaldırmak ve bunun yerine doğrudan IronTesseract örneklemesini kullanmaktır. SetUp() / StartEngine() / Recognize() / StopEngine() dizisinin her meydana gelmesi tek bir Read() çağrısı olur:

// Before: Asprise lifecycle (15 lines, manual cleanup)
Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    string text = ocr.Recognize(
        imagePath,
        Ocr.RECOGNIZE_TYPE_TEXT,
        Ocr.OUTPUT_FORMAT_PLAINTEXT);
    return text;
}
finally
{
    ocr.StopEngine();
}

// After:IronOCR(1 line)
return new IronTesseract().Read(imagePath).Text;
// Before: Asprise lifecycle (15 lines, manual cleanup)
Ocr.SetUp();
Ocr ocr = new Ocr();
try
{
    ocr.StartEngine("eng", Ocr.SPEED_FAST);
    string text = ocr.Recognize(
        imagePath,
        Ocr.RECOGNIZE_TYPE_TEXT,
        Ocr.OUTPUT_FORMAT_PLAINTEXT);
    return text;
}
finally
{
    ocr.StopEngine();
}

// After:IronOCR(1 line)
return new IronTesseract().Read(imagePath).Text;
' Before: Asprise lifecycle (15 lines, manual cleanup)
Ocr.SetUp()
Dim ocr As New Ocr()
Try
    ocr.StartEngine("eng", Ocr.SPEED_FAST)
    Dim text As String = ocr.Recognize( _
        imagePath, _
        Ocr.RECOGNIZE_TYPE_TEXT, _
        Ocr.OUTPUT_FORMAT_PLAINTEXT)
    Return text
Finally
    ocr.StopEngine()
End Try

' After: IronOCR (1 line)
Return New IronTesseract().Read(imagePath).Text
$vbLabelText   $csharpLabel

Birçok belgeyi ardışık olarak işleyen performansa duyarlı kod için, her çağrıda yeni bir tane oluşturmak yerine IronTesseract örneğini yeniden kullanın - motor başlatma maliyet gerektirir ve art arda kullanılan tek bir örnek, belge başına bir tane oluşturup yok etmekten daha verimlidir.

Dize Tabanlı Dil Kodlarını Değiştirme

Asprise, dil seçimi için dize parametreleri kullanır ("eng", "fra", "eng+fra"). IronOCR, ikincil bir dil API'si ile güçlü bir şekilde yazılmış bir OcrLanguage numaralandırma kullanır. çok dilli kılavuz, mevcut dil tanıtıcılarını ve her biri için gereken NuGet paketlerini kapsar:

// Before: Asprise string-based language
ocr.StartEngine("eng+fra", Ocr.SPEED_FAST);

// After:IronOCR strongly-typed language enum
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.French);
var result = ocr.Read(imagePath);
// Before: Asprise string-based language
ocr.StartEngine("eng+fra", Ocr.SPEED_FAST);

// After:IronOCR strongly-typed language enum
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
ocr.AddSecondaryLanguage(OcrLanguage.French);
var result = ocr.Read(imagePath);
Imports IronOcr

' Before: Asprise string-based language
ocr.StartEngine("eng+fra", Ocr.SPEED_FAST)

' After: IronOCR strongly-typed language enum
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
ocr.AddSecondaryLanguage(OcrLanguage.French)
Dim result = ocr.Read(imagePath)
$vbLabelText   $csharpLabel

Hata-Dizesi Kontrollerini Değiştirme

Asprise tanıma başarısız olduğunda null veya bir hata ile önceden eklenmiş bir dize döndürür. IronOCR,.NETistisnaları fırlatır. Null ve dize-önek kontrollerini standart try/catch blokları ile değiştirin. Bu, OCR hata işlemesini diğer.NET/istisna işleme modeliyle hizalar ve ayrıştırılmış hata dizeleri yerine tam yığın izlerine ve istisna türü hiyerarşilerine erişim sağlar.

Paralel İşleme Özelliğini Açma

Geçişten sonra, mevcut foreach toplu döngüleri, lisans kaygısı olmadan Parallel.ForEach veya PLINQ'ya dönüştürülebilir. Önceden LITE/STANDARD üzerinde sırayla işlenen belge toplulukları için, paralellik doğrudan bir throughput çarpanıdır. async OCR kılavuzu, engellemeyen OCR'nin iş parçacığı havuzu doygunluğuna tercih edildiği web uygulama bağlamları için async kalıpları kapsar.

Ek IronOCR Yetenekleri

Bu karşılaştırmada kapsanan alanların ötesinde,IronOCR Asprise'de bir eşdeğeri olmayan özellikler sağlar:

  • OCR sırasında barkod okuma: Belge içinde metin tanıma ile aynı geçişte barkod ve QR kodlarını çıkarmak için ocr.Configuration.ReadBarCodes = true etkinleştirin — ikinci bir kütüphane gerektirmez.
  • Bölge bazlı OCR: Belgenin belirli alanlarından metin çıkarmak için CropRectangle kullanın, faturaların üstbilgileri, form alanları ve yapılandırılmış veri bölgeleri için kullanışlıdır.
  • Güven skoru: İnsan gözden geçirmesi için düşük güven ekstra çıkarmaları işaretlemek üzere kelime başına ve genel tanıma güven değerlerine erişin.
  • Yapılandırılmış veri çıkarımı: Düz metin çıktısının ötesinde düzeneğim duyarlı belge ayrıştırması sağlamak için her biri piksel koordinatlarını taşıyan sayfa, paragraf, satır ve kelime ile sonuç nesneleri arasında gezinin.
  • hOCR aktarımı: Aşağı akış belge işleme araçlarıyla entegrasyon için tanıma sonuçlarını hOCR formatında dışa aktarın.
  • Özel belge tanıma: Genel Tesseract tanımanın ötesinde pasaportlar, MICR çekleri, plaka ve el yazısı için tasarlanmış iş akışları.
  • İlerleme izleme: Uzun süreli toplu işlemler sırasında UI geri bildirimi ve izleme için ilerleme olaylarına abone olun.

.NET Uyumluluğu ve Geleceğe Hazırlık

IronOCR,.NETFramework 4.6.1+,.NETCore 2.0+ ve tüm.NET5'ten.NET9'a ve ötesini kapsayan.NET/Standard 2.0 hedefliyor. Kütüphane,.NETsürüm döngüleri ile uyumlu olarak düzenli güncellemeler alır ve Windows x64, Windows x86,Linuxx64, macOS, Docker, Azure App Service ve AWS Lambda üzerinde test edilir. Asprise'ın.NET/uyumluluğu yerel ikili model ile sınırlıdır — yeni platform hedefleri (ARM64, WASM) Asprise Inc. tarafından yeni yerel derlemeler gerektirir veJavaöncelikli sürüm kadihası.NETplatform güncellemelerinin geride kalmasına neden olabilir. Bugün.NET8 ve.NET9'u hedefleyen, 2026'da.NET10'a geçme planı olan ekipler için IronOCR'nun yönetilen NuGet mimarisi, yerel ikili endişeleri olmadan basit bir uyumluluk yolu sağlar.

Sonuç

Asprise OCR, bir.NET/sarmalayıcıya sahip birJavaOCR kütüphanesidir.Javageçmişi rastlantısal değil - dağıtım modelini (platforma özel yerel DLL'ler), API tarzını (tampon yöntemler ile C-tarzı yaşam döngüsü yöntemleri), dökümantasyon dilini (çeviri gerektirenJavaörnekleri) ve iş parçacığı kısıtlamalarını (LITE/STANDARD lisans sözleşmesiyle tek iş parçacık) tanımlar. Bir.NET/projesine sahipJavaekipleri için, Asprise'ın çapraz dil konumlandırması kısmen mantıklı. Üretim sistemleri geliştiren.NET/ekipleri için, bu aynı özellikler, her aşamada sürtünme yaratır.

İş parçacığı kısıtlaması özellikle ağırlığı hak eder. Asprise'ın en uygun fiyatlı iki kademesi - ürünü değerlendiren ekiplerin çoğunluğunu kapsayanlar - çok iş parçacıklı ve çok işlemli yürütümü yasaklar. Her ASP.NET Core Web API, bir iş kuyruğu olan her Windows Hizmeti, eşzamanlı tetikleyicileri işleyen her Azure İşlevi: bunlar standart.NETüretim kalıplarıdır ve hepsi Asprise'den ENTERPRISE lisansı gerektirir. IronOCR'un $999 Lite lisansı, bunların hepsini kısıtlama olmaksızın kapsar.

Dağıtım karmaşıklığı ikinci pratik endişedir.Dockerkonteynerleri çalıştıran,Linuxyapıları veya platformlar arası CI/CD hatları olan ekipler, Asprise ile özgü platform yerel ikililerini yönetmelidir. Bu hatalar — DllNotFoundException, BadImageFormatException — hedef altyapıda çalışma zamanında, derleme zamanında değil, ortaya çıkar. IronOCR, standart NuGet paket yönetimi aracılığıyla dağıtılır ve paket seçim mekanizması, platforma özgü ikilileri dahili olarak işler. Dağıtım yüzeyi, tek bir NuGet referansıdır.

.NET ekiplerinin yeni bir OCR entegrasyonuna başlarken başlangıç noktası açıktır: tek bir dotnet add package IronOcr, tek satırlık lisans anahtarı ataması ve ilk sonuç için new IronTesseract().Read("document.jpg").Text. Hiçbir motor başlatma, yerel ikili dosya kaynağı sağlama, iş parçacığı lisans denetimi yok.

Lütfen dikkate alınAsprise OCR, PDFSharp, Tesseract ve iText kendi sahiplerinin tescilli markalarıdır. Bu site, Asprise, Google, empira Software GmbH veya iText Group ile ilişkilendirilmemiş, onaylanmamış veya desteklenmemiştir. Tüm ürün adları, logolar ve markalar kendi sahiplerinin malıdır. 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.

Sıkça Sorulan Sorular

Asprise OCR SDK nedir?

Asprise OCR SDK, geliştiriciler ve işletmeler tarafından görüntülerden ve belgelerden metin çıkarmak için kullanılan bir OCR çözümüdür. .NET uygulama geliştirme için IronOCR ile birlikte değerlendirilen birkaç OCR seçeneğinden biridir.

.NET geliştiricileri için IronOCR, Asprise OCR SDK ile nasıl karşılaştırılır?

IronOCR, IronTesseract'ı çekirdek motoru olarak kullanarak NuGet'e özgü bir .NET OCR kütüphanesidir. Asprise OCR SDK'ye kıyasla, daha basit dağıtım (SDK kurulumları yok), sabit oranlı fiyatlandırma ve COM interop veya bulut bağımlılıkları olmadan temiz bir C# API sunar.

IronOCR, Asprise OCR SDK'den daha mı kolay kurulur?

IronOCR, tek bir NuGet paketi aracılığıyla yüklenir. SDK kurulumları, kopyalamak için lisans dosyaları, kaydedilecek COM bileşenleri veya yönetilecek ayrı çalışma zamanı ikili dosyaları yoktur. Tüm OCR motoru paket içinde yer alır.

Asprise OCR SDK ve IronOCR arasındaki doğruluk farkları nelerdir?

IronOCR, standart iş belgeleri, faturalar, makbuzlar ve taranmış formlar için yüksek tanıma doğruluğu sağlar. Çok kötü durumda olan belgeler ya da nadir yazılar için ise doğruluk, kaynak kalitesine göre değişiklik gösterebilir. IronOCR, düşük kaliteli girişlerde tanımayı geliştirmek için görüntü ön işleme filtreleri içerir.

IronOCR, PDF metin çıkarma desteği sunuyor mu?

Evet. IronOCR, tek bir çağrıda hem yerel PDF'lerden hem de taranmış PDF görüntülerinden metin çıkarır. Çok sayfalı TIFF dosyaları, görüntüler ve akıntılar da desteklenir. Taranmış PDF'ler için, OCR sayfa bazında uygulanır ve her sayfa için sonuç nesneleri sağlanır.

Asprise OCR SDK lisanslaması IronOCR ile nasıl karşılaştırılır?

IronOCR, sayfa veya tarama başına ücret içermeyen sabit oranlı bir süresiz lisans kullanır. Yüksek belge hacmi işleyen kuruluşlar, hacme rağmen aynı lisans maliyetini öder. Ayrıntılar ve hacim fiyatlandırması IronOCR lisans sayfasında mevcuttur.

IronOCR hangi dilleri destekliyor?

IronOCR, ayrı NuGet dil paketleri aracılığıyla 127 dili destekler. Bir dil eklemek için tek bir 'dotnet add package IronOcr.Languages.{Language}' komutu gerekir. Manuel dosya yerleştirme veya yol yapılandırması gerekmez.

.NET projesine IronOCR'yi nasıl kurarım?

NuGet üzerinden kurun: 'Install-Package IronOcr' Package Manager Console'da veya 'dotnet add package IronOcr' CLI'de. Ek dil paketleri aynı şekilde yüklenir. Yerel SDK kurucusu gerekmez.

Asprise OCR'den farklı olarak IronOCR, Docker ve konteynerleşmiş dağıtımlar için uygun mudur?

Evet. IronOCR, NuGet paketi aracılığıyla Docker konteynerlerinde çalışır. Lisans anahtarı, bir ortam değişkeni aracılığıyla ayarlanır. Lisans dosyaları, SDK yolları veya OCR motoru için hacimlerin bağlanmasına gerek yoktur.

Asprise OCR'ye kıyasla, IronOCR'yi satın almadan önce deneyebilir miyim?

Evet. IronOCR deneme modu, belgeleri işler ve çıkış üzerine bir filigran eklemeli OCR sonuçları döndürür. Lisans satın almadan önce kendi belgeleriniz üzerinde doğruluğu kontrol edebilirsiniz.

IronOCR, metin çıkarma yanında barkod okuma desteği sunar mı?

IronOCR, metin çıkarma ve OCR'ye odaklanır. Barkod okuma için Iron Software, eşlik eden bir kütüphane olan IronBarcode'u sağlar. Her ikisi de ayrı ayrı veya Iron Suite paketi olarak mevcuttur.

Asprise OCR SDK'den IronOCR'ye geçiş kolay mıdır?

Asprise OCR SDK'den IronOCR'ye geçiş genellikle başlatma dizilerini IronTesseract oluşturumuyla değiştirmeyi, COM yaşam döngüsü yönetimini kaldırmayı ve API çağrılarını güncellemeyi içerir. Çoğu geçiş, kod karmaşıklığını önemli ölçüde azaltı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ı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara