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

C#'da Altyazılar Nasıl OCR Yapılır (Eğitim)

Bu eğiticide, video dosyalarından gömülü altyazıları çıkarmayı öğreneceğiz. Örnek bir video dosyası alacağız ve gömülü altyazıları bir metin dosyasına çıkaracağız. Video işleyerek gömülü altyazıları çıkaracak bir C# .NET programı geliştireceğiz. Bu eğitimi basit ve kolay tutacağım, böylece bir başlangıç C# Programcısı bile anlayabilir.

Altyazı dili ne olursa olsun, video işlemi yapabilecek ve altyazı dosyalarını alabilecek etkin bir Optik Karakter Tanıma (OCR) motoruna ihtiyacımız var.

OCR sonuçları sağlayan birçok kütüphane mevcut. Bazıları ücretli, bazıları kullanımı zor ve bazıları verimli veya doğru değil, bu nedenle ücretsiz, verimli, kolay kullanımlı ve doğru sonuçlar sunan bir kütüphane bulmak çok zor.

İronOCR, geliştirme için ücretsizdir, ticari amaçlar için bir aylık ücretsiz deneme sunar. 150'den fazla dili destekler ve çoğu diğer OCR kütüphanesinden daha iyi doğruluk sağlar. Ayrıca verimli ve kullanımı kolaydır. Bu kütüphaneyi gösterimimiz için kullanacağız.

IronOCR

IronOCR, Iron Software tarafından geliştirilen ve bakımı yapılan C# Yazılım Mühendislerinin .NET projelerinde OCR, Barkod Tarama ve Metin Çıkarma yapmasına yardımcı olan bir kütüphanedir.

IronOCR'nin özellikleri şunlardır:

  • Görüntüler (JPEG, PNG, BMP), GIF, TIF/TIFF, Akışlar, ve PDF'lerden metin okuma
  • Düşük kaliteli taramaların ve fotoğrafların çeşitli filtrelerle düzeltilmesi: Deskew, Denoise, Binarize, Çözünürlük Artırma, Dilate ve daha birçok
  • 20'den fazla formatın yanı sıra QR Kodu Desteği ile barkod okuma
  • En yeni Tesseract OCR derlemesini kullanma, performansı diğer benzer kütüphanelerin üstünde olacak şekilde ayarlanmıştır
  • Aranabilir PDF'ler, hOCR / HTML Dışa Aktarma ve görüntü içerik metni dışa aktarımı.

Plaka numaralarını okumak için bir demo uygulaması geliştirelim.

Visual Studio Projesi Oluşturma

İlk adım yeni bir proje oluşturmak.

Visual Studio'yu açın. Yeni Proje Oluştur'a tıklayın ve Konsol Uygulaması proje şablonunu seçin.

İleri düğmesine tıklayın ve projeye bir isim verin (Ben "OCR Subtitles" olarak adlandırdım, kendi seçiminize göre adlandırabilirsiniz).

İleri düğmesine tıklayın ve hedef Çerçevenizi seçin. Son olarak, Oluştur düğmesine tıklayarak projeyi oluşturun.

Proje aşağıda gösterildiği gibi oluşturulacaktır.

C#'de Altyazıları OCR ile Tanıma (Eğitim), Şekil 1: Visual Studio'da Yeni Proje Oluşturma Visual Studio'da Yeni Proje Oluşturma

Şimdi, projemizde kullanabilmek için IronOCR kütüphanesini yüklememiz gerekiyor. En kolay yolu, NuGet Paket Yöneticisi üzerinden çözüm için yüklemektir.

IronOCR NuGet Paketini Yükle

En üst menü çubuğundan Araçlar'a tıklayın ve ardından NuGet Paket Yöneticisi > Çözüm için NuGet Paketlerini Yönet seçin, aşağıda gösterildiği gibi.

C#'de Altyazıları OCR ile Tanıma (Eğitim), Şekil 2: IronOCR'un Visual Studio'ya Kurulumu Visual Studio içinde IronOCR Yükleme

Aşağıdaki pencere belirecek.

C#'de Altyazıları OCR ile Tanıma (Eğitim), Şekil 3: Visual Studio NuGet Paket Yöneticisi UI Visual Studio NuGet Paket Yöneticisi Arayüzü

Gezinmeye tıklayın ve IronOCR için arama yapın. IronOCR Paketini seçin ve aşağıda gösterildiği gibi Yükle düğmesine tıklayın.

C#'de Altyazıları OCR ile Tanıma (Eğitim), Şekil 4: NuGet Paket Yöneticisi UI'de IronOCR Aramak NuGet Paket Yöneticisi Arayüzünde IronOCR'yi Arama

IronOCR Kütüphanesi yüklenecek ve kullanıma hazır olacak.

Gömülü Altyazıları Çıkar

Gömülü altyazıları çıkarmak için bir program yazalım.

Altyazıları çıkarmak için şu ekran görüntüsünü kullanacağız.

