C#'da Altyazılar Nasıl OCR Yapılır (Eğitim)
Bu eğitimde, video dosyalarından sabitlenmiş altyazıları çıkarmayı öğreneceğiz. Örnek bir video dosyası alacağız ve sabitlenmiş altyazıları bir metin dosyasına çıkaracağız. OCR Süreci kullanarak sabitlenmiş altyazıları çıkaracak bir C# .NET programı geliştireceğiz. Bu eğitimi basit ve kolay tutacağım, böylece acemi bir C# Programcısı bile anlayabilir.
Video işleyebilmek ve altyazı diline bakılmaksızın altyazı dosyalarını alabilmek için verimli bir Optik Karakter Tanıma (OCR) motoruna ihtiyaçımız var.
OCR sonuçları sağlayan birçok kütüphane bulunmaktadır. Bazıları ücretli, bazıları kullanımı zor, bazıları ise verimli veya doğru değil. Bu nedenle, ücretsiz, verimli, kullanımı kolay ve doğru sonuçlar sağlayan bir kütüphane bulmak çok zor.
Geliştirme için ücretsiz olan IronOCR, ticari amaçlar için bir aylık ücretsiz deneme sağlar. 150'den fazla dili destekler ve mevcut diğer birçok OCR kütüphanesinden daha iyi doğruluk sağlar. Ayrıca verimli ve kullanımı kolaydır. Bu gösterimde bu kütüphaneyi kullanacağız.
C#'da Altyazıları OCR ile Okuma
- Altyazılarda OCR yapmak için C# kütüphanesi kurulumunu yapın
- Altyazıları içeren görüntüyü yeni bir
OcrInputörneğine aktarın - Seçili filtreleri uygulayarak görüntüleri ön işleme tabi tutun
- OCR performansını ve doğruluğunu artırmak için görüntüdeki altyazı konumunu belirtin
- Elde edilen metni bir metin dosyası olarak dışa aktarın
IronOCR
IronOCR, Iron Software tarafından geliştirilen ve sürdürülen, C# Yazılım Mühendislerinin .NET projelerinde OCR, Barkod Tarama ve Metin Çıkartma 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 PDFler gibi birçok formatlardan metin okuma
- Deskew, Gürültü Azaltma, İkiliyapma, Çözünürlüğü Artırma, Dilate ve daha birçok filtre ile düşük kaliteli taramalar ve fotoğrafların düzeltilmesi
- 20'den fazla farklı formattan barkodları okuma ve QR Kod Desteği
- Tesseract OCR'nin en son yapısını kullanma, performansını diğer benzer kütüphanelerin üstünde ayarlama
- Aranabilir PDF'ler, hOCR / HTML Dışa Aktarımı ve görüntü içeriği metni dışa aktarma.
Plaka numaralarını okumak için bir demo uygulaması geliştirelim.
Bir Visual Studio Projesi Oluşturun
İlk adım yeni bir proje oluşturmaktır.
Visual Studio'yu açın. Yeni Proje Oluştur seçeneğine tıklayın ve Konsol Uygulaması proje şablonunu seçin.
İleri butonuna tıklayın ve projeyi adlandırın (Ben 'OCR Altyazıları' olarak adlandırdım, siz de kendi seçiminize göre adlandırabilirsiniz).
İleri butonuna tıklayın ve hedef Framework'ünüzü seçin. Son olarak, projeyi oluşturmak için Oluştur butonuna tıklayın.
Proje aşağıda gösterildiği gibi oluşturulacaktır.
Visual Studio'da Yeni Proje Oluşturma
Projede kullanmak için IronOCR kütüphanesini yüklememiz gerekiyor. Bunun en kolay yolu, NuGet Paket Yöneticisi ile yüklemektir.
IronOCR NuGet Paketi Yükleme
Üst menü çubuğundan Araçlar seçeneğine tıklayın, ardından NuGet Paket Yöneticisi > Çözüm için NuGet Paketlerini Yönet seçeneğini seçin, aşağıda gösterildiği gibi.
Visual Studio'da IronOCR Yükleme
Aşağıdaki pencere açılacaktır.
Visual Studio NuGet Paket Yöneticisi Arayüzü
Ara butonuna tıklayın ve IronOCR'yi arayın. IronOCR Paketini seçin ve aşağıda gösterildiği gibi Yükle butonuna 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.
Sabitlenmiş Altyazıları Çıkartma
Sabitlenmiş altyazıları çıkartmak için bir program yazalım.
Aşağıdaki ekran görüntüsünü altyazıları çıkartmak için kullanacağız.
Metnin Çıkartılacağı Örnek Video Ekran Görüntüsü
Aşağıdaki ad alanını ekleyin:
using IronOcr;
using IronOcr;
Imports IronOcr
Ad alanı bildiriminin altına 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 şu şekilde çalışır:
IronTesseractnesnesini başlatın. Bu,IronTesseract'nun varsayılan bir örneğini oluşturacaktır.- Giriş resim dosyası veya PDF belgesi ile doldurulmuş yeni bir
OcrInputnesnesi oluşturun.OcrInput, çok sayfalı belgelerin OCR işlemi yapmasına ve daha hızlı, daha doğru sonuçlar elde etmek için resimlerin OCR öncesi iyileştirilmesine olanak tanıdığı 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ğıdaki konsol çıktısını üretir:
IronOCR kullanarak örnek resim üzerinde metin çıkarmaya yönelik üretilen konsol çıktısı
Varsayalım ki hem video başlığı hem de altyazıları içeren bir video karesi var:
Video başlığı ve video altyazıları için metin bölgeleri içeren uzun bir videonun tek karesi
Amacımız, resmin alt bölgesinden sabitlenmiş altyazıları çıkartmaktır. Bu durumda, altyazıların gösterildiği metin bölgesini belirtmemiz gerekiyor.
Karede Altyazı Konumunu Belirtin
Video karesinden altyazı okuyacak bölgeyi belirtmek için System.Drawing.Rectangle kullanabiliriz. Ölçüm birimi her zaman pikseldir.
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 oranında hız artışı sağlar - ve spesifik olmamıza olanak tanır. contentArea içerisinde, x ve y başlangıç noktasını, ardından gerekli altyazı bölgesinin yüksekliği ve genişliğini belirledik.
Altyazıyı Bir Metin Dosyasına Kaydetme
Çıkarılan 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, bir argüman olarak çıkış yolunu alacak ve dosyayı belirtilen yolda kaydedecektir.
Video başlığı ve video altyazıları için metin bölgeleri içeren uzun bir videonun tek karesi
Özet
Bu öğreticide, IronOCR kullanmayı ve bir video ekran görüntüsünden altyazı okumak için çok basit bir program geliştirmeyi öğrendik. Metni çıkarmak istediğimiz bölgeyi de belirleyebiliriz.
IronOCR, Bilgisayarla Görü için OpenCV özelliklerini sağlar. IronOCR'nin bulanık veya düşük çözünürlüklü görüntülerden metin okumasını sağladığını gördük. Bu kütüphane, verimli ve doğru sonuç sağlar. 125'ten fazla dili tam doğrulukla destekler. Geliştirme için ücretsizdir ve üretimde herhangi bir kısıtlamaya sahip değildir.
Özetle, IronOCR şunları sağlar:
- Görüntüleri ve taranmış belgeleri tarama ve okuma yeteneği
- 150+'dan fazla küresel dil desteği
- Metin, yapılandırılmış veri veya aranabilir PDFler olarak çıktı
- .NET 6, 5, Core, Standard, Framework destekler
IronOCR, PDF okuma ve yazma, Excel dosyalarını manipüle etme, görüntülerden metin okuma ve web sitelerinden içerik çıkarma gibi işlemler için Iron Software'in kütüphanelerinin bir parçasıdır. İki bireysel kütüphanenin Iron Suite fiyatı için tamamını satın alın.
Sıkça Sorulan Sorular
C# ile video dosyalarından sabit kodlu altyazılar nasıl çıkartabilirim?
C# ile video dosyalarından sabit kodlu altyazılar çıkartabilirsiniz, bunun için IronOCR'u kullanmanız gerekiyor. NuGet Paket Yöneticisi aracılığıyla kütüphaneyi yükleyin ve ardından video karelerini işlemek ve metinleri çıkarmak için kullanın.
Altyazı çıkarmada IronOCR kullanmanın Tesseract'a göre avantajı nedir?
IronOCR, Tesseract'a göre geliştirilen bir alternatif sunar; geliştirilmiş doğruluk, kullanım kolaylığı ve 150'den fazla dil desteği sunarak videolardan altyazı çıkarmada oldukça uygundur.
IronOCR'da altyazı konumlarını belirleyerek işleme hızını nasıl artırabilirsiniz?
System.Drawing.Rectangle kullanarak ilgi alanına odaklanıp altyazı konumlarını belirleyebilirsiniz, bu da işleme hızını %41'e kadar artırabilir.
IronOCR altyazı çıkarırken İngilizce dışında başka dilleri kullanabilir mi?
Evet, IronOCR 150'den fazla dili destekler ve çoklu dilde video altyazılarını doğru bir şekilde çıkartabilir.
C# altyazı OCR eğitimini takip etmek için ön koşullar nelerdir?
Eğitim için C# programlama hakkında temel bilgi ve Visual Studio kullanarak NuGet Paket Yöneticisi aracılığıyla IronOCR kütüphanesini kurma yeteneği gerektirir.
IronOCR düşük kaliteli video karelerini nasıl işler?
IronOCR, düşük kaliteli taramaları düzeltmek için özellikler içerir, böylece alt optimal video karelerinden metin çıkarmanın doğruluğunu artırır.
IronOCR ile altyazı çıkardıktan sonra hangi çıktı formatları mevcuttur?
Çıkarılan altyazılar, IronOCR kullanılarak metin dosyaları, yapılandırılmış veri veya aranabilir PDF'ler olarak kaydedilebilir.
IronOCR'un ticari projeler için bir maliyeti var mı?
IronOCR, geliştirme amaçlı ücretsizdir ve ticari projeler için bir aylık ücretsiz deneme sunar. Sürekli ticari kullanım için lisans gereklidir.
IronOCR diğer kütüphanelerle ek işlevsellikler için entegre edilebilir mi?
Evet, IronOCR, PDF manipülasyonu ve web kazıma gibi görevler için diğer Iron Software kütüphaneleri ile entegre edilerek işlevselliğini artırabilir.



