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

Azure'de OCR vs. IronOCR: Hangi Optik Karakter Tanıma Çözümü .NET Projeleri İçin En İyisidir?

Windows.Media.Ocr, her Windows 10 ve Windows 11 kurulumuyla ücretsiz olarak gönderilir veLinuxsunucusuna,Dockerkonteynerine veyaAWS Lambdaişlevine aynı uygulamayı dağıtmaya çalışana kadar çekicidir — burada API basitçe mevcut değildir. Platform kilitlenmesi bu kütüphanede kenar durumu değildir; bu tanımlayıcı kısıtlamadır. Windows.Media.Ocr'yi seçme kararından sonraki her mimari karar, ana işletim sisteminin bir Windows 10 veya Windows 11 masaüstü veya tüketici sınıfı sunucu olması gerektiği gereksinimi tarafından şekillendirilir. Linux, macOS, Docker, Linux'ta Azure Functions,AWS Lambdayok. Sıfır planla iç Windows araçları geliştiren geliştiriciler için, 0 $ fiyatıyla tartışmak zor. Herkes için, gizli maliyet, OCR'yi farklı bir sisteme tamamen yeniden yazmaktır.

Windows.Media.Ocr'yi Anlamak

Windows.Media.Ocr, Windows Runtime (WinRT) API yüzeyinin bir parçasıdır ve Windows 8.1'de tanıtılmış, Windows 10 ve 11 için geliştirilmiştir. OcrEngine sınıfını Windows.Media.Ocr ad alanında açığa çıkarır, bir SoftwareBitmap kabul eder — ki bu Windows.Graphics.Imaging içinden bir WinRT türüdür — ve tanınmış metin ve satır geometrisi içeren bir OcrResult döndürür.

API, WinRT'nin async/await sözleşmesine dayanan bir yapıya sahiptir. Her işlem, WinRT IAsyncOperation makinesi ile desteklenen async Task çağrıları üzerinden akar: StorageFile yükle, bir akış aç, bir BitmapDecoder oluştur, bir SoftwareBitmap al ve ancak o zaman RecognizeAsync çağır. .NET 6'dan itibaren, WinRT API'larını kullanmak, net8.0-windows10.0.19041.0 gibi Windows'a özgü bir Hedef Çerçeve Takma Adı (TFM) gerektirir. Bu TFM olmadan bir proje dosyası, Windows.Media.Ocr'ye referans veren kodları derleyemez — türler basitçe derleme grafiğinde mevcut değildir.

Ana mimari özellikler:

  • Yalnızca Windows 10/11 — WinRT API yüzeyi, tüm yapılandırmalarda Masaüstü Deneyimi olmadanWindows Serverüzerinde kullanılamaz veLinuxve macOS'ta tamamen yoktur
  • WinRT senkron olmayan modeli — tüm tanıma, IAsyncOperation destekli asenkron çağrılar üzerinden akar; senkron bir yol yoktur
  • İşletim Sistemi'nden dil paketleriOcrEngine.TryCreateFromLanguage ve TryCreateFromUserProfileLanguages, kullanıcı veya BT yöneticisi tarafından o belirli makineye yüklenen Windows dil paketlerinden mevcut dilleri çözer; paketlenmiş veya taşınabilir bir dil modeli yoktur.
  • Sadece görüntü girişi — API, SoftwareBitmap'yi doğrudan kabul eder; API'nin hiçbir katmanında PDF girdi yolu yok
  • Ön işlem hattı yok — ham bitmap tanıyıcıya iletilir; rotasyon düzeltme, gürültü giderme, kontrast artırma ve çözünürlük ölçekleme, ayrı Windows Imaging API'leri kullanılarak geliştiricinin sorumluluğundadır
  • Aranabilir PDF çıktısı yok — tanınmış metin, satır geometrisiyle düz string veri olarak döndürülür; PDF'ye dışa aktarma sağlanmaz
  • Windows'a özgü TFM gerekli — proje dosyaları bir net*-windows* TFM'yi hedeflemelidir, bu da aynı projenin platformlar arası derlenmesini engeller.

WinRT Asenkron Yığını

Windows.Media.Ocr ile her temel OCR işlemi, tanıma başlamadan önce WinRT API yüzeyinin birden çok katmanında gezinmeyi gerektirir:

// Windows.Media.Ocr: 6+ async steps before receiving any text
// Requires net8.0-windows10.0.19041.0 TFM — will not compile cross-platform

public async Task<string> ExtractTextAsync(string imagePath)
{
    // Step 1: WinRT file system access
    var file = await StorageFile.GetFileFromPathAsync(imagePath);

    // Step 2: Open WinRT stream
    using var stream = await file.OpenAsync(FileAccessMode.Read);

    // Step 3: Create bitmap decoder
    var decoder = await BitmapDecoder.CreateAsync(stream);

    // Step 4: Decode to SoftwareBitmap
    var bitmap = await decoder.GetSoftwareBitmapAsync();

    // Step 5: Check language availability — null if not installed on this machine
    var engine = OcrEngine.TryCreateFromLanguage(
        new Windows.Globalization.Language("en-US"));
    if (engine == null)
        throw new Exception("OCR engine not available for this language");

    // Step 6: Recognize
    var result = await engine.RecognizeAsync(bitmap);
    return result.Text;
}
// Windows.Media.Ocr: 6+ async steps before receiving any text
// Requires net8.0-windows10.0.19041.0 TFM — will not compile cross-platform

public async Task<string> ExtractTextAsync(string imagePath)
{
    // Step 1: WinRT file system access
    var file = await StorageFile.GetFileFromPathAsync(imagePath);

    // Step 2: Open WinRT stream
    using var stream = await file.OpenAsync(FileAccessMode.Read);

    // Step 3: Create bitmap decoder
    var decoder = await BitmapDecoder.CreateAsync(stream);

    // Step 4: Decode to SoftwareBitmap
    var bitmap = await decoder.GetSoftwareBitmapAsync();

    // Step 5: Check language availability — null if not installed on this machine
    var engine = OcrEngine.TryCreateFromLanguage(
        new Windows.Globalization.Language("en-US"));
    if (engine == null)
        throw new Exception("OCR engine not available for this language");

    // Step 6: Recognize
    var result = await engine.RecognizeAsync(bitmap);
    return result.Text;
}
Imports System.Threading.Tasks
Imports Windows.Media.Ocr
Imports Windows.Storage
Imports Windows.Graphics.Imaging
Imports Windows.Storage.Streams
Imports Windows.Globalization

Public Async Function ExtractTextAsync(imagePath As String) As Task(Of String)
    ' Step 1: WinRT file system access
    Dim file As StorageFile = Await StorageFile.GetFileFromPathAsync(imagePath)

    ' Step 2: Open WinRT stream
    Using stream As IRandomAccessStream = Await file.OpenAsync(FileAccessMode.Read)

        ' Step 3: Create bitmap decoder
        Dim decoder As BitmapDecoder = Await BitmapDecoder.CreateAsync(stream)

        ' Step 4: Decode to SoftwareBitmap
        Dim bitmap As SoftwareBitmap = Await decoder.GetSoftwareBitmapAsync()

        ' Step 5: Check language availability — Nothing if not installed on this machine
        Dim engine As OcrEngine = OcrEngine.TryCreateFromLanguage(New Language("en-US"))
        If engine Is Nothing Then
            Throw New Exception("OCR engine not available for this language")
        End If

        ' Step 6: Recognize
        Dim result As OcrResult = Await engine.RecognizeAsync(bitmap)
        Return result.Text
    End Using
End Function
$vbLabelText   $csharpLabel

engine üzerinde null kontrolü isteğe bağlı değildir. Kodu çalıştıran makinede hedef dil paketi yüklü değilse, TryCreateFromLanguage null döndürüyor ve tanıma imkansız oluyor. Geri dönüş yoktur; uygulama kullanıcıya bir hata yüzeye çıkarmalı veya sessizce başarısız olmalıdır.

IronOCR'u Anlamak

IronOCR, optimize edilmiş bir Tesseract 5 motoru üzerinde kurulu ticari bir .NET OCR kütüphanesidir ve ön işleme, PDF okuma, çok dilli çözünürlük ve yapılandırılmış veri çıktısını işleyen yönetilen bir API katmanına sahiptir. Tek bir NuGet paketi olarak yüklenir, ayrı ayrı dağıtılacak dış yerleşik ikili dosyaları yoktur, yönetilecek tessdata klasörleri yoktur ve platforma özgü TFM'ler gereklidir.

Anahtar özellikler:

  • Tasarım itibarıyla çapraz platform — kod değişiklikleri olmadan Windows, Linux, macOS, Docker, Azure App Service (Windows veya Linux),AWS Lambdave GCP Cloud Run üzerinde çalışır
  • Otomatik ön işleme — eğrilik düzeltme, gürültü giderme, kontrast iyileştirme, ikileştirme ve çözünürlük ölçekleme, düşük kaliteli girdide otomatik olarak uygulanır ve açık denetim OcrInput filtre yöntemleri aracılığıyla mümkündür.
  • Yerel PDF girişiIronTesseract.Read PDF yollarını doğrudan kabul eder; dönüşüm adımı yok, dış bir kütüphane yok
  • 125+ paketlenmiş dil — dil paketleri, uygulama ile birlikte dağıtılan NuGet paketleridir; OS'ye bağımlı yüklenen dil verisi yok
  • Aranabilir PDF çıktısıOcrResult.SaveAsSearchablePdf, taranmış herhangi bir girdiden bir metin katmanı PDF oluşturur.
  • Yapılandırılmış sonuç modeliOcrResult, Pages, Paragraphs, Lines ve kelime bazında güven skorları ve sınır kutuları açığa çıkarır.
  • Eşzamanlı işlem güvenliIronTesseract örnekleri, ek senkronizasyon olmadan paralel iş yüklerini destekler.
  • Süresiz lisanslama — $999 Lite'dan $5,999 Unlimited'a kadar, bir kerelik satın alma, sınırsız belge işleme.

Özellik Karşılaştırması

Özellik Windows.Media.Ocr IronOCR
Platform Yalnızca Windows 10/11 Windows, Linux, macOS, Docker, bulut
Fiyat Ücretsiz $5,999 süresiz
PDF girişi Hayır Yerel
Dil modeli OS yüklü paketler 125+ NuGet aracılığıyla paketlenmiş
Ön işlem None Otomatik + açık filtreler
Aranabilir PDF çıktısı Hayır Evet
API modeli WinRT asenkron Standart .NET

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

Özellik Windows.Media.Ocr IronOCR
Platform Desteği
Windows 10/11 Evet Evet
Windows Server Sınırlı Evet
Linux Hayır Evet
macOS Hayır Evet
Docker Hayır Evet
Azure Fonksiyonları (Linux) Hayır Evet
AWS Lambda Hayır Evet
Giriş Biçimleri
JPEG / PNG / BMP Evet (WinRT hattı aracılığıyla) Evet
PDF (taranmış) Hayır Evet
PDF (şifre korumalı) Hayır Evet
TIFF / çoklu sayfa Hayır Evet
Akış / bayt dizisi Hayır (yalnızca WinRT StorageFile) Evet
URL Hayır Evet
Dil Desteği
Dil kaynağı OS yüklü dil paketleri 125+ NuGet paketlenmiş
OS admin olmadan yükleme Hayır Evet (NuGet)
Çoklu dil aynı anda Hayır Evet
Makinalar arasında dil taşınabilirliği Hayır Evet
Ön işlem
Hizalama Hayır Evet (input.Deskew())
Gürültü giderme Hayır Evet (input.DeNoise())
Kontrast artırma Hayır Evet (input.Contrast())
Binarizasyon Hayır Evet (input.Binarize())
Çözünürlük ölçekleme Hayır Evet (input.EnhanceResolution(300))
Çıktı
Düz metin Evet Evet
Aranabilir PDF Hayır Evet
hOCR / HTML Hayır Evet
Kelime düzeyi sınırlayıcı kutular Kısmi (satır geometrisi) Evet
Kelime başına güvenilirlik puanları Hayır Evet
API Tasarımı
TFM kısıtlaması net*-windows* gerekli None
Senkronsuz yol Hayır Evet
OCR sırasında barkod okuma Hayır Evet
Bölge bazlı OCR Hayır Evet

