C#'da OCR İşleme için Giriş Görüntüleri Nasıl Kullanılır

C#'ta Akışlardan Nasıl Okuma Yapılır için OCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR, dosyaları diske kaydetmeden verimli OCR işleme imkanı sağlayarak, akışları OcrInput veya OcrImageInput yapılandırıcılarına geçirerek C#'ta görüntü verilerini doğrudan akışlardan okur.

Bir akış, okunabilen veya yazılabilen kesintisiz bir ikili bilgi akışıdır. Programlamada, akışlar hafızaya sığmayacak kadar büyük verileri, yönetilebilir parçalara ayırarak etkili bir şekilde işler.

IronOCR'nin içe aktarma yöntemleri, doğrudan görüntü veri akışlarını kabul eder. Akış verilerini, gerekli tüm adımları otomatik olarak yöneten bir ithalat yöntemine aktarın. Gelişmiş senaryolar için çeşitli giriş formatlarını hazırlamak üzere kapsamlı seçenekler sunan OcrInput Sınıfını keşfedin.

Hızlı Başlangıç: OCR Girdisi için Bir Akış Saniyeler İçinde Kullanın

Bu örnek, dosya yollarını atlayarak ve tanınan metni minimum kodla alarak IronOCR'a bir System.IO.Stream besleyerek anında OCR yapmayı gösterir.

  1. NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronOcr yükleyin

    PM > Install-Package IronOcr
  2. Bu kod parçasını kopyalayıp çalıştırın.

    using var input = new IronOcr.OcrInput(stream);
    
    var result = new IronOcr.IronTesseract().Read(input);
  3. Canlı ortamınızda test etmek için dağıtın

    Bugün projenizde IronOCR kullanmaya başlayın ücretsiz deneme ile

    arrow pointer


IronOCR ile Akışları Nasıl Okurum?

İlk olarak, OCR gerçekleştirmek için IronTesseract sınıfını başlatın. Resim dosyasını içe aktarmak için FromFile yöntemini kullanın. Bu AnyBitmap nesnesi, görüntü verilerini bir akışa dönüştürür. Ardından, using ifadesini kullanarak, GetStream yöntemi ile resim akışını geçirerek OcrImageInput nesnesini oluşturun. Son olarak, OCR gerçekleştirmek için Read yöntemini kullanın.


:path=/static-assets/ocr/content-code-examples/how-to/input-streams-read-streams.cs

using IronOcr;
using IronSoftware.Drawing;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Read image file to AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

// Import image stream
using var imageInput = new OcrImageInput(anyBitmap.GetStream());
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports IronSoftware.Drawing

' Instantiate IronTesseract
Dim ocrTesseract As New IronTesseract()

' Read image file to AnyBitmap
Dim anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")

' Import image stream
Using imageInput As New OcrImageInput(anyBitmap.GetStream())
    ' Perform OCR
    Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)
End Using
$vbLabelText   $csharpLabel

Akar tabanlı OCR, görüntü yüklemeleri alan, veritabanlarından görüntü işleyen veya diske yazılmaması gereken geçici verileri işleyen web uygulamaları için faydalıdır. Akış yaklaşımı, System.Drawing nesneleri ve diğer görüntü manipülasyon kütüphaneleri ile sorunsuz entegre olur.

Neden OCR için Akışlar Kullanılır?

Akışlarla çalışmak, .NET geliştiricileri için çeşitli avantajlar sağlar:

  1. Bellek Verimliliği: Verileri belleğe tüm dosyaları yüklemek yerine parçalara ayırarak işleyin

  2. Güvenlik: Hassas belgeleri diskte geçici dosyalar oluşturmadan işleyin

  3. Performans: Dosya sistemi işlemlerinden gelen G/Ç yükünü ortadan kaldırın

  4. Esneklik: Web yüklemeleri, veritabanı BLOB'ları ve bellek içi dönüşümlerle çalışın

