Altbilgi içeriğine atla
IRONOCR KULLANıMı

C# GitHub projelerinde IronOCR ile OCR Uygulaması Nasıl Yapılır

GitHub'da OCR çözümleri aramak genellikle dağınık belgeler, karmaşık Tesseract yapılandırmaları ve yıllardır güncellenmemiş projelerle sonuçlanır. C# geliştiricileri için görüntülerden ve PDF'lerden güvenilir metin çıkarma gereksinimi duyanlar için, havuz ekosisteminde gezinmek, kodlamaya harcanabilecek saatleri yiyebilir. Birçok açık kaynak optik karakter tanıma projesi, manuel ikili yönetim, tessdata dosya indirmeleri ve platforma özgü sorun giderme gerektirir.

Bu öğretici, IronOCR kullanarak C# projelerinde OCR işlevselliğini nasıl uygulayacağınızı gösterir, ham Tesseract sarmalayıcılarla ortak olan yapılandırma yükünü ortadan kaldıran bir yönetilen kütüphane. İster belge işleme boru hatları oluşturmak ister mevcut uygulamalara metin tanıma eklemek isteyin, bu kılavuz, C# OCR GitHub projesi için hazır çalışma kod örnekleri sağlar.

IronOCR ile Başlarken Ne Yapılır?

IronOCR, GitHub deposuna kolayca entegre edilebilen NuGet aracılığıyla dağıtılan yönetilen bir .NET kütüphanesi sağlar. Başka açık kaynak Tesseract OCR sarmalayıcılarından farklı olarak, ikililerin manuel yönetimi ve tessdata yapılandırması gerektirir, IronOCR bu bağımlılıkları içsel olarak ele alır ve Windows, Linux ve macOS'da kutudan çıktığı gibi çalışır.

Kütüphane, geliştiricilerin klonlayıp başvurabileceği GitHub'da resmi örnek depolar tutar. Bu örnekler, görüntü-metne dönüşüm, birden çok dil desteği ve PDF işlemesi gibi gerçek dünya uygulamalarını gösterir. Katkıda bulunanlar, ek bir kurulum yapmadan özellikleri klonladıktan hemen sonra test edebilir.

Visual Studio'da başladığınızda, NuGet Paket Yöneticisi üzerinden IronOCR yükleyin:

Install-Package IronOcr

OCR C# GitHub: IronOCR ile Metin Tanıma Uygulaması: Resim 1 - Kurulum

Kurulumdan sonra, bu tek paket, OCR işlemleri için gerekli olan her şeyi içerir. Kütüphane, proje türlerine göre maksimum uyumluluk için .NET Framework 4.6.2+, .NET Core ve .NET 5 ile 10'u destekler.

C#'da Görüntü Formatlarından Metin Nasıl Çıkarılır?

Aşağıdaki örnek, IronOCR'un IronTesseract sınıfını kullanarak temel metin çıkarımı yapmayı gösteriyor. Bu OCR motoru PNG, JPG, JPEG, BMP, GIF ve TIFF gibi ç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
$vbLabelText   $csharpLabel

IronTesseract sınıfı, optimize edilmiş bir Tesseract 5 uygulaması üzerine inşa edilmiş birincil OCR motoru olarak hizmet eder. Bir örnek oluşturduktan sonra, OcrInput nesnesi hedef görüntüyü diskten, bir URL'den veya bir bayt dizisinden yükler. Read yöntemi girdiyi işler ve tanınan düz metni, tanıma doğruluğunu gösteren bir güven yüzdesi ile birlikte içeren bir OcrResult döndürür. Daha yüksek güven değerleri (90% üzeri) tipik olarak temiz, iyi biçimlendirilmiş kaynak belgeleri gösterir.

OcrResult nesnesi, tanınan içeriğe yapısal erişim sağlar. Düz metnin ötesinde, geliştiriciler bireysel kelimelere, satırlara, paragraflara ve karakterlere, bunların pozisyonları ve güven puanlarıyla birlikte erişebilir. Her Word, belge ek açıklamaları veya form alanı çıkarımı gerektiren uygulamalar için değerli olan sınırlayıcı dikdörtgen koordinatlarını içerir.

Giriş

OCR C# GitHub: IronOCR ile Metin Tanıma Uygulaması: Resim 2 - Örnek Girdi