C#'de Altyazıları OCR ile Tanıma (Eğitim), Şekil 5: Üzerinde metin çıkarılacak örnek video ekran görüntüsü Metnin çıkarılacağı örnek video ekran görüntüsü

Aşağıdaki ad alanını ekleyin:

using IronOcr;
using IronOcr;
Imports IronOcr
$vbLabelText   $csharpLabel

Ad alanı bildiriminden sonra aşağıdaki kodu yazın.

// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input using the specified image path
using (var input = new OcrInput(@"D:\License Plate\plate3.jpg"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input using the specified image path
using (var input = new OcrInput(@"D:\License Plate\plate3.jpg"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
' Initialize IronTesseract object
Dim ocr = New IronTesseract()
' Create an OCR Input using the specified image path
Using input = New OcrInput("D:\License Plate\plate3.jpg")
	' Perform OCR on the input image to extract text
	Dim result = ocr.Read(input)
	' Output the extracted text to the console
	Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Yukarıdaki kod şöyle çalışır:

  1. IronTesseract nesnesini başlatın. Bu, IronTesseract'in varsayılan bir örneğini oluşturacaktır.
  2. Bir giriş resim dosyası veya PDF belgesi ile doldurulmuş yeni bir OcrInput nesnesi oluşturun. OcrInput, çok sayfalı belgelerin OCR'ı için ve OCR öncesinde görüntülerin iyileştirilebilmesi nedeniyle daha hızlı ve daha doğru sonuçlar elde etmek için tercih edilen giriş türüdür.
  3. Bir OCR Giriş Nesnesinden metin okuyun ve bir OCR Sonuç nesnesi döndürün. ocr.Read, verilen giriş ekran görüntüsünden altyazıları çıkaracaktır.
  4. result.Text, verilen girişten çıkarılan tüm içeriği döndürecektir.

Örnek program aşağıda konsol çıktılarını üretmektedir:

C#'de Altyazıları OCR ile Tanıma (Eğitim), Şekil 7: IronOCR kullanarak örnek görüntü üzerinde metin çıkarımı yapıldığında oluşturulan konsol çıktısı IronOCR kullanarak örnek resim üzerinde metin çıkarma işlemi yapıldığında oluşturulan konsol çıktısı

Bir video çerçevesinde hem video başlığını hem de altyazılarını barındırdığınızı varsayalım:

C#'de Altyazıları OCR ile Tanıma (Eğitim), Şekil 6: Video başlığı ve video altyazıları için metin bölgeleri içeren daha uzun bir videonun tek bir kare Video başlığı ve video altyazıları için metin bölgeleri içeren daha uzun bir videonun tek karesi

Amacımız, resmin alt bölgesinden gömülü altyazıları çıkarmaktır. Bu durumda, altyazının gösterildiği metin bölgesini belirtmemiz gerekiyor.

Çerçevede Altyazı Konumunu Belirtin

Bir System.Drawing.Rectangle kullanarak video karesinden hangi bölgede altyazı okunacağını belirleyebiliriz. Ölçü birimi her zaman piksel ile ifade edilir.

Metin bölgesini belirtmek için aşağıdaki örnek kodu kullanacağız.

// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input and specify the region of interest
using (var input = new OcrInput())
{
    // Define the area within the image where subtitles are located for a 41% improvement on speed
    var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
    // Add the specific region of the image to the OCR input
    input.AddImage(@"D:\subtitle\image.png", contentArea);
    // Perform OCR on the specified region
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input and specify the region of interest
using (var input = new OcrInput())
{
    // Define the area within the image where subtitles are located for a 41% improvement on speed
    var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
    // Add the specific region of the image to the OCR input
    input.AddImage(@"D:\subtitle\image.png", contentArea);
    // Perform OCR on the specified region
    var result = ocr.Read(input);
    // Output the extracted text to the console
    Console.WriteLine(result.Text);
}
' Initialize IronTesseract object
Dim ocr = New IronTesseract()
' Create an OCR Input and specify the region of interest
Using input = New OcrInput()
	' Define the area within the image where subtitles are located for a 41% improvement on speed
	Dim contentArea = New CropRectangle(x:= 189, y:= 272, height:= 252, width:= 77)
	' Add the specific region of the image to the OCR input
	input.AddImage("D:\subtitle\image.png", contentArea)
	' Perform OCR on the specified region
	Dim result = ocr.Read(input)
	' Output the extracted text to the console
	Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Bu, %41 hız artışı sağlar - ve bize spesifik olma imkanı tanır. contentArea'te, x ve y başlangıç noktasını ve ardından gerekli altyazı bölgesinin yüksekliği ve genişliğini belirttik.

Altyazıyı Bir Altyazı Metin Dosyasına Kaydedin

Çıkardığımız altyazıları bir metin dosyasına kaydedelim.

// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input with the specified image path
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Save the extracted text to a specified file path
    result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input with the specified image path
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
    // Perform OCR on the input image to extract text
    var result = ocr.Read(input);
    // Save the extracted text to a specified file path
    result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
' Initialize IronTesseract object
Dim ocr = New IronTesseract()
' Create an OCR Input with the specified image path
Using input = New OcrInput("D:\subtitle\subtitle1.png")
	' Perform OCR on the input image to extract text
	Dim result = ocr.Read(input)
	' Save the extracted text to a specified file path
	result.SaveAsTextFile("D:\subtitle\subtitlefile.txt")
End Using
$vbLabelText   $csharpLabel

result.SaveAsTextFile, çıktı yolunu bir argüman olarak alacak ve dosyayı belirtilen yola kaydedecektir.

C#'de Altyazıları OCR ile Tanıma (Eğitim), Şekil 8: Video başlığı ve video altyazıları için metin bölgeleri içeren daha uzun bir videonun tek bir kare Video başlığı ve video altyazıları için metin bölgeleri içeren daha uzun bir videonun tek karesi

Özet

Bu öğreticide, IronOCR kullanımını öğrendik ve videodan altyazıları okuyan çok basit bir program geliştirdik. Ayrıca, metni çıkarmak istediğimiz bölgeyi belirleyebiliriz.

IronOCR, Bilgisayarla Görme için OpenCV özelliklerini sağlar. IronOCR'un bulanık veya düşük çözünürlüklü resimlerden metin okumamıza olanak tanıdığını gördük. Bu kütüphane verimlidir ve doğruluk sağlar. Tam doğrulukla 125'ten fazla dili destekler. Geliştirme için ücretsizdir ve üretim üzerinde sınırlama yoktur.

Özetle, IronOCR şunları sağlar:

  • Görüntüleri ve taranmış belgeleri tarama ve okuma yeteneği
  • 150+ küresel dil desteği
  • Metin, yapılandırılmış veri veya aranabilir PDF çıktı seçenekleri
  • .NET 6, 5, Core, Standard, Framework desteği

IronOCR, PDF'leri okuma ve yazma, Excel dosyalarını işleme, görüntülerden metin okuma ve websitelerinden içerik kazıma gibi işleri kolaylaştıran Iron Software'in kütüphane paketinin bir parçasıdır. Tam Iron Suite'i iki ayrı kütüphane fiyatına satın alın.

Sıkça Sorulan Sorular

C# dilinde video dosyalarından sabit kodlu altyazıları nasıl çıkarabilirim?

C# dilinde video dosyalarından sabit kodlu altyazıları IronOCR kullanarak çıkarabilirsiniz. NuGet Paket Yöneticisi aracılığıyla kütüphaneyi yükleyin ve ardından video karelerini işlemek ve metni çıkarmak için kullanın.

Altyazı çıkarma için IronOCR kullanmanın Tesseract'a göre avantajı nedir?

IronOCR, Tesseract'a geliştirilmiş bir alternatif sunar; geliştirilmiş doğruluk, kullanımı kolaylık ve 150'den fazla dil desteği ile videolardan altyazı çıkarmak için uygun hale gelir.

İşlem hızını artırmak için IronOCR'de altyazı konumlarını nasıl belirleyebilirim?

IronOCR'de ilgi bölgesine odaklanarak işlem hızını %41'e kadar artırabilecek bir System.Drawing.Rectangle kullanarak altyazı konumlarını belirleyebilirsiniz.

IronOCR, altyazı çıkarmada İngilizce olmayan diller için kullanılabilir mi?

Evet, IronOCR 150'den fazla dili destekler, bu da videolardan farklı dillerdeki altyazıları doğru bir şekilde çıkarmasını sağlar.

C# altyazı OCR eğitimini takip etmek için ön koşullar nelerdir?

Eğitim, C# programlama konusunda temel bilgi ve IronOCR kütüphanesini NuGet Paket Yöneticisi aracılığıyla yüklemek için Visual Studio kullanabilme yeteneği gerektirir.

IronOCR, düşük kaliteli video karelerini nasıl ele alır?

IronOCR, düşük kaliteli taramaları düzeltmek için özellikler içerir, bu da uygun olmayan video karelerinden metin çıkarmayı daha doğru hale getirir.

IronOCR ile altyazı çıkardıktan sonra hangi çıktı formatları mevcut?

Çıkartılmış altyazılar IronOCR kullanılarak metin dosyası, yapılandırılmış veri veya aranabilir PDF olarak kaydedilebilir.

Ticari projeler için IronOCR kullanımıyla ilgili bir maliyet var mı?

IronOCR, gelişim amaçlı ücretsizdir ve ticari projeler için bir aylık ücretsiz deneme sunar. Sürekli ticari kullanım için lisans gereklidir.

IronOCR, ek işlevler için diğer kütüphanelerle entegre olabilir mi?

Evet, IronOCR, işlevselliğini artırarak PDF manipülasyonu ve web kazıma gibi işler için diğer Iron Software kütüphaneleriyle entegre olabilir.

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