Altbilgi içeriğine atla
OCR ARAçLARı

Windows OCR Motoru vs Tesseract: Ayrıntılı Bir Karşılaştırma

Günümüz dijital çağında, Optik Karakter Tanıma (OCR) teknolojisi, resimleri ve taranan belgeleri düzenlenebilir ve aranabilir metne dönüştürmeye olanak tanıyarak çeşitli sektörlerde ayrılmaz bir hale gelmiştir.

Google Cloud Vision (Cloud Vision API), Adobe Acrobat Pro DC, ABBYY Finereader, Windows OCR Motoru, Tesseract ve IronOCR gibi birçok OCR yazılımı arasından her biri belge analizi için benzersiz özellikler ve yetenekler sunarak öne çıkmaktadır.

Bu makale, bu üç OCR motorunun ayrıntılı bir karşılaştırmalı analizini sunmayı, doğruluk, performans ve entegrasyon kolaylıklarını değerlendirmeyi amaçlamaktadır.

1. OCR Motorlarına Giriş

OCR motorları, resimlerden, PDF'lerden ve diğer taranan belgelerden düz yazıyı tanıma ve çıkartma amacıyla tasarlanmış yazılım araçlarıdır. Karmaşık algoritmalar ve makine öğrenme teknikleri kullanarak karakterleri doğru bir şekilde tanımlayıp makine tarafından okunabilir bir metin dosyasına dönüştürürler. Windows OCR Motoru, Tesseract ve IronOCR, her biri kendine özgü güçlü yönleri ve uygulamaları olan üç geniş çapta kullanılan OCR çözümünü temsil eder.

2. Windows OCR Motoru

Windows işletim sistemine entegre olan Windows OCR Motoru, giriş resimlerinden ve taranan belgelerden metin çıkartma için kullanışlı ve kullanıcı dostu bir çözüm sunar. İleri düzey resim işleme tekniklerinden yararlanarak çeşitli diller ve yazı stillerinde metinleri doğru bir şekilde tanıyabilir. Windows OCR Motoru, Windows Runtime API aracılığıyla erişilebilir, bir komut satırı aracının yetenekleriyle Windows uygulamalarına sorunsuz entegrasyon sağlar.

2.1 Windows OCR Motorunun Temel Özellikleri

  • Dil Desteği: Windows OCR Motoru, çok dilli belgeler için uygun hale getiren birçok dili destekler.
  • Resim İşleme: Düşük kalitedeki resimlerde bile baskı metni tanıma doğruluğunu artırmak için karmaşık resim işleme algoritmaları kullanır.
  • Windows Uygulamaları ile Entegrasyon: Windows OCR Motoru, OCR işlevselliğini tam olarak yazılımlarına dahil etmelerine olanak tanıyarak Windows uygulamalarıyla sorunsuz bir şekilde entegre olur.

2.2 Kod Örneği

using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Windows.Graphics.Imaging;
using Windows.Media.Ocr;

class Program
{
    static async Task Main(string[] args)
    {
        // Provide the path to the image file
        string imagePath = "sample.png";
        try
        {
            // Call the ExtractText method to extract text from the image
            string extractedText = await ExtractText(imagePath);
            // Display the extracted text
            Console.WriteLine("Extracted Text:");
            Console.WriteLine(extractedText);
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
        }
    }

    public static async Task<string> ExtractText(string image)
    {
        // Initialize StringBuilder to store extracted text
        StringBuilder text = new StringBuilder();
        try
        {
            // Open the image file stream
            using (var fileStream = File.OpenRead(image))
            {
                // Create a BitmapDecoder from the image file stream
                var bmpDecoder = await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream());
                // Get the software bitmap from the decoder
                var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();
                // Create an OCR engine from user profile languages
                var ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages();
                // Recognize text from the software bitmap
                var ocrResult = await ocrEngine.RecognizeAsync(softwareBmp);
                // Append each line of recognized text to the StringBuilder
                foreach (var line in ocrResult.Lines)
                {
                    text.AppendLine(line.Text);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error during OCR process: " + ex.Message);
        }
        // Return the extracted text
        return text.ToString();
    }
}
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Windows.Graphics.Imaging;
using Windows.Media.Ocr;

class Program
{
    static async Task Main(string[] args)
    {
        // Provide the path to the image file
        string imagePath = "sample.png";
        try
        {
            // Call the ExtractText method to extract text from the image
            string extractedText = await ExtractText(imagePath);
            // Display the extracted text
            Console.WriteLine("Extracted Text:");
            Console.WriteLine(extractedText);
        }
        catch (Exception ex)
        {
            Console.WriteLine("An error occurred: " + ex.Message);
        }
    }