Çıktı

OCR C# GitHub: IronOCR ile Metin Tanıma Uygulaması: Resim 3 - Konsol Çıkışı

IronOCR, özellikle dosya yükleme alan web uygulamalarında akışlardan ve byte dizilerinden resim yüklemeyi de destekler. Bu, OCR işleminin tamamen bellekte gerçekleşebileceği anlamına gelir ve geçici dosyalar diske yazılmadan yüksek geçişli ortamlarda giriş-çıkış yükünü azaltır.

OCR C# GitHub: IronOCR ile Metin Tanıma Uygulaması: Resim 4 - Özellikler

Görüntü Ön İşleme, Optik Karakter Tanıma Doğruluğunu Nasıl Artırır?

Taranan belgeler genellikle eğik, gürültülü veya optimal olmayan çözünürlüklerde gelir. IronOCR, bu sorunları OCR motoru görüntüyü işlemeden önce düzeltmek için 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
$vbLabelText   $csharpLabel

Deskew yöntemi, özellikle tarayıcıda hafifçe merkezden kaymış sayfaların yaygın bir durumunu ele alarak, görüntü döndürmeyi 15 dereceye kadar otomatik olarak algılar ve düzeltir. DeNoise filtresi, fotoğraflanmış belgelerde veya eski taramalarda yaygın olan leke ve artefaktları kaldırır. EnhanceResolution, düşük DPI'lı görüntüleri, optik karakter tanıma doğruluğu için optimal olan 200-300 DPI aralığına yükseltir.

Bu filtreler birbirine zincirlenebilir ve tamamen bellekte, geçici dosyalara ihtiyaç duymadan çalıştırılabilir. Fading mürekkep, arka plan gürültüsü veya kamera bozulması gibi ciddi kalite sorunları olan belgelerde, birden fazla ön işleme aşaması uygulamak, metin tanıma sonuçlarını önemli ölçüde artırabilir. 150 DPI'nın altında taranan belgelerde veya düzensiz aydınlatma koşullarında çekilen fotoğraflarda iyileşme en belirgin şekilde görülür.

İlgi Bölgesi Kırpma Performansı Nasıl Yardımcı Olur?

Resmin yalnızca bir kısmının ilgili metni içerdiği belgelerde, bir kırpma bölgesi tanımlamak, hem işleme süresini kısaltır hem de arka plan gürültüsünden kaynaklanan yanlış pozitifleri potansiyel olarak azaltır:

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
$vbLabelText   $csharpLabel

Belirli bir bölgeyi hedeflemek, metin alanlarının bilinen konumları işgal ettiği faturalar veya formlar gibi yapılandırılmış belgeleri işlerken özellikle değerlidir. Bu yaklaşım, görüntünün ne kadarının alakasız olduğuna bağlı olarak, OCR işleme süresini tam görüntü analizine kıyasla %40-70 oranında azaltabilir.

Metinle Birlikte Barkod ve QR Kodları Çıkarabilir misiniz?

IronOCR, aynı belge içinde metin tanımanın yanında barkod taraması da yapabilir. Bu çift işlevsellik, faturalar, gönderi etiketleri ve envanter belgeleri işlemek için 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
$vbLabelText   $csharpLabel

ReadBarCodes, true olarak ayarlandığında, barkod algılama zamanında önemli bir etkisi olmadan etkinleşir. Sonuçtaki Barcodes koleksiyonu, her tespit edilen barkod için değer ve biçim türünü içerir. Desteklenen formatlar arasında QR kodları, Code 128, EAN-13, UPC, Data Matrix ve PDF417 bulunur. Bu çift işlevsellik, makine tarafından okunabilir kodlar ve insan tarafından okunabilir metinler içeren belgelerde ayrı barkod tarama kütüphanelerine olan ihtiyacı ortadan kaldırır.

Giriş

OCR C# GitHub: IronOCR ile Metin Tanıma Uygulaması: Resim 5 - Örnek Barkod Görüntüsü

Çıktı

OCR C# GitHub: IronOCR ile Metin Tanıma Uygulaması: Resim 6 - Konsol Barkod Metin Çıkışı