Birden fazla sayfalı belgeleri işlemek veya PDF akışlarını yönetmek için, IronOCR aynı basit API'yi korurken güçlü bir performans sunar. Taranmış belgelerle çalışırken, demet işleme ile taranmış belgeleri okumak için IronOCR'un yeteneklerinden de faydalanabilirsiniz.

Stream OCR için Tarama Bölgesini Nasıl Belirleyebilirim?

Büyük resimlerde performansı artırmak ve belirli bölgelerden özel okumalar elde etmek için CropRectangle sınıfını kullanın. OcrImageInput yapılandırıcısı ikinci parametre olarak bir CropRectangle nesnesini kabul eder, böylece görüntü belgesinin hangi bölgesinin okunması gerektiğini belirtebilirsiniz. Aşağıdaki kod örneği, yalnızca bölüm numarası ve başlık bölgesinin okunması gerektiğini belirtir.


:path=/static-assets/ocr/content-code-examples/how-to/input-streams-read-specific-region.cs

using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Read image file to AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");

// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);

// Add image
using var imageInput = new OcrImageInput(anyBitmap.GetStream(), ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output the result to console
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate IronTesseract
Dim ocrTesseract As New IronTesseract()

' Read image file to AnyBitmap
Dim anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")

' Specify crop region
Dim scanRegion As New Rectangle(800, 200, 900, 400)

' Add image
Using imageInput As New OcrImageInput(anyBitmap.GetStream(), ContentArea:=scanRegion)
    ' Perform OCR
    Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)

    ' Output the result to console
    Console.WriteLine(ocrResult.Text)
End Using
$vbLabelText   $csharpLabel

Bu teknik, özellikle bir görüntünün belirli bir bölgesini OCR yapmak gerektiğinde veya metnin tahmin edilebilir konumlarda göründüğü yapılandırılmış belgelerle çalışırken özellikle yararlıdır. Daha karmaşık senaryolar için tablolar veya yapılandırılmış verileri içeren belgelerdeki tablo okumayı keşfedin.

Tarama Bölgesi Çıktıda Nasıl Görünür?

OCR demo: Photo Viewer'da belgede 'Bölüm Sekiz Ölüm Günü Partisi' metni debug konsolunda gösteriliyor

Hangi İleri Akış İşleme Tekniklerini Kullanabilirim?

Akışlarla çalışırken, tanıma doğruluğunu artırmak için ek IronOCR özelliklerinden yararlanın. Görüntü optimizasyon filtreleri, OCR işleme öncesinde akış verilerine doğrudan uygulanabilir:


using IronOcr;

using IronSoftware.Drawing;

using System.IO;

// Process stream with filters

public string ProcessStreamWithFilters(Stream imageStream)

{

    IronTesseract ocrTesseract = new IronTesseract();

    // Configure for better accuracy

    ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";

    ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

    using var input = new OcrImageInput(imageStream);

    // Apply preprocessing filters

    input.Deskew();

    input.DeNoise();

    input.Sharpen();

    var result = ocrTesseract.Read(input);

    return result.Text;

}

using IronOcr;

using IronSoftware.Drawing;

using System.IO;

// Process stream with filters

public string ProcessStreamWithFilters(Stream imageStream)

{

    IronTesseract ocrTesseract = new IronTesseract();

    // Configure for better accuracy

    ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\\";

    ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

    using var input = new OcrImageInput(imageStream);

    // Apply preprocessing filters

    input.Deskew();

    input.DeNoise();

    input.Sharpen();

    var result = ocrTesseract.Read(input);

    return result.Text;

}
Imports IronOcr
Imports IronSoftware.Drawing
Imports System.IO

' Process stream with filters
Public Function ProcessStreamWithFilters(imageStream As Stream) As String
    Dim ocrTesseract As New IronTesseract()

    ' Configure for better accuracy
    ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\"
    ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd

    Using input As New OcrImageInput(imageStream)
        ' Apply preprocessing filters
        input.Deskew()
        input.DeNoise()
        input.Sharpen()

        Dim result = ocrTesseract.Read(input)
        Return result.Text
    End Using
End Function
$vbLabelText   $csharpLabel