    public static async Task<string> ExtractText(string image)
    {
        // Initialize StringBuilder to store extracted text
        StringBuilder text = new StringBuilder();
        try
        {
            // Open the image file stream
            using (var fileStream = File.OpenRead(image))
            {
                // Create a BitmapDecoder from the image file stream
                var bmpDecoder = await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream());
                // Get the software bitmap from the decoder
                var softwareBmp = await bmpDecoder.GetSoftwareBitmapAsync();
                // Create an OCR engine from user profile languages
                var ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages();
                // Recognize text from the software bitmap
                var ocrResult = await ocrEngine.RecognizeAsync(softwareBmp);
                // Append each line of recognized text to the StringBuilder
                foreach (var line in ocrResult.Lines)
                {
                    text.AppendLine(line.Text);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error during OCR process: " + ex.Message);
        }
        // Return the extracted text
        return text.ToString();
    }
}
Imports System
Imports System.IO
Imports System.Text
Imports System.Threading.Tasks
Imports Windows.Graphics.Imaging
Imports Windows.Media.Ocr

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Provide the path to the image file
		Dim imagePath As String = "sample.png"
		Try
			' Call the ExtractText method to extract text from the image
			Dim extractedText As String = Await ExtractText(imagePath)
			' Display the extracted text
			Console.WriteLine("Extracted Text:")
			Console.WriteLine(extractedText)
		Catch ex As Exception
			Console.WriteLine("An error occurred: " & ex.Message)
		End Try
	End Function

	Public Shared Async Function ExtractText(ByVal image As String) As Task(Of String)
		' Initialize StringBuilder to store extracted text
		Dim text As New StringBuilder()
		Try
			' Open the image file stream
			Using fileStream = File.OpenRead(image)
				' Create a BitmapDecoder from the image file stream
				Dim bmpDecoder = Await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream())
				' Get the software bitmap from the decoder
				Dim softwareBmp = Await bmpDecoder.GetSoftwareBitmapAsync()
				' Create an OCR engine from user profile languages
				Dim ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages()
				' Recognize text from the software bitmap
				Dim ocrResult = Await ocrEngine.RecognizeAsync(softwareBmp)
				' Append each line of recognized text to the StringBuilder
				For Each line In ocrResult.Lines
					text.AppendLine(line.Text)
				Next line
			End Using
		Catch ex As Exception
			Console.WriteLine("Error during OCR process: " & ex.Message)
		End Try
		' Return the extracted text
		Return text.ToString()
	End Function
End Class
$vbLabelText   $csharpLabel

2.2.1 Çıktı

Windows OCR Motoru ve Tesseract (OCR Özellikleri Karşılaştırması): Şekil 1 - Windows OCR Motoru kodu için konsol çıktısı

3. Tesseract

Tesseract, Google tarafından geliştirilen açık kaynaklı bir OCR motoru olup doğruluk ve çeşitlilik açısından geniş çapta popülerlik kazanmıştır. 100'den fazla dili destekler ve TIFF, JPEG ve PNG dahil olmak üzere çeşitli resim formatlarını işleyebilir. Tesseract OCR Motoru, yüksek düzeyde metin tanıma doğruluğuna ulaşmak için derin öğrenme algoritmaları ve sinir ağları kullanır ve bu da onu çok çeşitli uygulamalar için uygun hale getirir.

3.1 Tesseract'ın Temel Özellikleri