Depo ve lojistik uygulamalarında, tek geçişte metin ve barkod çıkarma işlemi API çağrılarını azaltır ve uygulama mimarisini basitleştirir. Tek bir Read işlemi, dökümandaki tüm tanınabilir verileri döndürür; bu veriler basılı metin, el yazısı veya makine tarafından okunabilir kodlar olabilir. OcrResult.Barcodes özelliği, biçime özel ayrıştırma mantığı gerektirmeden sonuçları yineleyebileceğiniz türdeş bir koleksiyon sunar.

Taranmış Görüntülerden Aranabilir PDF'ler Nasıl Oluşturulur?

Taranmış belgelerin aranabilir PDF'lere dönüştürülmesi, belge yönetim sistemlerinde metin seçimini, kopyalamayı ve tam metin aramasını etkinleştirir. Bu, çeşitli görüntü formatlarıyla ç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
$vbLabelText   $csharpLabel

SaveAsSearchablePdf yöntemi, tanınan içeriği eşleştiren görünmez bir metin katmanı yerleştirir, böylece orijinal belge görünümünü koruyarak metin işlemlerini mümkün kılar. Bu, belgelerin arşivleme ve kurumsal belge yönetim sistemleri için uygun hale gelmesini sağlar. IronOCR, sonuçları HTML veya JSON biçiminde dışa aktararak aşağı akış sistemleri ile entegrasyonu da destekler.

Çok sayfalı belgeler için, IronOCR her sayfayı ayrı ayrı işler ve çıktıyı tek bir dosya halinde derler. Birden fazla çerçeveli TIFF dosyaları otomatik olarak işlenir, böylece taranmış belge arşivlerinin toplu halde dönüşümü kolaylaşır. Ortaya çıkan PDF, orijinal taramanın görsel düzenini korurken, yerleştirilen metin katmanı her sayfayı herhangi bir PDF görüntüleyici veya belge yönetim platformunda tamamen aranabilir hale getirir.

IronOCR'u Çok Dilli Uygulamalarda Nasıl Kullanabilirsiniz?

IronOCR, İngilizce, İspanyolca, Fransızca, Almanca, Çince, Japonca, Arapça ve daha birçok dili içeren 125'ten fazla dili destekler. Dil paketleri, çekirdek kütüphaneyi hafif tutarak NuGet üzerinden ayrı paketler halinde 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
$vbLabelText   $csharpLabel

Aynı sayfada karma diller içeren belgeler için, IronOCR, birden fazla dil modelini aynı anda yüklemeyi destekler. Bu, dosyaları dil başına öncelikle sıralamaya gerek kalmadan, birden çok bölgeden gelen belgeleri işleyen uluslararası uygulamalar için geçerlidir. Her dil paketi, çekirdek kütüphane ile birlikte sürdürülür ve aynı ön işleme ve çıktı yeteneklerini destekler.

GitHub Projelerinde OCR için En İyi Uygulamalar Nelerdir?

GitHub'da OCR projelerini sürdürürken, birkaç organizasyonel karar katkıda bulunanların deneyimini ve uzun vadeli proje sağlığına katkıda bulunur. Bu uygulamalar, küçük bir yardımcı program betiği veya büyük bir kurumsal belge işlem hizmeti inşa ediyorsanız da geçerlidir.

Depo boyutunu aşırı şişirmekten kaçınmak için, büyük test görüntüleri için Git LFS kullanın. Standart Git geçmişinde bulunan ikili varlıklar, klon sürelerini ve depolama maliyetlerini şişirir, özellikle test veri setleri yüksek çözünürlüklü taramaları içeriyorsa. Lisans anahtarlarını, hiç bir zaman taahhüt edilmiş C# kodunda değil, çevre değişkenleri veya GitHub Secrets'te saklayın. Kurulum talimatları için lisans anahtarı yapılandırma kılavuzuna başvurun.

Örnek görüntüleri, katkıda bulunanların OCR işlevselliğini kendi belgeleri olmadan doğrulayabilecekleri bir test-data klasörüne ekleyin. Desteklenen görüntü formatlarını ve .NET sürüm gereksinimlerini README dosyalarında dokümante edin, böylece başlangıç sorularını azaltır. Kütüphanenin doğru hedef ortamlarda çalıştığını onaylamak için, GitHub Actions kullanarak CI hatlarında testleri oluşturun ve çalıştırın.

