C# GitHub projelerinde IronOCR ile OCR Uygulaması Nasıl Yapılır
GitHub'da OCR çözümleri aramak genellikle parçalanmış belgeler, karmaşık Tesseract yapılandırmaları ve yıllardır güncellenmemiş projeler ortaya çıkarır. Resim ve PDF'lerden güvenilir metin çıkarımı gerekli olan C# geliştiricileri için, depo ekosisteminde gezinmek, kod yazma konusunda daha iyi kullanılacak saatleri harcamalarına neden olabilir. Birçok açık kaynak optik karakter tanıma projesi, manuel ikili yönetim, tessdata dosyası indirmeleri ve platforma özgü sorun giderme gerektirir.
Bu eğitim, IronOCR adlı yönetilen bir kütüphane kullanan C# projelerinde OCR işlevselliğinin nasıl uygulanacağını gösterir ve ham Tesseract sarmalayıcılarıyla yaygın olan yapılandırma yükünü ortadan kaldırır. Belge işleme hatları oluşturulurken veya mevcut uygulamalara metin tanıma eklerken, bu kılavuz, herhangi bir OCR C# GitHub projesi için kullanılmaya hazır kod örnekleri sunar.
IronOCR ile Nasıl Başlarsınız?
IronOCR, NuGet aracılığıyla dağıtılan ve herhangi bir GitHub deposuna entegre edilmesini kolaylaştıran yönetilen bir .NET kütüphanesi sağlar. İkili ve tessdata yapılandırmasının manuel yönetimini gerektiren açık kaynak Tesseract OCR sarmalayıcılarının aksine, IronOCR bu bağımlılıkları dahili olarak yönetir ve Windows, Linux ve macOS üzerinde herhangi bir ön yükleme olmadan çalışır.
Kütüphane, geliştiricilerin klonlayıp referans alabileceği resmi örnek depolarını GitHub'da korur. Bu örnekler, görüntüden metne dönüştürme, birden fazla dil desteği ve PDF işleme gibi gerçek dünyadaki uygulamaları gösterir. Katkıda bulunanlar, klonladıktan hemen sonra ek bir yapılandırma yapmadan özellikleri test edebilirler.
Visual Studio'da başlamak için, NuGet Paket Yöneticisi üzerinden IronOCR'yi yükleyin:
Install-Package IronOcr
Install-Package IronOcr