  • Dil Desteği: Tesseract motoru, Arapça ve Çince gibi karmaşık yazı dillerini içeren 100'den fazla dili destekler.
  • Görüntü Ön İşleme: Masanın hatasını düzeltme, ikileştirici ve gürültü azaltma dahil olmak üzere metin tanıma doğruluğunu artırmak için kapsamlı görüntü ön işleme yetenekleri sunar.
  • Özelleştirme Seçenekleri: Tesseract, kullanıcıların özgün kullanıma odaklanarak OCR parametrelerini hassas bir şekilde ayarlamalarına ve özel modeller eğitimlerine olanak tanır, doğruluğu ve performansı artırır.

3.2 Kod Örneği

using Patagames.Ocr;

class TesseractExample
{
    static void Main(string[] args)
    {
        // Create an OCR API instance
        using (var api = OcrApi.Create())
        {
            // Initialize the OCR engine for the English language
            api.Init(Patagames.Ocr.Enums.Languages.English);
            // Extract text from the image
            string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
            // Display the extracted text
            Console.WriteLine(plainText);
        }
    }
}
using Patagames.Ocr;

class TesseractExample
{
    static void Main(string[] args)
    {
        // Create an OCR API instance
        using (var api = OcrApi.Create())
        {
            // Initialize the OCR engine for the English language
            api.Init(Patagames.Ocr.Enums.Languages.English);
            // Extract text from the image
            string plainText = api.GetTextFromImage(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
            // Display the extracted text
            Console.WriteLine(plainText);
        }
    }
}
Imports Patagames.Ocr

Friend Class TesseractExample
	Shared Sub Main(ByVal args() As String)
		' Create an OCR API instance
		Using api = OcrApi.Create()
			' Initialize the OCR engine for the English language
			api.Init(Patagames.Ocr.Enums.Languages.English)
			' Extract text from the image
			Dim plainText As String = api.GetTextFromImage("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
			' Display the extracted text
			Console.WriteLine(plainText)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

3.2.1 Çıktı

Windows OCR Motoru ve Tesseract (OCR Özellikleri Karşılaştırması): Şekil 2 - Tesseract kodu için konsol çıktısı

4. IronOCR

IronOCR, Iron Software tarafından geliştirilmiş güçlü bir OCR motoru olup olağanüstü doğruluğu, kullanım kolaylığı ve çok yönlü dil desteği ile öne çıkar. Yerinde OCR işlevselliği sunar ve 125'ten fazla dili destekler, bu da onu küresel uygulamalar için uygun hale getirir. IronOCR, ileri düzey makine öğrenme algoritmaları ve bulut vizyon teknolojisinden yararlanarak zorlayıcı senaryolarda bile hassas metin tanıma sonuçları sunar.

4.1 IronOCR'nin Temel Özellikleri

  • Yüksek Doğruluk: IronOCR, sektör lideri doğruluk ile çeşitli belge türleri ve dillerde güvenilir sonuçlar sunar.
  • Çok Yönlü Dil Desteği: 125'ten fazla dili destekler ve çok dilli metin tanıma için kapsamlı dil paketleri sağlar.
  • Basit Entegrasyon: IronOCR, .NET uygulamalarıyla basit bir şekilde entegre olur, sezgisel API'lerle ve gelişmiş dökümantasyonları ile geliştiril işlemlerini hızlandırmak için ön işleme ve son işleme orijinal görselleri kullanarak metinleri çıkartır.

4.2 IronOCR Kurulumu

Kod örneğine geçmeden önce, IronOCR'yi NuGet Paket Yöneticisi kullanarak nasıl kuracağımıza bakalım.

  1. Visual Studio'da Araçlar Menüsüne gidin ve NuGet Paket Yöneticisini Seçin.
  2. Yeni bir liste görünecek, burada çözümler için NuGet Paket Yöneticisi'ni seçin.

Windows OCR Motoru ve Tesseract (OCR Özellikleri Karşılaştırması): Şekil 3 - Visual Studio NuGet Paket yöneticisini nerede bulacağınız

  1. Yeni bir pencere açılacak, 'Browse' sekmesine gidin ve arama çubuğuna 'IronOCR' yazın.
  2. Bir Paket Listesi görünecek. En son IronOCR paketini seçin ve yükle üzerine tıklayın.

Windows OCR Motoru ve Tesseract (OCR Özellikleri Karşılaştırması): Şekil 4 - IronOCR paketini kurma

4.3 Kod Örneği (C#)

using IronOcr;

class IronOCRExample
{
    static void Main(string[] args)
    {
        // Create an IronTesseract instance
        var ocr = new IronTesseract();
        // Set the language for OCR recognition
        ocr.Language = OcrLanguage.English;
        // Perform OCR on the specified image
        var result = ocr.Read(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
        // Display the extracted text
        Console.WriteLine(result.Text);
    }
}
using IronOcr;

class IronOCRExample
{
    static void Main(string[] args)
    {
        // Create an IronTesseract instance
        var ocr = new IronTesseract();
        // Set the language for OCR recognition
        ocr.Language = OcrLanguage.English;
        // Perform OCR on the specified image
        var result = ocr.Read(@"C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png");
        // Display the extracted text
        Console.WriteLine(result.Text);
    }
}
Imports IronOcr

Friend Class IronOCRExample
	Shared Sub Main(ByVal args() As String)
		' Create an IronTesseract instance
		Dim ocr = New IronTesseract()
		' Set the language for OCR recognition
		ocr.Language = OcrLanguage.English
		' Perform OCR on the specified image
		Dim result = ocr.Read("C:\Users\buttw\source\repos\ironqr\ironqr\bin\Debug\net5.0\Iron.png")
		' Display the extracted text
		Console.WriteLine(result.Text)
	End Sub
End Class
$vbLabelText   $csharpLabel

4.3.1 Çıktı

Windows OCR Motoru ve Tesseract (OCR Özellikleri Karşılaştırması): Şekil 5 - IronOCR kodu için konsol çıktısı

5. Karşılaştırmalı Değerlendirme

5.1 Doğruluk ve Performans

  • Windows OCR Motoru ve Tesseract, iyi bir doğruluk sunar ancak karmaşık düzenlemelerde zorlanabilir.
  • IronOCR: Doğruluk konusunda mükemmeldir, gürültülü görüntüler dahil olmak üzere çeşitli belge türleri ve dillerde güvenilir sonuçlar sunar.

5.2 Entegrasyon Kolaylığı

  • Windows OCR Motoru: Windows uygulamalarıyla sorunsuz entegre olur, ancak özelleştirme seçeneklerinden yoksundur.
  • Tesseract: Entegrasyon için ek yapılandırma ve bağımlılıklar gerektirir ancak kapsamlı özelleştirme seçenekleri sunar.
  • IronOCR: .NET uygulamalarıyla basit entegrasyon sağlar, sezgisel API'ler ve kapsamlı belgeler sunar.

5.3 Dil Desteği

  • Windows OCR Motoru, Tesseract ve IronOCR'ye kıyasla sınırlı sayıda dili destekler.
  • Tesseract: 100'den fazla dili destekler.
  • IronOCR: 125'ten fazla dili destekler ve bu da onu küresel uygulamalar için uygun hale getirir.

6. Sonuç

Sonuç olarak, Windows OCR Motoru ve Tesseract metin tanıma için popüler seçenekler olsa da, IronOCR en doğru ve çok yönlü OCR motoru olarak öne çıkıyor. Endüstri lideri doğruluğu, kapsamlı dil desteği ve basit entegrasyonu ile işletmeler ve geliştiriciler için güvenilir OCR işlevselliği arayanlar için öne çıkan bir çözüm sunar. IronOCR'dan yararlanan kuruluşlar, belge işleme iş akışlarını kusursuz hale getirebilir, veri çıkarma doğruluğunu artırabilir ve taranan belgeler ve görüntülerden değerli içgörüler elde edebilir.

IronOCR bir ücretsiz deneme sunar. IronOCR ve özellikleri hakkında daha fazla bilgi edinmek için buraya tıklayın.

Kannaopat Udonpant
Yazılım Mühendisi
Yazılım Mühendisi olmadan önce, Kannapat Japonya'daki Hokkaido Üniversitesi'nden Çevresel Kaynaklar alanında doktora yaptı. Derecesini tamamlarken, Biyoprodüksiyon Mühendisliği Bölümü'nün bir parçası olan Taşıt Robotik Laboratuvarı'na da üye oldu. 2022'de, Iron Software mühendislik ekibine katılmak iç...
Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara