C#'ta Akışlardan Nasıl Okuma Yapılır için OCR
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.
-
NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronOcr yükleyin
PM > Install-Package IronOcr -
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); -
Canlı ortamınızda test etmek için dağıtın
Bugün projenizde IronOCR kullanmaya başlayın ücretsiz deneme ile
Minimal İş Akışı (5 adımda)
- Akışlardan okuma için bir C# kütüphanesi indirin
- Görüntü akış verilerini elde edin ve hazırlayın
- Görüntüyü içe aktarmak için
OcrImageInputyapıcısına görüntü akışını iletin Readyöntemini kullanarak OCR gerçekleştirin- Kırpma bölgesini belirterek okuma alanını tanımlayın
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
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:
-
Bellek Verimliliği: Verileri belleğe tüm dosyaları yüklemek yerine parçalara ayırarak işleyin
-
Güvenlik: Hassas belgeleri diskte geçici dosyalar oluşturmadan işleyin
-
Performans: Dosya sistemi işlemlerinden gelen G/Ç yükünü ortadan kaldırın
- 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
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?
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
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
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
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:
-
IronTesseractÖrneklerini Yeniden Kullanın: Tek bir örnek oluşturun ve birden fazla işlemde tekrar kullanın -
İlerleme İzleme Uygulayın: Büyük akışlarda, ilerleme izleme ile işleme durumunu takip edin
-
Paralel İşle:
IronOCRbirden fazla akış için eşzamanlı işlem desteği sağlar - 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ındanIronOCR'ya geçirin -
İmha: Uygun kaynak temizliği sağlamak için
usingifadelerini 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.

