
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;Imports IronOcrAd 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
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 UsingYukarı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
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 UsingBu, %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
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 Usingresult.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.

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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.
İlgili Makaleler