Gelişmiş görüntü işleme için, belirli belge türleriniz için en iyi ön işleme adımlarını otomatik olarak belirlemek amacıyla Filtre Sihirbazı'nı kullanmayı düşünebilirsiniz. Ayrıca, akışlarınızdaki döndürülmüş veya eğik görüntülerle çalışırken, görüntü yönünü düzeltme işlevi OCR doğruluğunu önemli ölçüde artırabilir.

Farklı Akış Kaynaklarıyla Nasıl Çalışırım?

IronOCR çeşitli akış kaynaklarını sorunsuz bir şekilde yönetir. Bir web formundan yüklemeleri işlerken, bir veritabanından görüntü alırken veya formatlar arasında dönüştürme yaparken, API tutarlı kalır:


// From MemoryStream

byte[] imageBytes = GetImageBytesFromDatabase();

using var memoryStream = new MemoryStream(imageBytes);

using var input = new OcrImageInput(memoryStream);

// From FileStream

using var fileStream = new FileStream("document.png", FileMode.Open);

using var input2 = new OcrImageInput(fileStream);

// From network stream

using var webClient = new WebClient();

using var networkStream = webClient.OpenRead("https://example.com/image.jpg");

using var input3 = new OcrImageInput(networkStream);

// From MemoryStream

byte[] imageBytes = GetImageBytesFromDatabase();

using var memoryStream = new MemoryStream(imageBytes);

using var input = new OcrImageInput(memoryStream);

// From FileStream

using var fileStream = new FileStream("document.png", FileMode.Open);

using var input2 = new OcrImageInput(fileStream);

// From network stream

using var webClient = new WebClient();

using var networkStream = webClient.OpenRead("https://example.com/image.jpg");

using var input3 = new OcrImageInput(networkStream);
Imports System.IO
Imports System.Net

' From MemoryStream

Dim imageBytes As Byte() = GetImageBytesFromDatabase()

Using memoryStream As New MemoryStream(imageBytes)
    Using input As New OcrImageInput(memoryStream)
        ' Process input
    End Using
End Using

' From FileStream

Using fileStream As New FileStream("document.png", FileMode.Open)
    Using input2 As New OcrImageInput(fileStream)
        ' Process input2
    End Using
End Using

' From network stream

Using webClient As New WebClient()
    Using networkStream As Stream = webClient.OpenRead("https://example.com/image.jpg")
        Using input3 As New OcrImageInput(networkStream)
            ' Process input3
        End Using
    End Using
End Using
$vbLabelText   $csharpLabel

En iyi sonuçlar için, düşük çözünürlüklü akışlarla çalışırken DPI ayarlarını ayarlamayı düşünün. IronOCR, DPI algılamasını otomatik olarak gerçekleştirir ancak manuel ayar belirli kullanım durumları için doğruluğu iyileştirebilir. Çok sayfalı belgelerle çalışırken, çok sayfalı TIFF ve GIF dosyalarını akış işleme aracılığıyla kullanmayı araştırın.

Akışların OCR Sonuçlarını Nasıl Yönetirim?

Akışınız işlendikten sonra, IronOCR basit metin çıkarımının ötesine geçen zengin sonuç nesneleri sağlar. OcrResult sınıfı, tanınan metin hakkında güven puanları, konumlama ve yapı dahil ayrıntılı bilgiler içerir:


// Process stream and analyze results

using var input = new OcrImageInput(stream);

var result = new IronTesseract().Read(input);

// Access detailed results

foreach (var page in result.Pages)

{

    Console.WriteLine($"Page {page.PageNumber} Confidence: {page.Confidence}%");

    foreach (var paragraph in page.Paragraphs)

    {

        Console.WriteLine($"Paragraph: {paragraph.Text}");

        Console.WriteLine($"Location: X={paragraph.X}, Y={paragraph.Y}");

    }

}

// Export results

string text = result.Text;

string searchablePdf = result.SaveAsSearchablePdf("output.pdf");

string hocrHtml = result.SaveAsHocrHtml("output.html");

