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.dllgerektirir, 64-bit işlemleraocr_x64.dllgerektirir. - 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()).IDisposableuygulaması 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
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 IronOcrher şeyi yükler - yerel ikili yönetim, tessdata klasörleri, platforma özgü yapılandırma yok. IDisposablekaynak yönetimi:OcrInput,IDisposableuygular.usingdeyimi 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()veEnhanceResolution()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
Ü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
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
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
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()
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
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()
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
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
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")
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
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)
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 = trueetkinleştirin — ikinci bir kütüphane gerektirmez. - Bölge bazlı OCR: Belgenin belirli alanlarından metin çıkarmak için
CropRectanglekullanı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.
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.