Platform Kilitlenmesi ve Çapraz Platform Dağıtım

Bu iki kütüphane arasındaki tek en önemli fark doğruluk, ön işleme ve PDF desteği değil — dağıtım topolojisidir. Windows.Media.Ocr,Windows 10/11dışında mevcut değildir. Bu bir yapılandırma sorunu değildir veya eksik bir NuGet paketi değildir; API'yi destekleyen WinRT çalışma zamanı, diğer tüm işletim sistemlerinde yok.

Windows.Media.Ocr Yaklaşımı

WinRT bağımlılığı, tek bir kod satırı çalışmadan önce proje dosyasında belirir. TargetFramework bir Windows platformu versiyonunu belirtmelidir:


<PropertyGroup>
  <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
</PropertyGroup>

<PropertyGroup>
  <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
</PropertyGroup>
XML

O TFM ile proje birLinuxkonteynerinden kullanılamaz. ASP.NET dağıtımları için standartLinuxtabanlı görüntüsü olan mcr.microsoft.com/dotnet/aspnet:8.0'a dayanan birDockergörüntüsü, WinRT çalışma zamanına sahip değildir. Windows.Media.Ocr türlerini, Windows eklemesi olmayan net8.0'i hedefleyen bir projede referans alma girişimi derleme hatalarına yol açar, çalışma zamanı hatalarına değil. Kilitlenme, derleme zamanında uygulanır.

OCR gereksinimleri, bir mikro hizmetler mimarisi içinde Linux'ta çalışan OCR çalışanı veya çapraz platformDockergörüntüleri üreten bir CI/CD hattı içinde ortaya çıktığında, Windows.Media.Ocr değerlendirilmesi bir seçenek değildir — ilk tepe öncesinde elenir.

IronOCR Yaklaşımı

IronOCR, platforma özgü TFMs olmadan net6.0, net7.0, net8.0 ve net9.0'yi hedef alır. Aynı NuGet paketi ve aynı uygulama ikili dosyası, Windows,Linuxve macOS'ta çalışır. IronOCR'yi Docker'a dağıtmak içinLinuxtabanlı bir görüntü üzerinde apt-get satırına ihtiyaç vardır, başka bir şeye değil:

FROM mcr.microsoft.com/dotnet/aspnet:8.0
#Linuxdependency for System.Drawing
RUN apt-get update && apt-get install -y libgdiplus

COPY --from=build /app/publish /app
WORKDIR /app
ENTRYPOINT ["dotnet", "YourApp.dll"]

Uygulama kodu, Windows veLinuxdağıtımları arasında değişmez:

// Same code — Windows, Linux, macOS, Docker, AWS Lambda
//Hayırplatform TFM, no WinRT, no conditional compilation
using IronOcr;

IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
var text = new IronTesseract().Read("document.jpg").Text;
// Same code — Windows, Linux, macOS, Docker, AWS Lambda
//Hayırplatform TFM, no WinRT, no conditional compilation
using IronOcr;

IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";
var text = new IronTesseract().Read("document.jpg").Text;
Imports IronOcr

IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim text As String = New IronTesseract().Read("document.jpg").Text
$vbLabelText   $csharpLabel

IronOCR, AWS Lambda, Azure Functions on Linux üzerinde çalışır ve Linux sunucular direkt kod değişikliği olmadan. Dağıtım hedefi bir yapılandırma endişesidir, mimari bir kısıtlama değil.

Dil Desteği: OS Bağımlılığı ve Paketlenmiş Paketler

Windows.Media.Ocr, tamamen ana makineye dil kullanılabilirliğini devreder. Uygulamanızın tanıyabileceği dil seti, kullanıcı veya bir BT yöneticisi tarafından bu özel Windows yüklemesine hangi dil paketlerinin yüklendiği ile belirlenir. Bu, kodunuzla hiçbir ilgisi olmayan bir tür üretim hatası yaratır.

Windows.Media.Ocr Yaklaşımı

İstenen dil yüklü değilse, OcrEngine.TryCreateFromLanguage null döndürür. Hiçbir OCR-destekli dil paketi yoksa, TryCreateFromUserProfileLanguages null döndürür. Her iki yolun da null işlemi gereklidir ve hiçbiri zarif bir kurtarma yolu sunmaz — koddan bir dil yüklemek veya uygulama ile birini paketlemek için bir yol yoktur:

// Windows.Media.Ocr: language availability is a runtime unknown
// Returns null if the language pack is not installed on this machine

var engine = OcrEngine.TryCreateFromLanguage(
    new Windows.Globalization.Language("fr-FR"));

if (engine == null)
{
    // French OCR is simply unavailable — no recovery path
    // User must go to Windows Settings > Language to install French
    throw new InvalidOperationException(
        "French OCR unavailable. Install the French language pack in Windows Settings.");
}

var result = await engine.RecognizeAsync(bitmap);
// Windows.Media.Ocr: language availability is a runtime unknown
// Returns null if the language pack is not installed on this machine

var engine = OcrEngine.TryCreateFromLanguage(
    new Windows.Globalization.Language("fr-FR"));

if (engine == null)
{
    // French OCR is simply unavailable — no recovery path
    // User must go to Windows Settings > Language to install French
    throw new InvalidOperationException(
        "French OCR unavailable. Install the French language pack in Windows Settings.");
}

var result = await engine.RecognizeAsync(bitmap);
Imports Windows.Globalization
Imports Windows.Media.Ocr

' Windows.Media.Ocr: language availability is a runtime unknown
' Returns Nothing if the language pack is not installed on this machine

Dim engine = OcrEngine.TryCreateFromLanguage(New Language("fr-FR"))

If engine Is Nothing Then
    ' French OCR is simply unavailable — no recovery path
    ' User must go to Windows Settings > Language to install French
    Throw New InvalidOperationException("French OCR unavailable. Install the French language pack in Windows Settings.")
End If

Dim result = Await engine.RecognizeAsync(bitmap)
$vbLabelText   $csharpLabel

Windows.Media.Ocr ile çok dilli bir belge işleme uygulamasını dağıtmak, dağıtım hedefindeki her makine arasında Windows dil paketi kurulumunu koordine etmeyi gerektirir. Grup Politikası tarafından yönetilen bir paylaşılan sunucuda veya minimal OS ayak izine sahip bulut VM'lerinde bu, geliştiricinin kontrolünde değildir.

IronOCR Yaklaşımı

IronOCR, dil modellerini uygulama ikili dosyası ile birlikte dağıtılan özel NuGet paketleri olarak gönderir. Dil verileri, yapım eseri ile birlikte gider, OS yapılandırmasıyla değil. 125'ten fazla dil desteği bir dotnet add package işlemidir.

dotnet add package IronOcr.Languages.French, IronOcr.Languages.German, IronOcr.Languages.Arabic, IronOcr.Languages.ChineseSimplified
// IronOCR: language availability is a deploy-time guarantee, not a runtime unknown
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;
ocr.AddSecondaryLanguage(OcrLanguage.German);

// Works on any machine, any OS, zero OS configuration required
var result = ocr.Read("multilingual-document.jpg");
Console.WriteLine(result.Text);
// IronOCR: language availability is a deploy-time guarantee, not a runtime unknown
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;
ocr.AddSecondaryLanguage(OcrLanguage.German);

// Works on any machine, any OS, zero OS configuration required
var result = ocr.Read("multilingual-document.jpg");
Console.WriteLine(result.Text);
Imports IronOcr

' IronOCR: language availability is a deploy-time guarantee, not a runtime unknown
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.French
ocr.AddSecondaryLanguage(OcrLanguage.German)

' Works on any machine, any OS, zero OS configuration required
Dim result = ocr.Read("multilingual-document.jpg")
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

tam dil kataloğu, Latin, CJK, Arapça, İbranice, Devanagari, Kiril alfabesi ve matematiksel notasyon dahil olmak üzere özel setleri kapsar. Her dil paketi,IronOCR paketi sürümüyle sabitlenir, böylece üretim üzerindeki dil modeli, yerel olarak test edilen modelle eşleşir.

Ön İşleme Yokluğu

Düşük kaliteli taramalar — biraz döndürülmüş sayfalar, speckle gürültülü fotokopi metni, off-white kağıda solmuş mürekkep — herhangi bir motordan gelen OCR doğruluğunu bozar. Ön işleme, tanıma çalışmadan önce bu kusurları düzeltir. Windows.Media.Ocr, herhangi bir türde ön işleme tabakası sağlamaz.

Windows.Media.Ocr Yaklaşımı

API bir SoftwareBitmap kabul eder ve metin döndürür. Bu iki nokta arasında görüntü kalitesiyle ne olduğu yapılandırılamaz. Sub-optimal girdide doğruluğu artırması gereken geliştiriciler, SoftwareBitmap'i oluşturmadan önce, Windows Imaging Component API'larını kullanarak elle ön işleme uygulamalıdır. Bu, kendi bakım yüküne sahip ayrı bir kod tabanıdır ve OCR API'sinin kendisinin aynı nedeni için Windows'a özgü olarak kalır:

// Windows.Media.Ocr: no preprocessing — what you pass is what gets recognized
// Skewed, noisy, or low-resolution images degrade accuracy with no remedy
// Manual preprocessing via separate Windows Imaging APIs is the only option

var bitmap = await decoder.GetSoftwareBitmapAsync();
// bitmap goes directly to recognition with no quality improvement
var result = await engine.RecognizeAsync(bitmap);
// Windows.Media.Ocr: no preprocessing — what you pass is what gets recognized
// Skewed, noisy, or low-resolution images degrade accuracy with no remedy
// Manual preprocessing via separate Windows Imaging APIs is the only option

var bitmap = await decoder.GetSoftwareBitmapAsync();
// bitmap goes directly to recognition with no quality improvement
var result = await engine.RecognizeAsync(bitmap);
Imports System.Threading.Tasks

' Windows.Media.Ocr: no preprocessing — what you pass is what gets recognized
' Skewed, noisy, or low-resolution images degrade accuracy with no remedy
' Manual preprocessing via separate Windows Imaging APIs is the only option

Dim bitmap = Await decoder.GetSoftwareBitmapAsync()
' bitmap goes directly to recognition with no quality improvement
Dim result = Await engine.RecognizeAsync(bitmap)
$vbLabelText   $csharpLabel

Standart, temiz belge taramaları için (kontrollü tarama ortamı, tutarlı aydınlatma, minimum 300 DPI, doğru yönlendirme), bu sınırlama yönetilebilir. Mobil telefon kameralarından, otomatik besleme yanlış hizalı flatbed tarayıcılardan, fakslanmış belgelerden veya fotokopi materyallerinden görüntüler alan belge işleme hatları için, bu ya sıfırdan bir ön işleme tabakası oluşturmayı ya da doğruluk bozulmasını kabul etmeyi ifade eder.

IronOCR Yaklaşımı

IronOCR'nin OcrInput sınıfı, sırayla uygulanan bireysel filtre yöntemleri içeren bir ön işleme hattı sağlar. Görüntü kalitesi düzeltme filtreleri, üretim belge işleme sırasında en yaygın doğruluk problemlerini ele alır:

// IronOCR: explicit preprocessing pipeline
// Each filter targets a specific quality defect
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

input.Deskew();              // Correct page rotation up to ~40 degrees
input.DeNoise();             // Remove scanner speckle and compression artifacts
input.Contrast();            // Boost contrast on faded or washed-out text
input.Binarize();            // Convert to black/white with optimal threshold
input.EnhanceResolution(300); // Scale image to 300 DPI for recognition