GitHub Eylemleri iş akışları için IronOCR, hem Windows hem de Linux çalışanlarında konteynerize edilmiş ortamlarda çalışır. Ubuntu veya diğer Windows-dışı çalışanları hedeflerken yapılandırma detayları için Linux dağıtım kılavuzuna başvurun.

Sonraki Adımlarınız Neler?

IronOCR, Tesseract yapılandırmasını, ön işlemesini, barkod algılama ve çok dilli desteği dışsal ikili bağımlılıklar olmadan ele alan bir NuGet dağıtımlı kütüphane aracılığıyla C# GitHub projelerine güvenilir metin tanıma getirir. Bu kılavuzdaki kod örnekleri, temel metin çıkarma, görüntü ön işleme, barkod tarama, aranabilir PDF oluşturma ve çok dillilik işlemleri dahil olmak üzere temel kullanım durumlarını kapsar.

Ücretsiz deneme ile zaman baskısı veya kredi kartı gerekliliği olmadan tüm özellik setini keşfedin. Üretim dağıtımına hazır olduğunuzda, bireysel geliştiricilerden kurumsal ekiplere kadar seçenekleri kapsayan lisanslama seçeneklerini gözden geçirin.

Bilginizi genişletmek için ilgili kaynaklar:

OCR C# GitHub: IronOCR ile Metin Tanıma Uygulaması: Resim 7 - Lisanslama

Sıkça Sorulan Sorular

IronOCR nedir?

IronOCR, optimize edilmiş bir Tesseract 5 motoru kullanan, görüntülerden ve PDF'lerden metin çıkaran bir .NET OCR kütüphanesidir. NuGet aracılığıyla kurulur ve ikili bağımlılıkları içsel olarak yönetir, manuel tessdata yapılandırması gerektirmez.

C# projesinde IronOCR nasıl kurulur?

`Install-Package IronOcr` komutunu Visual Studio'da NuGet Paket Yöneticisi Konsolunda çalıştırın veya NuGet Paket Yöneticisi UI kullanarak IronOcr'u arayın. Paket, Windows, Linux ve macOS için gereken tüm ikili dosyaları içerir.

IronOCR, GitHub Actions için Linux üzerinde çalışır mı?

Evet, IronOCR, GitHub Actions'ta Linux çalıştırıcılarını destekler. Ubuntu ve diğer dağıtımlarda gerekli paket bağımlılıkları için https://ironsoftware.com/csharp/ocr/how-to/linux/Linux dağıtım kılavuzuna bakın.

IronOCR, barkodları ve QR kodlarını okuyabilir mi?

Evet. Read() çağrısından önce ocr.Configuration.ReadBarCodes = true olarak ayarlayın. OcrResult.Barcodes koleksiyonu, algılanan her kodun değerini ve format türünü içeren, QR, Code 128, EAN-13, UPC, Data Matrix ve PDF417'yi destekler.

Taranmış bir görüntüden aranabilir PDF nasıl oluştururum?

Ocr.Read(input) çağrısından sonra, result.SaveAsSearchablePdf("output.pdf") kullanarak orijinal taramanın üzerine görünmez bir metin katmanı ile bir PDF oluşturun. Çıktı, arşiv ve kurumsal belge yönetim sistemleri için uygundur.

IronOCR, İngilizce dışındaki dilleri destekliyor mu?

Evet. IronOCR, 125'ten fazla dili, özel NuGet dil paketleri aracılığıyla destekler. Dil paketini (örneğin, Install-Package IronOcr.Languages.French) yükleyin, ardından işlemden önce ocr.Language = OcrLanguage.French ayarlayın.

IronOCR lisans anahtarlarını bir GitHub deposunda nasıl saklamalıyım?

Lisans anahtarlarını GitHub Secrets'ta saklayın ve bunları GitHub Actions iş akışınızda ortam değişkenleri olarak enjekte edin. Lisans anahtar dizesini doğrudan C# kodunda veya appsettings dosyalarında asla commit etmeyin.

IronOCR hangi görüntü formatlarını destekliyor?

IronOCR, PNG, JPG, JPEG, BMP, GIF, TIFF (çoklu çerçeve içerenler dahil), PDF ve diğer yaygın formatları destekler. Görüntüler, dosya yollarından, URL'lerden, akışlardan veya bayt dizilerinden yüklenebilir.

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