// Process stream and analyze results

using var input = new OcrImageInput(stream);

var result = new IronTesseract().Read(input);

// Access detailed results

foreach (var page in result.Pages)

{

    Console.WriteLine($"Page {page.PageNumber} Confidence: {page.Confidence}%");

    foreach (var paragraph in page.Paragraphs)

    {

        Console.WriteLine($"Paragraph: {paragraph.Text}");

        Console.WriteLine($"Location: X={paragraph.X}, Y={paragraph.Y}");

    }

}

// Export results

string text = result.Text;

string searchablePdf = result.SaveAsSearchablePdf("output.pdf");

string hocrHtml = result.SaveAsHocrHtml("output.html");
Imports IronOcr

' Process stream and analyze results

Using input As New OcrImageInput(stream)

    Dim result = New IronTesseract().Read(input)

    ' Access detailed results

    For Each page In result.Pages

        Console.WriteLine($"Page {page.PageNumber} Confidence: {page.Confidence}%")

        For Each paragraph In page.Paragraphs

            Console.WriteLine($"Paragraph: {paragraph.Text}")

            Console.WriteLine($"Location: X={paragraph.X}, Y={paragraph.Y}")

        Next

    Next

    ' Export results

    Dim text As String = result.Text

    Dim searchablePdf As String = result.SaveAsSearchablePdf("output.pdf")

    Dim hocrHtml As String = result.SaveAsHocrHtml("output.html")

End Using
$vbLabelText   $csharpLabel

Sonuç nesnesi ayrıca akış girdilerinizden arama yapılabilir belge arşivleri oluşturmayı kolaylaştırarak, arama yapılabilir PDF'lere aktarım ya da hOCR HTML formatına aktarma için yöntemler sağlar. Hata ayıklama amacıyla, IronOCR'un görüntülerinizde algıladığını görselleştirmek için metinleri vurgulama özelliğini kullanabilirsiniz.

Bilmem Gereken Performans Kriterleri Nelerdir?

Birden fazla akış işlerken veya yüksek bant genişlikli OCR çözümleri uygularken, bu optimizasyon stratejilerini dikkate alın:

  1. IronTesseract Örneklerini Yeniden Kullanın: Tek bir örnek oluşturun ve birden fazla işlemde tekrar kullanın

  2. İlerleme İzleme Uygulayın: Büyük akışlarda, ilerleme izleme ile işleme durumunu takip edin

  3. Paralel İşle: IronOCR birden fazla akış için eşzamanlı işlem desteği sağlar

  4. Görsel Kalitesini Optimize Edin: Akışları en iyi çözünürlük ve netliği sağlamak için işleme alın

Maksimum performans için, hızlı OCR konfigürasyonu seçeneklerini inceleyin ve toplu işlem için çoklu işlemeyi uygulamayı düşünün. Zamana duyarlı uygulamalarla çalışırken, bekleme süresi hakkında bilgi sahibi olmak uzun süreli OCR işlemlerini etkili bir şekilde yönetmenize yardımcı olabilir.

Yaygın Akış Sorunlarını Nasıl Çözerim?

Akışlarla çalışırken, karşılaşabileceğiniz belirli zorluklar olabilir. İşte yaygın senaryolar için çözümler:

  • Akış Konumu: 0'a akış konumunu her zaman sıfırlayın ve ardından IronOCR'ya geçirin

  • İmha: Uygun kaynak temizliği sağlamak için using ifadelerini kullanın

  • Format Destegi: IronOCR, JPEG, PNG, TIFF ve BMP dahil çeşitli resim formatlarini akisaraciligiyle destekler

  • Bellek Yönetimi: Büyük akışlar için, parça parça işleme veya akış yaklaşımlarını düşünün

Karmaşık belgeler için veya standart OCR tatmin edici sonuçlar vermediğinde, bilgisayarlı görü özellikleri metni daha doğru şekilde bulmak ve çıkarmak için yardımcı olabilir. Ek olarak, düşük kaliteli akışlarla çalışırken, ön işleme teknikleri için düşük kaliteli taramaları düzeltme kılavuzuna başvurun ve tanıma oranlarını önemli ölçüde iyileştirebilirsiniz.