var result = new IronTesseract().Read(input);
Console.WriteLine($"Confidence: {result.Confidence}%");
// IronOCR: explicit preprocessing pipeline
// Each filter targets a specific quality defect
using var input = new OcrInput();
input.LoadImage("low-quality-scan.jpg");

input.Deskew();              // Correct page rotation up to ~40 degrees
input.DeNoise();             // Remove scanner speckle and compression artifacts
input.Contrast();            // Boost contrast on faded or washed-out text
input.Binarize();            // Convert to black/white with optimal threshold
input.EnhanceResolution(300); // Scale image to 300 DPI for recognition

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

' IronOCR: explicit preprocessing pipeline
' Each filter targets a specific quality defect
Using input As New OcrInput()
    input.LoadImage("low-quality-scan.jpg")

    input.Deskew()              ' Correct page rotation up to ~40 degrees
    input.DeNoise()             ' Remove scanner speckle and compression artifacts
    input.Contrast()            ' Boost contrast on faded or washed-out text
    input.Binarize()            ' Convert to black/white with optimal threshold
    input.EnhanceResolution(300) ' Scale image to 300 DPI for recognition

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

Yaygın durumlar için,IronOCR doğrudan bir dosya yolu üzerinde Read çağrıldığında otomatik ön işleme uygular — motor kalite sorunlarını algılar ve açık filtre yapılandırması olmadan bunları düzeltir. Görüntü filtreleri öğreticisi tüm filtre setini kapsar ve Sharpen, Dilate, Erode, Invert ve özelleşmiş senaryolar için ToGrayScale içerir. Renk düzeltme filtreleri ve döndürme düzeltmesi, standart olmayan renk profilleri veya çok açılı döndürme olan belgeler için hattı daha da genişletir.

PDF Desteği Yokluğu

PDF, kurumsal ortamlarda en yaygın belge formatıdır. Sözleşmeler, faturalar, taranmış arşivler ve hükümet formları PDF olarak gelir. Windows.Media.Ocr'nin bir PDF konsepti yoktur — yalnızca görüntü verilerini kabul eder. PDF belgesinin OCR yapılması, ayrı bir PDF işleme kütüphanesi, sayfa bazında rasterizasyon ve sonuçların manuel olarak birleştirilmesini gerektirir.

Windows.Media.Ocr Yaklaşımı

API içerisinde bir PDF yolu yoktur. Windows.Media.Ocr ile taranmış bir PDF'yi OCR ile işlemek için, geliştirici her sayfayı ayrı bir PDF işleme kütüphanesi (Windows'un içine dahil olmayan bir kütüphane) kullanarak bir SoftwareBitmap'ye işlemek, sayfalarda döngü yapmak, her sayfa için RecognizeAsync çağrısı yapmak ve sonuçları elle birleştirmek zorundadır. O işleme kütüphanesinin kendisi, ek lisanslama ve dağıtım hususları taşır. Windows.Media.Ocr kodu, toplam uygulamanın daha küçük bir parçasıdır:

// Windows.Media.Ocr: no PDF support
// Requires external PDF renderer to rasterize pages before OCR
// Conceptual pattern — a PDF rendering library is not provided by Windows APIs

// Step 1: Use external PDF library to render page to bitmap (not shown)
// Step 2: Pass rendered bitmap to Windows OCR
// var bitmap = RenderPdfPageToBitmap(pdfPath, pageIndex); // external library required

var engine = OcrEngine.TryCreateFromUserProfileLanguages();
if (engine == null)
    throw new Exception("No OCR language available");

// Step 3: Recognize the rasterized page
// var result = await engine.RecognizeAsync(bitmap);
// Step 4: Collect and concatenate results across all pages manually
// Windows.Media.Ocr: no PDF support
// Requires external PDF renderer to rasterize pages before OCR
// Conceptual pattern — a PDF rendering library is not provided by Windows APIs

// Step 1: Use external PDF library to render page to bitmap (not shown)
// Step 2: Pass rendered bitmap to Windows OCR
// var bitmap = RenderPdfPageToBitmap(pdfPath, pageIndex); // external library required

var engine = OcrEngine.TryCreateFromUserProfileLanguages();
if (engine == null)
    throw new Exception("No OCR language available");

// Step 3: Recognize the rasterized page
// var result = await engine.RecognizeAsync(bitmap);
// Step 4: Collect and concatenate results across all pages manually
' Windows.Media.Ocr: no PDF support
' Requires external PDF renderer to rasterize pages before OCR
' Conceptual pattern — a PDF rendering library is not provided by Windows APIs

' Step 1: Use external PDF library to render page to bitmap (not shown)
' Step 2: Pass rendered bitmap to Windows OCR
' Dim bitmap = RenderPdfPageToBitmap(pdfPath, pageIndex) ' external library required

Dim engine = OcrEngine.TryCreateFromUserProfileLanguages()
If engine Is Nothing Then
    Throw New Exception("No OCR language available")
End If

' Step 3: Recognize the rasterized page
' Dim result = Await engine.RecognizeAsync(bitmap)
' Step 4: Collect and concatenate results across all pages manually
$vbLabelText   $csharpLabel

Dış PDF işleme adımı, 'ücretsiz ve yerleşik' bir çözüm olarak başlayan bir çözüm için bağımlılık, ayrı bir öğrenme eğrisi ve ek bir hata yüzeyini tek başına ekler.

IronOCR Yaklaşımı

IronOCR, PDF'leri yerel olarak okur. Dış işleyici yok, rasterizasyon adımı yok, elle sayfa birleştirme yok. Aynı IronTesseract.Read yöntemi, görüntü yollarını kabul ettiği gibi PDF yollarını da kabul eder. .NET'te PDF OCR, tek bir satırdır:

// IronOCR: native PDF support — no external renderer needed
var text = new IronTesseract().Read("scanned-document.pdf").Text;

// Password-protected PDFs
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);

