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.
C# ile Altyazıları OCR Nasıl Yapılır
- Altyazılar üzerinde OCR yapmak için C# kütüphanesini yükleyin
- Altyazı ile görüntüyü yeni bir
OcrInputörneğine aktarın - Seçilmiş filtreleri uygulayarak görüntüleri ön işleyin
- OCR performansını ve doğruluğunu artırmak için görüntüdeki altyazı yerini belirtin
- Alınan metni metin dosyası olarak dışa aktarın
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.
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.
Visual Studio içinde IronOCR Yükleme
Aşağıdaki pencere belirecek.
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.
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.
Metnin çıkarılacağı örnek video ekran görüntüsü
Aşağıdaki ad alanını ekleyin:
using IronOcr;
using IronOcr;
Imports IronOcr
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
Yukarıdaki kod şöyle çalışır:
IronTesseractnesnesini başlatın. Bu,IronTesseract'in varsayılan bir örneğini oluşturacaktır.- Bir giriş resim dosyası veya PDF belgesi ile doldurulmuş yeni bir
OcrInputnesnesi 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. - 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. 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:
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:
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
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
result.SaveAsTextFile, çıktı yolunu bir argüman olarak alacak ve dosyayı belirtilen yola kaydedecektir.
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.