Kurulduktan sonra, bu tek paket, OCR işlemleri için gerekli her şeyi içerir. Kütüphane, proje türleri arasında maksimum uyumluluk sağlamak için .NET Framework 4.6.2+, .NET Core ve .NET 5'ten 10'a kadar destekler.
Görüntü Formatlarından C#'ta Nasıl Metin Çıkarırsınız?
Aşağıdaki örnek, IronOCR'un IronTesseract sınıfını kullanarak temel metin çıkarma işlemini göstermektedir. Bu OCR motoru, PNG, JPG, JPEG, BMP, GIF ve TIFF dahil olmak üzere çeşitli görüntü formatlarını okur:
using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load and process an image
using var input = new OcrInput("document-scan.png");
// Perform OCR and retrieve results
var result = ocr.Read(input);
// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load and process an image
using var input = new OcrInput("document-scan.png");
// Perform OCR and retrieve results
var result = ocr.Read(input);
// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr
' Initialize the OCR engine
Dim ocr As New IronTesseract()
' Load and process an image
Using input As New OcrInput("document-scan.png")
' Perform OCR and retrieve results
Dim result = ocr.Read(input)
' Output the extracted text to console
Console.WriteLine($"Extracted Text:{vbCrLf}{result.Text}")
Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
IronTesseract sınıfı, optimize edilmiş Tesseract 5 uygulamasına dayanan birincil OCR motoru olarak hizmet vermektedir. Bir örnek oluşturduktan sonra, OcrInput nesnesi hedef görüntüyü disk, URL veya bayt dizisinden yükler. Read yöntemi girişi işler ve tanınan metinle birlikte tanıma doğruluğunu gösteren bir güven yüzdesini içeren bir OcrResult döner. Daha yüksek güven değerleri (%90'ın üzerinde), genellikle temiz, iyi biçimlendirilmiş kaynak belgeleri gösterir.
OcrResult nesnesi, tanınan içeriğe yapılandırılmış erişim sağlar. Düz metnin ötesinde, geliştiriciler bireysel kelimelere, satırlara, paragraflara ve karakterlere, yanı sıra bunların konumlarına ve güven puanlarına erişebilirler. Her Word, belge açıklaması veya form alanı çıkarımı gibi kesin metin konumu verisi gerektiren uygulamalar için değerli olan sınırlayıcı dikdörtgen koordinatlarını içerir.
Girdi

Çıktı

IronOCR ayrıca akışlardan ve bayt dizilerinden görüntü yüklemeyi destekler, bu da özellikle dosya yüklemeleri alan web uygulamalarında faydalıdır. Bu, OCR işlemenin yüksek verimli ortamlarda giriş-çıkış yükünü azaltarak tamamen bellek içinde gerçekleşebileceği ve geçici dosyaların diske yazılmasının gerekliliğini ortadan kaldırır.

Görüntü Ön İşleme Optik Karakter Tanıma Doğruluğunu Nasıl İyileştirir?
Tarama yapılmış belgeler sıklıkla eğik, gürültülü veya optimal olmayan çözünürlüklerde gelir. IronOCR, görüntünün OCR motoru tarafından işlenmesinden önce bu sorunları düzelten yerleşik ön işleme filtreleri içerir:
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");
// Apply preprocessing filters to enhance scan quality
input.Deskew(); // Straighten rotated images
input.DeNoise(); // Remove digital artifacts
input.EnhanceResolution(225); // Optimize DPI for OCR
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");
// Apply preprocessing filters to enhance scan quality
input.Deskew(); // Straighten rotated images
input.DeNoise(); // Remove digital artifacts
input.EnhanceResolution(225); // Optimize DPI for OCR
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput("skewed-receipt.jpg")
' Apply preprocessing filters to enhance scan quality
input.Deskew() ' Straighten rotated images
input.DeNoise() ' Remove digital artifacts
input.EnhanceResolution(225) ' Optimize DPI for OCR
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Deskew yöntemi, sayfaların tarayıcıya hafifçe yanlış yerleştirildiği yaygın durumu ele alarak 15 dereceye kadar görüntü dönüşünü otomatik olarak tespit eder ve düzeltir. DeNoise filtresi, fotoğrafı çekilmiş belgelerde veya eski taramalarda yaygın olan benekleri ve eserleri kaldırır. EnhanceResolution, düşük DPI'lı görüntüleri, optik karakter tanıma doğruluğu için ideal olan 200-300 DPI aralığına yükseltir.
Bu filtreler birlikte zincirlenebilir ve geçici dosyalar gerektirmeden tamamen bellekte çalıştırılabilir. Çoğu durumda, birden fazla ön işleme geçişi uygulamak, solmuş mürekkep, arka plan gürültüsü veya kamera bozulması gibi ciddi kalite sorunları olan belgelerde metin tanıma sonuçlarını önemli ölçüde iyileştirebilir. Gelişme, genellikle 150 DPI altına taranmış belgelerde veya düzensiz aydınlatma koşulları altında çekilmiş fotoğraflarda en belirgintir.
İlgi Alanı Kesimi Performansı Nasıl Artırır?
Görüntünün yalnızca bir kısmının ilgili metin içerdiği belgeler için, bir kırpma alanı tanımlamak, işleme süresini azaltır ve arka plan gürültüsünden kaynaklanan olası yanlış pozitifleri önler:
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
using var input = new OcrInput("invoice.png");
// Define crop region (x, y, width, height in pixels)
var cropArea = new CropRectangle(50, 100, 600, 300);
input.AddRegion(cropArea);
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
using var input = new OcrInput("invoice.png");
// Define crop region (x, y, width, height in pixels)
var cropArea = new CropRectangle(50, 100, 600, 300);
input.AddRegion(cropArea);
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Dim ocr As New IronTesseract()
Using input As New OcrInput("invoice.png")
' Define crop region (x, y, width, height in pixels)
Dim cropArea As New CropRectangle(50, 100, 600, 300)
input.AddRegion(cropArea)
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Belirli bir bölgeyi hedeflemek, özellikle metin alanlarının bilinen konumları işgal ettiği faturalar veya formlar gibi yapılandırılmış belgeleri işlerken değerlidir. Bu yaklaşım, görüntünün ne kadarının gereksiz olduğuna bağlı olarak, tam görüntü analizine kıyasla OCR işleme süresini %40-70 azaltabilir.
Barkodlar ve QR Kodlarıyla Metin Çıkarabilir misiniz?
IronOCR aynı belgede metin tanıma ve barkod taraması yapabilir. Bu çift işlevsellik, faturaları, nakliye etiketlerini ve envanter belgelerini işlerken değerlidir:
using IronOcr;
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true; // Enable barcode detection
using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);
// Access extracted text
Console.WriteLine($"Text: {result.Text}");
// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
using IronOcr;
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true; // Enable barcode detection
using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);
// Access extracted text
Console.WriteLine($"Text: {result.Text}");
// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
Imports IronOcr
Dim ocr = New IronTesseract()
ocr.Configuration.ReadBarCodes = True ' Enable barcode detection
Using input As New OcrInput("shipping-label.png")
Dim result = ocr.Read(input)
' Access extracted text
Console.WriteLine($"Text: {result.Text}")
' Access any barcodes found in the image
For Each barcode In result.Barcodes
Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}")
Next
End Using
ReadBarCodes, true olarak ayarlandığında, işleme süresini önemli ölçüde etkilemeden barkod algılama etkinleşir. Sonuçtaki Barcodes koleksiyonu, her tespit edilen barkodun değerini ve format türünü içerir. Desteklenen formatlar QR kodları, Code 128, EAN-13, UPC, Data Matrix ve PDF417'yi içerir. Bu çift yetenek, hem insan tarafından okunabilir metin hem de makine tarafından okunabilir kodlar içeren belgeleri işlerken ayrı barkod tarama kütüphanelerine olan ihtiyaçı ortadan kaldırır.
Girdi

Çıktı

Depo ve lojistik uygulamaları için, metin ve barkod çıkarımını tek bir işlemde birleştirmek, API çağrılarını azaltır ve uygulama mimarisini basitleştirir. Tek bir Read işlemi, belgelerde tanınabilir tüm verileri döner; bu veriler yazılı metin, el yazısı veya makine tarafından okunabilir kodlar olabilir. OcrResult.Barcodes özelliği, format özgü ayrıştırma mantığına gerek kalmadan sonuçları yineleyen kodu yazabilmeniz için bir tür koleksiyon sunar.
Taranan Görüntülerden Aranabilir PDFler Nasıl Oluşturursunuz?
Taranan belgeleri aranabilir PDF'lere dönüştürmek, belge yönetim sistemlerinde metin seçimi, kopyalama ve tam metin araması etkinleştirir. Bu, çeşitli giriş görüntü formatları ile çalışır:
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);
// Export as searchable PDF with invisible text layer
result.SaveAsSearchablePdf("contract-searchable.pdf");
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);
// Export as searchable PDF with invisible text layer
result.SaveAsSearchablePdf("contract-searchable.pdf");
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput("scanned-contract.tiff")
Dim result = ocr.Read(input)
' Export as searchable PDF with invisible text layer
result.SaveAsSearchablePdf("contract-searchable.pdf")
End Using
SaveAsSearchablePdf yöntemi, orijinal belgenin görünümünü koruyarak metin işlemlerinin yapılmasına olanak tanırken tanınan içeriğe uyan görünmez bir metin katmanı ekler. Bu, arşivleme ve kurumsal belge yönetim sistemleri için uygun belgeler üretir. IronOCR ayrıca sonuçları, aşağı akış sistemleriyle entegrasyon için HTML veya JSON olarak dışa aktarmayı destekler.
Çok sayfalı belgeler için, IronOCR her sayfayı ayrı ayrı işler ve çıktıyı tek bir dosyada birleştirir. Birden fazla çerçeveli TIFF dosyaları otomatik olarak işlenir, bu da taranan belge arşivlerinin toplu dönüştürülmesini basit hale getirir. Oluşan PDF, orijinal taramanın görsel düzenini korurken, gömülü metin katmanı PDF görüntüleyicisinde veya belge yönetim platformlarında her sayfayı tamamen aranabilir kılar.
IronOCR'yi Çok Dilli Uygulamalarda Nasıl Kullanırsınız?
IronOCR, İngilizce, İspanyolca, Fransızca, Almanca, Çince, Japonca, Arapça dahil olmak üzere 125+ dili destekler ve daha birçok dili kapsar. Dil paketleri, çekirdek kütüphaneyi hafif tutmak için NuGet aracılığıyla ayrı paketler olarak yüklenir:
using IronOcr;
// Install-Package IronOcr.Languages.French
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;
using var input = new OcrInput("french-document.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
// Install-Package IronOcr.Languages.French
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.French;
using var input = new OcrInput("french-document.png");
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
' Install-Package IronOcr.Languages.French
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.French
Using input As New OcrInput("french-document.png")
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
Aynı sayfada karışık diller içeren belgeler için, IronOCR birden fazla dil modelini eşzamanlı olarak yüklemeyi destekler. Bu, uluslararasılaşmış uygulamalar için ilgili olup, belgeleri dil bazında önceden sıralama gereksinimi olmadan birden fazla bölgeden gelen belgeleri işler. Her dil paketi, çekirdek kütüphane ile birlikte korunur ve aynı ön işleme ve çıktı yeteneklerini destekler.
GitHub Projelerinde OCR için En İyi Uygulamalar Nelerdir?
GitHub üzerinde OCR projelerini sürdürürken, bazı organizasyonel kararlar katkıda bulunan deneyimini ve uzun vadeli proje sağlığını artırır. Bu uygulamalar, ister küçük bir yardımcı script ister büyük bir kurumsal belge işlem hizmeti oluşturuyor olun, geçerlidir.
Depo boyutunu şişirmemek için büyük test görüntüleri için Git LFS kullanın. Standart Git geçmişindeki binary varlıklar, özellikle test veri setleri yüksek çözünürlüklü taramalar içerdiğinde klonlama sürelerini ve depolama maliyetlerini artırır. Lisans anahtarlarını ortam değişkenlerinde veya GitHub Sırlarında saklayın, asla taahhüt edilen C# kodunda saklamayın; kurulum talimatları için lisans anahtarı yapılandırma kılavuzuna başvurun.
Katkıda bulunanların kendi belgelerini edinmelerine gerek kalmadan OCR işlevselliğini doğrulayabilmeleri için, örnek görüntüleri özel bir test-data klasörüne dahil edin. README dosyalarında desteklenen görüntü formatlarını ve .NET sürüm gereksinimlerini belgeleyin, bu da yeni başlayanların sorularını azaltır. [1] CI boru hatlarında testler oluşturun ve çalıştırın, GitHub Actions kullanarak kütüphanenin hedef ortamlarda doğru çalıştığını doğrulayın.
[2] GitHub Actions iş akışları için IronOCR, hem Windows hem de Linux çalıştırıcılarında konteynerize edilmiş ortamlarda çalışır. [3] Ubuntu veya diğer Windows dışı çalıştırıcıları hedeflerken yapılandırma detayları için Linux dağıtım kılavuzuna başvurun.
Sıradaki Adımlarınız Neler?
[4] IronOCR, C# GitHub projelerine güvenilir metin tanıma getirir ve Tesseract yapılandırması, ön işleme, barkod tanıma ve çok dilli destekle ilgili işlemleri, harici ikili bağımlılıklar olmadan ele alan bir NuGet dağıtımlı kütüphane sağlar. [5] Bu kılavuzdaki kod örnekleri, temel metin çıkarımı, görüntü ön işleme, barkod tarama, aranabilir PDF oluşturma ve çok dilli işleme gibi temel kullanım durumlarını kapsar.
[6] Tam özellik setini keşfetmek için, ücretsiz bir deneme başlatın ve zaman baskısı veya kredi kartı gerekliliği olmadan deneyin. [7] Üretim dağıtımına hazır olduğunuzda, bireysel geliştiricilerden kurumsal ekiplere kadar kapsayan lisans seçeneklerini gözden geçirin.
[8] Bilginizi genişletmek için ilgili kaynaklar: [9] - C# ile Görüntüden Nasıl Metin Okunur [10] - C#'ta Tesseract OCR Eğitimi [11] - IronOCR GitHub Örnekleri Deposu

Sıkça Sorulan Sorular
IronOCR nedir?
IronOCR, resimlerden ve PDF'lerden metin çıkaran, optimize edilmiş Tesseract 5 motorunu kullanan bir .NET OCR kütüphanesidir. NuGet üzerinden yüklenir ve ikili bağımlılıkları dahili olarak yönetir, manuel tessdata yapılandırması gerektirmez.
C# projesine IronOCR'yi nasıl yüklerim?
NuGet Paket Yöneticisi Konsolunda veya Visual Studio NuGet Paket Yöneticisi UI'sinde IronOcr arayarak `Install-Package IronOcr` çalıştırın. Paket, Windows, Linux ve macOS için gereken tüm ikili dosyaları içerir.
IronOCR'un GitHub Actions için Linux üzerinde çalışıp çalışmadığını merak ediyor musunuz?
Evet, IronOCR, GitHub Actions'da Linux çalıştırıcılarını destekler. Ubuntu ve diğer dağıtımlar için gerekli paket bağımlılıkları için https://ironsoftware.com/csharp/ocr/how-to/linux/ adresindeki Linux dağıtım kılavuzuna başvurun.
IronOCR barkod ve QR kodlarını okuyabilir mi?
Evet. Read() çağrısından önce ocr.Configuration.ReadBarCodes = true olarak ayarlayın. OcrResult.Barcodes koleksiyonu, tespit edilen her kodun değeri ve format türünü içerir, QR, Code 128, EAN-13, UPC, Data Matrix ve PDF417 destekler.
Taranmış bir görüntüden aranabilir bir PDF nasıl oluştururum?
ocr.Read(input) işlemi tamamladıktan sonra, result.SaveAsSearchablePdf("output.pdf") kullanarak orijinal tarama üzerinde görünmez bir metin katmanı olan bir PDF oluşturun. Çıktı, arşiv ve kurumsal belge yönetim sistemleri için uygundur.
IronOCR'un İngilizce dışındaki dilleri destekleyip desteklemediğini merak ediyor musunuz?
Evet. IronOCR, özel NuGet dil paketleri aracılığıyla 125'in üzerinde dili destekler. Dil paketini (örneğin, Install-Package IronOcr.Languages.French) yükleyin, sonra işlemden önce ocr.Language = OcrLanguage.French olarak ayarlayın.
GitHub deposunda IronOCR lisans anahtarları nasıl saklanmalıdır?
Lisans anahtarlarını GitHub Secrets'lerde saklayın ve GitHub Actions iş akışınızda ortam değişkenleri olarak enjekte edin. C# kodunda veya appsettings dosyalarında lisans anahtarı dizelerini doğrudan asla taahhüt etmeyin.
IronOCR hangi görüntü formatlarını destekliyor?
IronOCR, PNG, JPG, JPEG, BMP, GIF, TIFF (çok çerçeveli dahil), PDF ve diğer yaygın formatları destekler. Resimler dosya yollarından, URL'lerden, akışlardan veya bayt dizilerinden yüklenebilir.