Akışlar ve diğer giriş yöntemleriyle çalışma hakkında daha ayrıntılı bilgi için kapsamlı nasıl yapılır kılavuzları ve kod örneklerini inceleyin.

Sıkça Sorulan Sorular

Görüntü verilerini önce diske kaydetmeden OCR'ı nasıl gerçekleştirebilirim?

IronOCR, OcrInput veya OcrImageInput kurucularına geçirerek görüntü akışlarını doğrudan işlemeye olanak tanır. Bu, web yüklemelerini, veritabanı BLOB'larını veya diske dokunmaması gereken hassas belgeleri işlemede ideal olan, geçici dosyalar oluşturmadan etkili OCR işlendiğini mümkün kılar.

OCR işleme için giriş olarak hangi tür akışlar kullanılabilir?

IronOCR, görüntü verilerini içeren herhangi bir System.IO.Stream'i kabul eder. Buna web yüklemelerinden bellek akışları, veritabanı BLOB alanlarından gelen akışlar veya görüntü manipülasyon kütüphanelerinden oluşturulan akışlar dahildir. Kütüphane, akısı OcrInput veya OcrImageInput'a geçirdiğinizde gerekli olan tüm dönüştürme adımlarını otomatik olarak işleyecektir.

C#'ta bir akış üzerinde OCR'ı uygulamanın en basit yolu nedir?

En hızlı yöntem, akışınızla bir OcrInput nesnesi oluşturmak ve ardından Read metodunu çağırmaktır: 'using var input = new IronOcr.OcrInput(stream); var result = new IronOcr.IronTesseract().Read(input);'. Bu minimal kod OCR gerçekleştirir ve tanınan metni hemen döndürür.

OCR için dosya yolları yerine akışları neden kullanmalıyım?

IronOCR ile akış tabanlı OCR, birçok avantaj sunar: veriyi parçalara ayırarak işleyerek bellek verimliliği, diskte geçici dosyalardan kaçınarak artırılmış güvenlik, dosya G/Ç yükünden kurtularak geliştirilmiş performans ve web yüklemeleri veya veritabanı BLOB'ları ile çalışırken daha fazla esneklik.

Bir görüntü akışının belirli bir alanını okumayı belirtebilir miyim?

Evet, IronOCR, akışları işlerken bir kırpma bölgesi belirterek okuma alanını tanımlamanıza olanak tanır. Bu özellik, hız ve doğruluğu artırmak için OCR'ı görüntünün belirli kısımlarına odaklamanızı sağlar.

Akış işleme diğer görüntü işleme kütüphaneleriyle nasıl entegre olur?

IronOCR'un akış yaklaşımı, System.Drawing nesneleri ve diğer .NET görüntü işleme kütüphaneleriyle sorunsuz bir şekilde entegre olur. AnyBitmap sınıfını kullanarak görüntüleri akışlara GetStream yöntemi ile dönüştürebilir, bu da OCR'u diğer görüntü işleme iş akışlarıyla birleştirmeyi kolaylaştırır.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku
İnceleyen
Jeff Fritz
Jeffrey T. Fritz
Baş Program Yöneticisi - .NET Topluluk Ekibi
Jeff, aynı zamanda .NET ve Visual Studio ekipleri için Baş Program Yöneticisi'dir. Microsoft geliştirici etkinlikleri (Microsoft Build, Microsoft Ignite, .NET Conf, Microsoft MVP Summit) için atölye çalışmaları, sunumlar yazar ve içerik planlar ve haftada iki kez yayınlanan 'Fritz ve Arkadaşları' canlı yayınının ev sahibidir.
Başlamaya Hazır mısınız?
Nuget İndirmeler 5,585,834 | Sürüm: 2026.4 just released
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronOcr
örnekleri çalıştır resminizin aranabilir metne donuşünü izleyin.