// Aranabilir PDFoutput: make a scanned PDF text-searchable
var ocrResult = new IronTesseract().Read("scanned-archive.pdf");
ocrResult.SaveAsSearchablePdf("searchable-output.pdf");
// IronOCR: native PDF support — no external renderer needed
var text = new IronTesseract().Read("scanned-document.pdf").Text;

// Password-protected PDFs
using var input = new OcrInput();
input.LoadPdf("encrypted.pdf", Password: "secret");
var result = new IronTesseract().Read(input);
Console.WriteLine(result.Text);

// Aranabilir PDFoutput: make a scanned PDF text-searchable
var ocrResult = new IronTesseract().Read("scanned-archive.pdf");
ocrResult.SaveAsSearchablePdf("searchable-output.pdf");
Imports IronOcr

' IronOCR: native PDF support — no external renderer needed
Dim text As String = New IronTesseract().Read("scanned-document.pdf").Text

' Password-protected PDFs
Using input As New OcrInput()
    input.LoadPdf("encrypted.pdf", Password:="secret")
    Dim result = New IronTesseract().Read(input)
    Console.WriteLine(result.Text)
End Using

' Aranabilir PDFoutput: make a scanned PDF text-searchable
Dim ocrResult = New IronTesseract().Read("scanned-archive.pdf")
ocrResult.SaveAsSearchablePdf("searchable-output.pdf")
$vbLabelText   $csharpLabel

Aranabilir PDF özelliği, orijinal taranan görüntünün üzerine bir metin katmanı yerleştirerek, görsel sadakati korurken tam metin arama ve kopyala-yapıştır imkanı sağlayan bir PDF üretir. Bu, belge yönetim sistemleri ve uyumlu arşivler için yaygın bir gerekliliktir. Windows.Media.Ocr, API katmanının herhangi birinde bu çıktıyı üretemez.

API Eşleme Başvurusu

Windows.Media.Ocr IronOCR Karşılığı
OcrEngine.TryCreateFromLanguage(lang) new IronTesseract() ile ocr.Language = OcrLanguage.X
OcrEngine.TryCreateFromUserProfileLanguages() new IronTesseract() (varsayılan dil otomatik olarak çözülmüş)
engine.RecognizeAsync(softwareBitmap) ocr.Read("image.jpg") veya ocr.Read(ocrInput)
OcrResult.Text OcrResult.Text
OcrResult.Lines OcrResult.Lines (genişletilmiş meta verilerle)
OcrLine.Text OcrResult.Lines[i].Text
OcrLine.Words OcrResult.Words (sınır kutuları + güven ile)
OcrWord.BoundingRect OcrResult.Words[i].X, .Y, .Width, .Height
BitmapDecoder.CreateAsync(stream) input.LoadImage(stream) üzerinden OcrInput
StorageFile.GetFileFromPathAsync(path) ocr.Read("path") doğrudan
Eşdeğeri yok (PDF desteklenmiyor) ocr.Read("document.pdf")
Eşdeğeri yok (PDF desteklenmiyor) input.LoadPdf("file.pdf", Password: "x")
Eşdeğeri yok (aranabilir PDF yok) result.SaveAsSearchablePdf("output.pdf")
Eşdeğeri yok (ön işleme yok) input.Deskew(), input.DeNoise(), input.Contrast()
Eşdeğeri yok (çok dillilik yok) ocr.AddSecondaryLanguage(OcrLanguage.X)
Eşdeğeri yok (güven yok) result.Confidence, word.Confidence

Takımlar Windows.Media.Ocr'dan IronOCR'ye hareket etme zamanını değerlendiriyor

Uygulama Windows Masaüstünü Aşıyor

En yaygın tetikleyici, bir Windows olmayan dağıtım hedefi getiren bir gereksinim değişikliğidir. Bir iç Windows aracı olarak hayatına başlayan bir masaüstü yardımcı programı, bir web hizmetine,Dockertabanlı bir mikro hizmetine veya bir bulut işlevine terfi eder. Bu gerçekleştiği an, Windows.Media.Ocr bir engelleyici haline gelir. OCR bileşeni, hedef platformda var olmadığından, tamamen yeniden yazılması gerektirir — bir aktarım yok, bir uyumlaştırma katmanı yok ve sorunu gideren bir koşullu derleme bayrağı yoktur.IronOCR ile önceden planlayan ekipler bu yeniden yazım ile karşılaşmaz.

Dil Gereksinimleri Yüklenen Paketleri Aşıyor

Belge işleme hatları genellikle kapsamını genişletir. İngilizce faturaları işlemek için inşa edilmiş bir sistem, Fransızca, Almanca, Arapça veya Japonca belgeleri işleme gereklilik alır. Windows.Media.Ocr ile bu dilleri desteklemek, her dağıtım hedefinin OS dil paketi kurulumunu koordine etmeyi gerektirir — geliştirici makineleri, test VM'leri, üretim sunucuları ve karışık ordular. Grup Politikası tarafından yönetilen ortamlarda veya minimal OS izine sahip bulut VM'lerinde bu koordinasyon uygulanabilir değildir. IronOCR'nin NuGet tabanlı dil paketleri, uygulama ile birlikte dağıtılır ve herhangi bir OS koordinasyonu gerektirmez.

PDF İşlem Eyhatları Kapsama Alınıyor

Orijinal gereklilik 'düz yatak tarayıcıdan görüntüleri OCR yapmak' olduğunda, Windows.Media.Ocr çalışır. Gereklilik 'arşivimizdeki taranmış PDF'lerin geçmişini de işleyin' olarak genişlediğinde, ikinci bir kütüphane yığına gelir. O kütüphane ek bir bağımlılıktır, ek bir lisanslama hususu ve ek bir hata yüzeyidir. Hem görüntü OCR hem de PDF OCR ihtiyacı olan takımlar, en başından iki kütüphaneli mimariyi ortadan kaldıran IronOCR'yi buluyor.

Gerçek Dünya Girdisinde Doğruluk Azalıyor

