Get Started with OCR in C# and VB.NET
IronOCR, .NET platformu yazılım geliştiricilerinin görüntülerden ve PDF belgelerinden metinleri tanıyıp okumasına olanak tanıyan bir C# kütüphanesiidir. Bu, bilinen en gelişmiş Tesseract motorunu kullanan, tamamen .NET tabanlı bir OCR kütüphanesidir.
Kurulum
NuGet Paket Yöneticisi ile yükleyin
IronOCR'yi Visual Studio'ya veya NuGet Paket Yöneticisi ile komut satırından yükleyin. Visual Studio'da şu komutla konsola gidin:
- Araçlar ->
- NuGet Paket Yöneticisi ->
- Paket Yöneticisi Konsolu
Install-Package IronOcr
Sürüm Güncellemeleri ve kurulum hakkında daha fazla bilgi için NuGet'teki IronOCR'ye göz atın.
Farklı platformlar için kullanılabilen başka IronOCR NuGet Paketleri de mevcuttur:
Linux ve macOS için IronOcr.Extensions.AdvancedScan
Bu paket, Linux ve Mac kullanan ve IronOCR'nin gelişmiş özelliklerinden de yararlanmak isteyen kullanıcılar içindir.
- Linux: https://www.nuget.org/packages/IronOcr.Extensions.AdvancedScan.Linux
- macOS: https://www.nuget.org/packages/IronOcr.Extensions.AdvancedScan.macOS
Sorun Giderme
Bu paketin yeni güncellemesiyle IronOCR, OpenCV bağımlılıklarını paket içinde birleştirerek paketi bu şekilde optimize eder; böylece, şu anda OpenCV bağımlılıklarını içe aktaran geliştiriciler aşağıdaki hatayı almazlar.
The type of namespace name `OpenCvSharp` could not be found(are you missing a using directive or an assembly reference)
OpenCV ad alanlarını güvenle kaldırabilirsiniz, sorun çözülecektir.
IronOCR .ZIP dosyasını indirin
Alternatif olarak, IronOCR'yi ZIP dosyası olarak da indirebilirsiniz. DLL dosyasını doğrudan indirmek için tıklayın. ZIP dosyasını indirdikten sonra:
.NET Framework 4.0+ Kurulum Talimatları:
- net40 klasöründeki IronOcr.dll dosyasını projenize ekleyin
-
Ardından aşağıdakilere Assembly referansları ekleyin:
- System.Configuration
- System.Drawing
- System.Web
.NET Standard, .NET Core 2.0+ ve .NET 5 için talimatlar
- netstandard2.0 klasöründeki IronOcr.dll dosyasını projenize ekleyin
-
Ardından, NuGet Paket Referansı'nı şuraya ekleyin:
- System.Drawing.Common 4.7 veya üstü
IronOCR Yükleyicisini indirin (yalnızca Windows)
Diğer bir seçenek ise, IronOCR'nin kullanıma hazır olarak çalışması için gerekli tüm kaynakları yükleyen IronOCR yükleyicimizi indirmektir. Lütfen bu seçeneğin yalnızca Windows sistemleri için geçerli olduğunu unutmayın. Yükleyiciyi indirmek için lütfen buraya tıklayın. ZIP dosyasını indirdikten sonra:
.NET Framework 4.0+ Kurulum Talimatları:
- net40 klasöründeki IronOcr.dll dosyasını projenize ekleyin
-
Ardından aşağıdakilere Assembly referansları ekleyin:
- System.Configuration
- System.Drawing
- System.Web
.NET Standard, .NET Core 2.0+ ve .NET 5 için talimatlar
- netstandard2.0 klasöründeki IronOcr.dll dosyasını projenize ekleyin
-
Ardından, NuGet Paket Referansı'nı şuraya ekleyin:
- System.Drawing.Common 4.7 veya üstü
Neden IronOCR'yi Seçmelisiniz?
IronOCR, kurulumu kolay, eksiksiz ve iyi belgelenmiş bir .NET yazılım kütüphanesiidir.
Harici web hizmetleri kullanmadan, sürekli ücret ödemeden veya internet üzerinden gizli belgeler göndermeden %99,8'in üzerinde OCR doğruluğu elde etmek için IronOCR'yi tercih edin.
C# geliştiricileri neden Vanilla Tesseract yerine IronOCR'yi tercih ediyor?
- Tek bir DLL veya NuGet olarak yükleyin
- Tesseract 5, 4 ve 3 motorlarını kullanıma hazır olarak içerir.
- %99,8'lik doğruluk oranı, normal Tesseract'tan önemli ölçüde daha üstündür.
- Olağanüstü Hız ve Çoklu İş Parçacığı
- MVC, WebApp, Masaüstü, Konsol ve Sunucu Uygulamaları ile uyumlu
- Çalışmak için Exe veya C++ kodu gerekmez
- Tam PDF OCR desteği
- Hemen hemen her türlü Görüntü dosyası veya PDF üzerinde OCR işlemi gerçekleştirin
- Tam .NET Core, .NET Standard ve Framework desteği
- Windows, Mac, Linux, Azure, Docker, Lambda, AWS'de dağıtın
- BarCODE'ları ve QR kodlarını okuyun
- OCR sonuçlarını XHTML olarak dışa aktarın
- OCR'yi aranabilir PDF belgelerine aktarın
- Çoklu iş parçacığı desteği
- NuGet veya OcrData dosyaları aracılığıyla yönetilen 125 uluslararası dil
- Görüntüleri, koordinatları, istatistikleri ve yazı tiplerini ayıklayın. Sadece metin değil.
- Tesseract OCR'yi ticari ve özel uygulamalar içinde yeniden dağıtmak için kullanılabilir.
IronOCR, gerçek dünya görüntüleriyle ve fotoğraflar gibi kusurlu belgelerle veya dijital gürültü veya kusurlar içerebilen düşük çözünürlüklü taramalarla çalışırken üstün performans gösterir.
Diğer .NET Tesseract API'leri ve web hizmetleri gibi .NET platformu için diğer ücretsiz OCR kütüphaneleri, bu gerçek dünya kullanım senaryolarında o kadar iyi performans göstermez.
OCR with Tesseract 5 - Start Coding in C
Aşağıdaki kod örneği, C# veya VB .NET kullanarak bir görüntüden metin okumanın ne kadar kolay olduğunu göstermektedir.
OneLiner
:path=/static-assets/ocr/content-code-examples/get-started/get-started-1.cs
string Text = new IronTesseract().Read(@"img\Screenshot.png").Text;
Dim Text As String = (New IronTesseract()).Read("img\Screenshot.png").Text
Yapılandırılabilir Hello World
:path=/static-assets/ocr/content-code-examples/get-started/get-started-2.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// Add multiple images
input.LoadImage("images/sample.jpeg");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' Add multiple images
input.LoadImage("images/sample.jpeg")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
C# PDF OCR
Aynı yaklaşım, herhangi bir PDF belgesinden metin çıkarmak için de benzer şekilde kullanılabilir.
:path=/static-assets/ocr/content-code-examples/get-started/get-started-3.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password: "password");
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
// 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages");
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' We can also select specific PDF page numbers to OCR
input.LoadPdf("example.pdf", Password:= "password")
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
' 1 page for every page of the PDF
Console.WriteLine($"{result.Pages.Length} Pages")
Çok Sayfalı TIFF'ler için OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-4.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("multi-frame.tiff", pageindices);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("multi-frame.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
BarCODE ve QR
IronOCR'nin benzersiz bir özelliği, metin taraması yaparken belgelerden BARCODE'ları ve QR kodlarını okuyabilmesidir. OcrResult.OcrBarcode sınıfının örnekleri, geliştiriciye taranan her bir BARCODE hakkında ayrıntılı bilgi verir.
:path=/static-assets/ocr/content-code-examples/get-started/get-started-5.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
input.LoadImage("img/Barcode.png");
OcrResult Result = ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
// type and location properties also exposed
Console.WriteLine(Barcode.Value);
}
Imports IronOcr
Private ocr As New IronTesseract()
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
input.LoadImage("img/Barcode.png")
Dim Result As OcrResult = ocr.Read(input)
For Each Barcode In Result.Barcodes
' type and location properties also exposed
Console.WriteLine(Barcode.Value)
Next Barcode
End Using
Görüntülerin Belirli Alanlarında OCR
IronOCR'nin tüm tarama ve okuma yöntemleri, bir sayfanın veya sayfaların hangi bölümünden metin okumak istediğimizi tam olarak belirleme olanağı sunar. Bu, standart formlara baktığımızda çok yararlıdır ve çok fazla zaman kazandırabilir ve verimliliği artırabilir.
Kırpma bölgelerini kullanmak için, System.Drawing.Rectangle nesnesini kullanabilmemiz amacıyla System.Drawing öğesine bir sistem referansı eklememiz gerekecektir.
:path=/static-assets/ocr/content-code-examples/get-started/get-started-6.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
// Dimensions are in pixel
var contentArea = new System.Drawing.Rectangle() { X = 215, Y = 1250, Height = 280, Width = 1335 };
input.LoadImage("document.png", contentArea);
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
' Dimensions are in pixel
Private contentArea = New System.Drawing.Rectangle() With {
.X = 215,
.Y = 1250,
.Height = 280,
.Width = 1335
}
input.LoadImage("document.png", contentArea)
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Düşük Kaliteli Taramalar için OCR
IronOCR OcrInput sınıfı, normal Tesseract'ın okuyamadığı taramaları düzeltebilir.
:path=/static-assets/ocr/content-code-examples/get-started/get-started-7.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageindices);
// fixes digital noise and poor scanning
input.DeNoise();
// fixes rotation and perspective
input.Deskew();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageindices)
' fixes digital noise and poor scanning
input.DeNoise()
' fixes rotation and perspective
input.Deskew()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
OCR sonuçlarını Aranabilir PDF olarak dışa aktarın
:path=/static-assets/ocr/content-code-examples/get-started/get-started-8.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Quarterly Report";
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", pageindices);
OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable.pdf");
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Quarterly Report"
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("image3.gif", pageindices)
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
TIFF'ten aranabilir PDF'ye Dönüştürme
:path=/static-assets/ocr/content-code-examples/get-started/get-started-9.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageindices);
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf");
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageindices)
ocr.Read(input).SaveAsSearchablePdf("searchable.pdf")
OCR sonuçlarını HTML olarak dışa aktar
:path=/static-assets/ocr/content-code-examples/get-started/get-started-10.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.Title = "Html Title";
input.LoadImage("image1.jpeg");
OcrResult Result = ocr.Read(input);
Result.SaveAsHocrFile("results.html");
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.Title = "Html Title"
input.LoadImage("image1.jpeg")
Dim Result As OcrResult = ocr.Read(input)
Result.SaveAsHocrFile("results.html")
OCR Görüntü İyileştirme Filtreleri
IronOCR, OCR performansını iyileştirmek için OcrInput nesnelerine özel filtreler sağlar.
Görüntü İyileştirme Kod Örneği
:path=/static-assets/ocr/content-code-examples/get-started/get-started-11.cs
using IronOcr;
IronTesseract ocr = new IronTesseract();
using OcrInput input = new OcrInput();
input.LoadImage("LowQuality.jpeg");
// fixes digital noise and poor scanning
input.DeNoise();
// fixes rotation and perspective
input.Deskew();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
Imports IronOcr
Private ocr As New IronTesseract()
Private OcrInput As using
input.LoadImage("LowQuality.jpeg")
' fixes digital noise and poor scanning
input.DeNoise()
' fixes rotation and perspective
input.Deskew()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
OCR Görüntü Filtreleri Listesi
IronOCR'ye entegre edilmiş, OCR performansını artıran giriş filtreleri şunlardır:
OcrInput.Rotate(double degrees)- Görüntüleri saat yönünde belirli bir derece döndürür. Saat yönünün tersine döndürmek için negatif sayılar kullanın.OcrInput.Binarize()- Bu filtre, her pikseli ara tonlar olmadan siyah veya beyaza dönüştürür ve çok düşük kontrastlı görüntülerde OCR performansını potansiyel olarak iyileştirir.OcrInput.ToGrayScale()- Her pikseli gri tonlamaya dönüştürür. Doğruluğu artırmayabilir, ancak hızı artırabilir.OcrInput.Contrast()- Kontrastı otomatik olarak artırır, genellikle düşük kontrastlı taramalarda hızı ve doğruluğu iyileştirir.OcrInput.DeNoise()- Dijital gürültüyü giderir, yalnızca gürültü bekleniyorsa önerilir.OcrInput.Invert()- Her rengi tersine çevirir (beyaz siyah olur ve tersi).OcrInput.Dilate()- Morfolojiyi geliştirir, nesne sınırlarına pikseller ekler; Erode'nin tersi işlemdir.OcrInput.Erode()- Morfolojiyi geliştirir, nesne sınırlarından pikselleri kaldırır, Dilate'in tersidir.OcrInput.Deskew()- Bir görüntüyü doğru yönde olacak şekilde döndürür. Tesseract'ın eğrilik toleransı sınırlı olduğu için kullanışlıdır.OcrInput.EnhanceResolution- Düşük kaliteli görüntülerin çözünürlüğünü artırır. Bu ayar genellikle düşük DPI girişini otomatik olarak yönetmek için kullanılır.EnhanceResolutiondüşük çözünürlüklü görüntüleri (275 dpi'nin altında) algılar, bunları yükseltir ve daha iyi OCR sonuçları elde etmek için metni netleştirir. Zaman alıcı olsa da, genellikle genel OCR işlem süresini kısaltır.Language- 22 uluslararası dil paketinden seçim yapılmasını destekler.Strategy- Kelimelerin istatistiksel ilişkisine dayalı olarak hızlı ve daha az doğru veya gelişmiş (doğruluk için AI kullanan) stratejiler arasında seçim yapma imkanı sunar.ColorSpace- Gri tonlamalı veya renkli OCR seçeneğini belirleyin; Gri tonlama genellikle en uygun seçenektir, ancak belirli kontrast senaryolarında renkli baskı daha iyi sonuç verebilir.DetectWhiteTextOnDarkBackgrounds- Negatif görüntüler için ayarlama yapar, koyu arka planlarda beyaz metni otomatik olarak algılar ve okur.InputImageType- OCR kütüphanesine rehberlik eder ve tam bir belge üzerinde mi yoksa bir parça üzerinde mi çalıştığını belirtir.RotateAndStraighten- IronOCR'nin döndürülmüş veya perspektif bozulmalarından etkilenen belgeleri düzgün bir şekilde işlemesine olanak tanır.ReadBarcodes- Metin taramasıyla eşzamanlı olarak BARCODE'ları ve QR kodlarını önemli bir zaman kaybı olmadan otomatik olarak okur.ColorDepth- OCR işleminde renk derinliği için piksel başına bit sayısını belirler. Daha fazla ayrıntı, kaliteyi artırabilir ancak işleme süresini de uzatabilir.
125 Dil Paketi
IronOCR, DLL olarak dağıtılan dil paketleri aracılığıyla 125 uluslararası dili destekler. Bu dil paketleri bu web sitesinden veya NuGet Paket Yöneticisi'nden indirilebilir.
Diller arasında Almanca, Fransızca, İngilizce, Çince, Japonca ve diğerleri bulunmaktadır. MRZ, MICR çekleri, finansal veriler, araç plakaları vb. için özel dil paketleri mevcuttur. Ayrıca, özel Tesseract ".traineddata" dosyaları da kullanılabilir.
Dil Örneği
// Reference to the path of the source file that demonstrates setting language packs for OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-12.cs
// Reference to the path of the source file that demonstrates setting language packs for OCR
using IronOcr;
// PM> Install IronOcr.Languages.Arabic
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames("img/arabic.gif", pageindices);
// Add image filters if needed
// In this case, even thought input is very low quality
// IronTesseract can read what conventional Tesseract cannot.
OcrResult result = ocr.Read(input);
// Console can't print Arabic on Windows easily.
// Let's save to disk instead.
result.SaveAsTextFile("arabic.txt");
' Reference to the path of the source file that demonstrates setting language packs for OCR
Imports IronOcr
' PM> Install IronOcr.Languages.Arabic
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic
Using input As New OcrInput()
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img/arabic.gif", pageindices)
' Add image filters if needed
' In this case, even thought input is very low quality
' IronTesseract can read what conventional Tesseract cannot.
Dim result As OcrResult = ocr.Read(input)
' Console can't print Arabic on Windows easily.
' Let's save to disk instead.
result.SaveAsTextFile("arabic.txt")
End Using
Çoklu Dil Örneği
Aynı anda birden fazla dil kullanarak OCR yapmak da mümkündür. Bu, Unicode belgelerindeki İngilizce meta verilerin ve URL'lerin OCR'sini iyileştirebilir.
// Reference to the path of the source file that demonstrates multi-language OCR
:path=/static-assets/ocr/content-code-examples/get-started/get-started-13.cs
// Reference to the path of the source file that demonstrates multi-language OCR
using IronOcr;
// PM> Install IronOcr.Languages.ChineseSimplified
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.ChineseSimplified;
// We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English);
using OcrInput input = new OcrInput();
input.LoadPdf("multi-language.pdf");
OcrResult result = ocr.Read(input);
result.SaveAsTextFile("results.txt");
' Reference to the path of the source file that demonstrates multi-language OCR
Imports IronOcr
' PM> Install IronOcr.Languages.ChineseSimplified
Private ocr As New IronTesseract()
ocr.Language = OcrLanguage.ChineseSimplified
' We can add any number of languages
ocr.AddSecondaryLanguage(OcrLanguage.English)
Using input As New OcrInput()
input.LoadPdf("multi-language.pdf")
Dim result As OcrResult = ocr.Read(input)
result.SaveAsTextFile("results.txt")
End Using
Ayrıntılı OCR Sonuçları Nesneleri
IronOCR, her işlem için bir OCR sonuç nesnesi döndürür. Genellikle, geliştiriciler taranan metni almak için Text özelliğine erişir. Ancak, sonuç nesnesi çok daha ayrıntılı bilgiler içerir.
// Reference to the path of the source file demonstrating detailed OCR result object usage
:path=/static-assets/ocr/content-code-examples/get-started/get-started-14.cs
// Reference to the path of the source file demonstrating detailed OCR result object usage
using IronOcr;
IronTesseract ocr = new IronTesseract();
// Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = true;
using OcrInput input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(@"img\sample.tiff", pageindices);
OcrResult result = ocr.Read(input);
var pages = result.Pages;
var words = pages[0].Words;
var barcodes = result.Barcodes;
// Explore here to find a massive, detailed API:
// - Pages, Blocks, Paraphaphs, Lines, Words, Chars
// - Image Export, Fonts Coordinates, Statistical Data, Tables
' Reference to the path of the source file demonstrating detailed OCR result object usage
Imports IronOcr
Private ocr As New IronTesseract()
' Must be set to true to read barcode
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
Dim pageindices = New Integer() { 1, 2 }
input.LoadImageFrames("img\sample.tiff", pageindices)
Dim result As OcrResult = ocr.Read(input)
Dim pages = result.Pages
Dim words = pages(0).Words
Dim barcodes = result.Barcodes
' Explore here to find a massive, detailed API:
' - Pages, Blocks, Paraphaphs, Lines, Words, Chars
' - Image Export, Fonts Coordinates, Statistical Data, Tables
End Using
Performans
IronOCR, performans ayarlaması veya görüntü değişikliği gerektirmeden kullanıma hazırdır.
Hız inanılmaz: IronOCR.2020+, önceki sürümlerden 10 kata kadar daha hızlıdır ve %250'den fazla daha az hata yapar.
Daha Fazla Bilgi
C#, VB, F# veya diğer .NET dillerinde OCR hakkında daha fazla bilgi edinmek için, IronOCR kullanımına ilişkin gerçek hayattan örnekler sunan ve kütüphaneyi optimize etmenin inceliklerini gösteren topluluk eğitimlerimizi okuyun.
.NET geliştiricileri için eksiksiz bir API Referansı da mevcuttur.