Kontrollü tarama ortamları temiz görüntüler üretir. Gerçek dünya girdisi — mobil telefonlarla çekilmiş fotoğraflar, hafif eğik düz yatak taranması, daha eski fakslanmış belgeler, fotokopiler — Windows.Media.Ocr'nin içinde çözüm olmayan doğruluk azaltımı üretir. Kaçırılan metinle ilgili müşteri şikayetleri geldiğinde, ekipler, atladıkları ön işleme adımının artık gerekli olduğunu keşfederler. Windows Imaging API'lerini kullanarak retrofitting hazırlık, çözümü Windows'a özgü tutan önemli bir geliştirme çabasıdır. IronOCR'nin ön işleme hattı zaten oradadır.

Sunucu Dağıtım Sorusu Ortaya Çıkıyor

Windows.Media.Ocr belgeleri API'yi istemci uygulamaları için açıkça yerleştirir. Bir sunucu bağlamında çalıştırmak — bir kullanıcının yüklediği belgeleri işleyen bir ASP.NET uygulaması, bir belge kuyruğunu tüketen bir Windows Hizmeti — Masaüstü Deneyimi yüklü birWindows Serverortamı gerektirir, bu da birLinuxkonteynerine göre daha ağır ve daha pahalı bir VM profili. Altyapı ekibi, OCR işçisinin ana maliyetini azaltmak için birLinuxörneğinde çalışabilirse diye sorduğunda, Windows.Media.Ocr ile cevap hayırdır.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

Proje Dosyası TFM Değişikliği

Windows.Media.Ocr, proje dosyasında (net8.0-windows10.0.19041.0 veya benzeri) Windows'a özgü bir TFM gerektirir. Çapraz platform hedeflerini desteklemek için bu bağımlılığı kaldırmak, TFM ekini kaldırmayı gerektirir. IronOCR, Windows'a özgü ekler olmadan net6.0, net8.0 ve net9.0'yi hedef alır. Taşınırken, projedeki başka bir WinRT API bağımlılığının Windows TFM'ye gereksinim duymadığını ve diğer Windows platform özelliklerinin (kabuk entegrasyonu, Windows bildirimleri vb.) platform kontrolörlerine arkasından soyutlanması gerektiğini doğrulayın.

İsenkronize'den Senkronize Göç

Windows.Media.Ocr tamamen asenkron — RecognizeAsync, WinRT ara yüzü aracılığıyla Task<OcrResult> ile eşleşen IAsyncOperation<OcrResult> döndürür.IronOCR hem senkron hem de asenkron yollar sağlar. Senkron ocr.Read("file.jpg") doğrudan çok adımlı await zincirini değiştirir. Arka plan hizmeti veya Görev tabanlı bir hattan içinde OCR çağrısının oturduğu sunucu uygulamaları için, asenkron yol da mevcuttur. Her iki şekilde de, 6+ asenkron adımdan 1 çağrıya geçiş basitse:

// Before: Windows.Media.Ocr — 6+ await operations
var file = await StorageFile.GetFileFromPathAsync(imagePath);
using var stream = await file.OpenAsync(FileAccessMode.Read);
var decoder = await BitmapDecoder.CreateAsync(stream);
var bitmap = await decoder.GetSoftwareBitmapAsync();
var engine = OcrEngine.TryCreateFromUserProfileLanguages();
var winResult = await engine.RecognizeAsync(bitmap);
string text = winResult.Text;

// After:IronOCR— 1 call, same result, any platform
string text = new IronTesseract().Read(imagePath).Text;
// Before: Windows.Media.Ocr — 6+ await operations
var file = await StorageFile.GetFileFromPathAsync(imagePath);
using var stream = await file.OpenAsync(FileAccessMode.Read);
var decoder = await BitmapDecoder.CreateAsync(stream);
var bitmap = await decoder.GetSoftwareBitmapAsync();
var engine = OcrEngine.TryCreateFromUserProfileLanguages();
var winResult = await engine.RecognizeAsync(bitmap);
string text = winResult.Text;

// After:IronOCR— 1 call, same result, any platform
string text = new IronTesseract().Read(imagePath).Text;
Imports Windows.Storage
Imports Windows.Graphics.Imaging
Imports Windows.Media.Ocr

' Before: Windows.Media.Ocr — 6+ await operations
Dim file As StorageFile = Await StorageFile.GetFileFromPathAsync(imagePath)
Using stream = Await file.OpenAsync(FileAccessMode.Read)
    Dim decoder As BitmapDecoder = Await BitmapDecoder.CreateAsync(stream)
    Dim bitmap = Await decoder.GetSoftwareBitmapAsync()
    Dim engine = OcrEngine.TryCreateFromUserProfileLanguages()
    Dim winResult = Await engine.RecognizeAsync(bitmap)
    Dim text As String = winResult.Text
End Using

' After: IronOCR— 1 call, same result, any platform
Dim text As String = New IronTesseract().Read(imagePath).Text
$vbLabelText   $csharpLabel

Dil Paketi İkamesi

Daha önce OcrEngine.TryCreateFromLanguage(new Windows.Globalization.Language("fr-FR")) üzerinden çözülmüş olan her dil için, ilgili IronOCR dil paketini yükleyin ve ocr.Language = OcrLanguage.French ayarlayın. IronOCR dil kataloğu, mevcut 125+ paketleri listeler. Dil kodları, BCP-47 etiketlerinden OcrLanguage enumuna doğrudan eşlemektedir.

Null Motor İşleme Çıkarma

Windows.Media.Ocr, her motor oluşturma çağrısını null kontrol etmeyi gerektirir. IronOCR, yapılandırma veya başlatma hatalarında null döndürmek yerine yapılandırılmış istisnalar oluşturur. Null kontrolü koruma deyimlerini kaldırın ve gerekli yerlerde standart istisna işleme ile değiştirin. Sonuç, "sessizce kullanılabilir olmayan dil" hata modu olmayan daha temiz bir çağrı noktasıdır.

Ek IronOCR Yetenekleri

Windows.Media.Ocr işlevselliğini doğrudan değiştiren özelliklerin ötesinde, IronOCR, Windows.Media.Ocr'un eşdeğeri olmayan yetenekleri de kapsar:

  • Taralı belge işleme — TIFF ve çok sayfalı PDF girdileri dahil olmak üzere çok sayfalı tarama arşivleri için özel olarak tasarlanmış
  • Tablo ayıklama — fatura satır kalemleri, rapor ızgaraları ve form matrisleri için dokümanlar içindeki tablosal verilerin yapılandırılmış algılanması
  • Özelleşmiş belge türleri — pasaport MRZ bölgeleri, MICR çek satırları, plaka ve el yazısı metin için özel işleme yolları
  • İlerleme takibi — toplu işlemler ilerlemeyi olaylar üzerinden rapor eder, uygulama arayüzlerinde ilerleme çubukları ve işlem hızının izlenmesini sağlar

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

IronOCR, platforma özgü ekler olmadan standart TFM'lerde .NET 6, .NET 7, .NET 8 ve .NET 9'u destekler, ayrıca eski uygulama desteği için .NET Framework 4.6.2'den 4.8'e kadar destek sunar. Kütüphane, .NET yayın döngüsünü takip eden düzenli güncellemeler alır ve 2026 için yol haritasında .NET 10 desteği bulunmaktadır. Windows.Media.Ocr, .NET 5'ten itibaren WinRT ara yüzünü destekleyen her .NET sürümünde mevcuttur, ancak Windows TFM gereksinimi, onun uygulanabilirliğini yalnızca Windows'a hedeflenen projelerle sınırlı tutar. .NET'in platformlar arası hikayesi olgunlaştıkça — daha fazla takımLinuxkapları ve bulut işlevlerini birinci sınıf dağıtım hedefleri olarak hedef aldıkça — Windows.Media.Ocr'un TFM kısıtlaması, küçük bir açıklamadan ziyade daha belirgin bir mimari yük olmaya başlar.

Sonuç

Windows.Media.Ocr, belirli bir ve meşru bir nişe sahiptir: 0 çapraz platform hedefi, temel görüntü OCR ihtiyaçları ve 0 $ sıkı bütçe kısıtlaması olan birWindows 10/11masaüstü uygulaması. Bu niş içinde çalışır. O nişin dışında — dağıtım hedefi birLinuxkonteyneri, bir bulut işlevi, birden fazla dil gereksinimi olan bir sunucu veya PDF'leri işleyen bir belge hattı olduğunda — API hedef platformda yoktur ve kodun değiştirilmesi gerekir.

Windows.Media.Ocr'un sınırlamalarının daha derin bir sorunu, yapısal olmaları ve rastlantısal olmamalarıdır. Platform bağımlılığı kapatılacak bir yapılandırma bayrağı değildir; API'nin bağlı olduğu WinRT çalışma zamanına yerleşmiştir. Dil kullanılabilirliği, derleme zamanında dahil edilecek bir paket değildir; işletim sistemi yöneticilerine devredilir. PDF desteği, bir NuGet paketi ile eklenecek eksik bir özellik değildir; API yüzeyinden tamamen yoktur. Her sınırlama, onu telafi etmek için ayrı bir sistem gerektirir ve her telafi edici sistem, platforma özgü bağımlılıkları yeniden sunar.

IronOCR, platform, dil, ön işleme ve PDF olmak üzere dört kısıtlamanın tümünü tek bir paket içinde ele alır. $999 giriş fiyatı $0 değildir ve kontrollü girdi ve yalnızca İngilizce belgeler için yalnızca Windows'a özel bir masaüstü yardımcı programı için Windows.Media.Ocr geçerli bir seçimdir. Daha geniş gereksinimleri olan herhangi bir proje için, Windows.Media.Ocr'un kısıtlamalarına etrafında bir yapı oluşturmanın maliyeti, projenin ilk üretim dağıtımına ulaşmadan önce IronOCR lisans maliyetine geliştirici saatleri açısından aşabilir.

Pratik test basittir: dağıtım hedefi bir gün Linux,Dockerveya bir bulut işlevi olabilir ve giriş belgeleri bir gün PDF olabilir veya varsayılan işletim sistemi paketinin ötesindeki dillerde gelebilir, Windows.Media.Ocr yanlış temeldir. Bu proje ortasında keşfetmek, başlangıçta doğru aracı seçmekten çok daha pahalıdır.IronOCR özellik setini belirli gereksinimlerinize karşı değerlendirerek her iki yöne taahhütte bulunmadan önce bu kararı vermenin en verimli yolu budur.

Lütfen dikkate alınTesseract ve Windows Media OCR, kendi sahiplerinin tescilli markalarıdır. Bu site, Google veya Microsoft 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.

Sıkça Sorulan Sorular

Windows.Media.Ocr nedir?

Windows.Media.Ocr, geliştiriciler ve işletmeler tarafından görüntü ve belgelerden metin çıkarmak için kullanılan bir OCR çözümüdür. .NET uygulama geliştirmesinde IronOCR ile birlikte değerlendirilmiştir.

IronOCR, .NET geliştiricileri için Windows.Media.Ocr ile nasıl karşılaştırılır?

IronOCR, IronTesseract'ı çekirdek motor olarak kullanan bir NuGet yerel .NET OCR kütüphanesidir. Windows.Media.Ocr ile karşılaştırıldığında, daha basit bir dağıtım (SDK yükleyicileri yok), sabit oranlı fiyatlandırma ve COM etkileşimi veya bulut bağımlılığı olmadan temiz bir C# API sunar.

IronOCR'un Windows.Media.Ocr'dan daha kolay kurulumu var mı?

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.

Windows.Media.Ocr ile IronOCR arasında hangi doğruluk farkları vardır?

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.

Windows.Media.Ocr 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.

IronOCR, Windows.Media.Ocr'dan farklı olarak Docker ve kapsayıcılı dağıtımlar için uygun mu?

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.

IronOCR'u, Windows.Media.Ocr ile kıyaslandığında 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.

Windows.Media.Ocr'dan IronOCR'a geçiş kolay mı?

Windows.Media.Ocr'dan IronOCR'a geçiş genellikle başlangıç dizilerini IronTesseract örneklemesiyle 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