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

Blazor'da Görüntüden Metin Okuma Nasıl Yapılır

Blazor framework'ü, JavaScript yerine HTML ve C# kullanarak etkileşimli UI web uygulamaları geliştirmek için kullanılan ASP.NET ekibi tarafından oluşturulmuştur. Blazor, WebAssembly kullanarak web tarayıcısında doğrudan C# kodu çalıştırır. Bu, bileşenleri tekrar tekrar kullanarak logic ile oluşturmayı ve geliştirmeyi kolaylaştırır. C# içinde UI oluşturan geliştiriciler arasında popüler bir framework'tür.

Bu makalede, IronOCR ile Optik Karakter Tanıma (OCR) kullanarak görüntü dosyalarından metin okuma için bir Blazor Sunucu uygulaması oluşturacağız.

Blazor'da Optik Karakter Tanıma Kullanarak Görüntüden Metin Nasıl Okunur?

Önkoşullar

  1. Visual Studio'nun en son sürümüne sahip olun. Bu linkten indirebilirsiniz.
  2. ASP.NET ve Web Geliştirme iş yükü. Visual Studio'yu yüklerken, bu proje için gerekli olduğu için ASP.NET ve Web Geliştirme iş yükünü seçin.
  3. IronOCR C# Kütüphanesi. Görüntü verilerini makine tarafından okunabilir metne dönüştürmek için IronOCR kullanacağız. Iron web sitesinden doğrudan IronOCR paketi .DLL dosyasını indirebilir veya NuGet web sitesinden indirebilirsiniz. IronOCR'u indirmenin ve kurmanın daha uygun bir yolu, Visual Studio'daki NuGet Paket Yöneticisi'nden yapmaktır.

Bir Blazor Sunucu Uygulaması Oluşturun

Visual Studio'yu açın ve bir Blazor Sunucu Uygulaması oluşturmak için adımları izleyin:

  1. Yeni Bir Proje Oluştur'u tıklayın ve listelenen proje şablonlarından "Blazor Sunucu Uygulaması" seçin.

Blazor'da Görüntüden Metin Okuma, Şekil 1: Visual Studio'da yeni bir Blazor Sunucu Uygulaması oluşturma Visual Studio'da yeni bir Blazor Sunucu Uygulaması oluşturun

  1. Ardından, projenize uygun bir isim verin. Burada, BlazorReadText ismini veriyoruz.

Blazor'da Görüntüden Metin Okuma, Şekil 2: Blazor projesini yapılandırma Blazor projesini yapılandırın

  1. Son olarak, ek bilgileri ayarlayın ve Oluştur'u tıklayın.

Blazor'da Görüntüden Metin Okuma, Şekil 3: Uzun Vadeli Destek .NET Framework ve proje için ek bilgiler seçimi Proje için Uzun Vadeli Destek .NET Çerçevesini ve ek bilgileri seçin

Blazor Sunucu Uygulaması şimdi oluşturuldu. Artık IronOCR kullanarak Resim verilerini çıkarmadan önce gerekli paketleri yüklemeliyiz.

Gerekli Paketleri Ekleyin

BlazorInputFile

İlk adım BlazorInputFile paketini kurmaktır. Blazor uygulamaları için bir bileşendir ve tek veya birden fazla dosyayı sunucuya yüklemek için kullanılır. Bu bileşen, Blazor uygulamasında Razor sayfasına görüntü dosyası yüklemek için kullanılacaktır. Çözümler için NuGet Paketlerini Yönet'i açın ve BlazorInputFile'ı arayın.

Blazor'da Görüntüden Metin Okuma, Şekil 4: BlazorInputFile paketini kur BlazorInputFile paketini kur

Proje için onay kutusunu seçin ve Yükle'yi tıklayın.

Şimdi, Sayfalar klasöründeki _Host.cshtml dosyasını açın ve aşağıdaki JavaScript dosyasını ekleyin:

<script src="_content/BlazorInputFile/inputfile.js"></script>
<script src="_content/BlazorInputFile/inputfile.js"></script>
HTML

Blazor'da Görüntüden Metin Okuma, Şekil 5: Çözüm Gezgini'nden _Host.cshtml dosyasına gitme Çözüm Gezgini'nden _Host.cshtml dosyasına gidin

Son olarak, _Imports.razor dosyasına aşağıdaki kodu ekleyin.

@using BlazorInputFile
@using BlazorInputFile
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@using BlazorInputFile
$vbLabelText   $csharpLabel

IronOCR

IronOCR, farklı formatlarda Görüntüleri tarayıp okuyabilen bir C# kütüphanesidir. 125+ global dilde görüntülerle çalışmak için kolaylık sağlar.

IronOCR'u yüklemek için NuGet Paket Yöneticisi'ni açın ve IronOCR'u arayın. Projeyi seçin ve Yükle düğmesine tıklayın.

Blazor'da Görüntüden Metin Okuma, Şekil 6: NuGet Paket Yöneticisinde IronOcr paketini kur NuGet Paket Yöneticisinde IronOcr paketini yükleyin

_Imports.razor dosyasında IronOCR ad alanını ekleyin:

@using IronOCR
@using IronOCR
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@using IronOCR
$vbLabelText   $csharpLabel

Blazor UI Bileşeni Oluşturun

Bir bileşen dinamik davranış sergilemek için bir kullanıcı arayüzü ile iş mantığı temsil eder. Blazor, uygulamalarını inşa etmek için Razor Bileşenlerini kullanır. Bu bileşenler iç içe geçebilir, tekrar kullanılabilir ve projeler arasında paylaşılabilir. Varsayılan olarak, uygulamada Counter ve FetchData sayfaları sağlanır; sadelik için bunları kaldırıyoruz.

Sayfalar klasörüne, BlazorReadText uygulaması altındaki sağ tıklayın ve ardından Ekle > Razor Bileşeni seçin. Razor Bileşeni bulamazsanız, Yeni Öğe'yi tıklayın ve C# bileşenlerinden "Razor Bileşeni"ni seçin. Bileşene "OCR.razor" adı verin ve Ekle'yi tıklayın.

Blazor'da Görüntüden Metin Okuma, Şekil 7: Yeni bir Razor Bileşeni ekleyin Yeni Razor Bileşeni ekleyin

Bu razor sayfası için en iyi uygulama olarak kodu başka bir sınıfla ayırmaktır. Tekrar sayfalar klasörüne sağ tıklayın ve Ekle > Sınıf'ı seçin. Sınıfa sayfa ismiyle aynı ismi verin ve Ekle'yi tıklayın. Blazor akıllı bir framework'tür ve bu sınıfı aynı adı paylaşan sayfa ile etiketler.

Blazor'da Görüntüden Metin Okuma, Şekil 8: OCR.razor Razor Bileşeni için bir OCR.razor.cs kod dosyası oluşturun OCR.razor.cs Razor Bileşeni için bir OCR.razor kod dosyası oluşturun

Simdi, IronOCR kullanarak görüntü verilerini okuyacak olan asil kod uygulamasina gececegiz.

Blazor OCR.razor UI Komponent Kaynak kodu, Görüntü Verilerini Okuma

Bir resimdeki metni tanimak icin resmi yukleyin, ikili veriye dönüştürun ve sonra metni cikarmak icin IronOCR yöntemini uygulayin.

OCR.razor.cs sınıfını açın ve aşağıdaki örnek kaynak kodunu yazın:

using BlazorInputFile;
using Microsoft.AspNetCore.Components;
using IronOcr;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace BlazorReadText.Pages
{
    public class OCRModel : ComponentBase
    {
        // Holds the extracted text from the image
        protected string imageText;

        // Holds the base64 string preview of the image
        protected string imagePreview;

        // Byte array to store uploaded image data
        private byte[] imageFileBytes;

        // Default status message for file upload
        const string DefaultStatus = "Maximum size allowed for the image is 4 MB";
        protected string status = DefaultStatus;

        // Maximum file size allowed (4MB)
        const int MaxFileSize = 4 * 1024 * 1024;

        // Method to handle image preview and size/type validation
        protected async Task ViewImage(IFileListEntry[] files)
        {
            var file = files.FirstOrDefault();
            if (file == null)
            {
                return;
            }

            if (file.Size > MaxFileSize)
            {
                status = $"The file size is {file.Size} bytes, which exceeds the allowed limit of {MaxFileSize} bytes.";
                return;
            }

            if (!file.Type.Contains("image"))
            {
                status = "Please upload a valid image file.";
                return;
            }

            using (var memoryStream = new MemoryStream())
            {
                await file.Data.CopyToAsync(memoryStream);
                imageFileBytes = memoryStream.ToArray();
                string base64String = Convert.ToBase64String(imageFileBytes, 0, imageFileBytes.Length);
                imagePreview = $"data:image/png;base64,{base64String}";
                status = DefaultStatus;
            }
        }

        // Method to extract text from the uploaded image using IronOCR
        protected private async Task GetText()
        {
            if (imageFileBytes != null)
            {
                using (var ocr = new IronTesseract())
                using (var input = new OcrInput(imageFileBytes))
                {
                    OcrResult result = ocr.Read(input);
                    imageText = result.Text;
                }
            }
        }
    }
}
using BlazorInputFile;
using Microsoft.AspNetCore.Components;
using IronOcr;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace BlazorReadText.Pages
{
    public class OCRModel : ComponentBase
    {
        // Holds the extracted text from the image
        protected string imageText;

        // Holds the base64 string preview of the image
        protected string imagePreview;

        // Byte array to store uploaded image data
        private byte[] imageFileBytes;

        // Default status message for file upload
        const string DefaultStatus = "Maximum size allowed for the image is 4 MB";
        protected string status = DefaultStatus;

        // Maximum file size allowed (4MB)
        const int MaxFileSize = 4 * 1024 * 1024;

        // Method to handle image preview and size/type validation
        protected async Task ViewImage(IFileListEntry[] files)
        {
            var file = files.FirstOrDefault();
            if (file == null)
            {
                return;
            }

            if (file.Size > MaxFileSize)
            {
                status = $"The file size is {file.Size} bytes, which exceeds the allowed limit of {MaxFileSize} bytes.";
                return;
            }

            if (!file.Type.Contains("image"))
            {
                status = "Please upload a valid image file.";
                return;
            }

            using (var memoryStream = new MemoryStream())
            {
                await file.Data.CopyToAsync(memoryStream);
                imageFileBytes = memoryStream.ToArray();
                string base64String = Convert.ToBase64String(imageFileBytes, 0, imageFileBytes.Length);
                imagePreview = $"data:image/png;base64,{base64String}";
                status = DefaultStatus;
            }
        }

        // Method to extract text from the uploaded image using IronOCR
        protected private async Task GetText()
        {
            if (imageFileBytes != null)
            {
                using (var ocr = new IronTesseract())
                using (var input = new OcrInput(imageFileBytes))
                {
                    OcrResult result = ocr.Read(input);
                    imageText = result.Text;
                }
            }
        }
    }
}
Imports BlazorInputFile
Imports Microsoft.AspNetCore.Components
Imports IronOcr
Imports System.IO
Imports System.Linq
Imports System.Threading.Tasks

Namespace BlazorReadText.Pages
	Public Class OCRModel
		Inherits ComponentBase

		' Holds the extracted text from the image
		Protected imageText As String

		' Holds the base64 string preview of the image
		Protected imagePreview As String

		' Byte array to store uploaded image data
		Private imageFileBytes() As Byte

		' Default status message for file upload
		Private Const DefaultStatus As String = "Maximum size allowed for the image is 4 MB"
		Protected status As String = DefaultStatus

		' Maximum file size allowed (4MB)
		Private Const MaxFileSize As Integer = 4 * 1024 * 1024

		' Method to handle image preview and size/type validation
		Protected Async Function ViewImage(ByVal files() As IFileListEntry) As Task
			Dim file = files.FirstOrDefault()
			If file Is Nothing Then
				Return
			End If

			If file.Size > MaxFileSize Then
				status = $"The file size is {file.Size} bytes, which exceeds the allowed limit of {MaxFileSize} bytes."
				Return
			End If

			If Not file.Type.Contains("image") Then
				status = "Please upload a valid image file."
				Return
			End If

			Using memoryStream As New MemoryStream()
				Await file.Data.CopyToAsync(memoryStream)
				imageFileBytes = memoryStream.ToArray()
				Dim base64String As String = Convert.ToBase64String(imageFileBytes, 0, imageFileBytes.Length)
				imagePreview = $"data:image/png;base64,{base64String}"
				status = DefaultStatus
			End Using
		End Function

		' Method to extract text from the uploaded image using IronOCR
		Private Protected Async Function GetText() As Task
			If imageFileBytes IsNot Nothing Then
				Using ocr = New IronTesseract()
				Using input = New OcrInput(imageFileBytes)
					Dim result As OcrResult = ocr.Read(input)
					imageText = result.Text
				End Using
				End Using
			End If
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

Yukarıdaki kodda:

  • ViewImage yöntemi, yüklenen görüntü dosyasını işlemek için kullanılır. Dosyanın bir görüntü olup olmadığını doğrular ve boyutun belirtilen sınırı karşılayıp karşılamadığını kontrol eder. Dosya boyutunda veya dosya türünde herhangi bir hata oluşursa, bir if-else bloğu kullanılarak işlenir. Daha sonra görüntü MemoryStream'a kopyalanır ve IronOcr.OcrInput dosyası görüntüyü ikili formatta kabul edebildiğinden bir bayt dizisine dönüştürülür.
  • GetText metodu, IronOCR kullanarak giriş görüntüsünden metin çıkartmak için kullanılır. IronOCR, Tesseract 5 motorunu kullanir ve 125'ten fazla dili destekler.

Çıkartılan metin, gösterim için imageText değişkeninde depolanır. Kutuphane, ekstra bir ayarlama gerektirmeden Ingilizce metin görüntülerini destekler. Farkli dilleri kullanmayi bu kod ornegi sayfasinda daha fazla ogrenebilirsiniz.

Blazor On Yuz UI Komponent Kaynak Kodu

Sonraki adim, uygulama icin UI oluşturmaktir. OCR.razor dosyasını açın ve aşağıdaki kodu yazın:

@page "/IronOCR"
@inherits OCRModel

<h2>Optical Character Recognition (OCR) Using Blazor and IronOCR Software</h2>

<div class="row">
    <div class="col-md-5">
        <textarea disabled class="form-control" rows="10" cols="15">@imageText</textarea>
    </div>
    <div class="col-md-5">
        <div class="image-container">
            <img class="preview-image" width="800" height="500" src=@imagePreview>
        </div>
        <BlazorInputFile.InputFile OnChange="@ViewImage" />
        <p>@status</p>
        <hr />
        <button class="btn btn-primary btn-lg" @onclick="GetText">
            Extract Text
        </button>
    </div>
</div>

Yukaridaki kodda, UI su unsurlari icerir:

  • Bir görüntü dosyasi secmek icin bir giris dosya etiketi.
  • Görüntüyu göstermek icin bir görüntü etiketi.
  • GetText yöntemini tetikleyen bir buton.
  • Görüntü verilerinden cikarilan metni göstermek icin bir metin alani.

Gezinme Menusune Baglanti Ekleyin

Son olarak, Paylaşılan klasördeki NavMenu.razor dosyasına OCR.razor sayfasına bir bağlantı ekleyin:

<div class="nav-item px-3">
    <NavLink class="nav-link" href="IronOCR">
        <span class="oi oi-plus" aria-hidden="true"></span> Read Image Text
    </NavLink>
</div>
<div class="nav-item px-3">
    <NavLink class="nav-link" href="IronOCR">
        <span class="oi oi-plus" aria-hidden="true"></span> Read Image Text
    </NavLink>
</div>
HTML

Counter ve FetchData bağlantılarını kaldırın, çünkü ihtiyaç yok.

Her sey simdi tamamlandi ve kullanima hazır. Uygulamayi calistirmak icin F5 tusuna basin.

On yuz, asagidaki gibi gorunmelidir:

Blazor'da Görüntüden Metin Okuma, Şekil 9: Blazor Sunucu Uygulaması'nın UI'si Blazor Sunucu Uygulamasinin UI'si

Bir görüntü yukleyelim ve ciktiyi gormek icin metni cikalim.

Blazor'da Görüntüden Metin Okuma, Şekil 10: Yüklenen görüntü ve çıkartılan metinler Yuklenmis görüntüler ve cikarilan metinler

Cikarilan text temizdir ve metin alanindan kopyalanabilir.

Özet

Bu makalede, Blazor Sunucu Uygulamasindaki Blazor UI Komponentinin arkasinda bir kod ile resimlerden metin okuma işleminin nasıl yapilacagi göstermistir. IronOCR, herhangi bir C# temelli uygulamada metin cikarmak icin çok yonlu bir kutuphanedir. En yeni .NET Framework'u destekler ve Razor uygulamalari ile iyi bir sekilde kullanilabilir. IronOCR, Windows, Linux, macOS, Docker, Azure, AWS ve MAUI uzerinde desteklenen bir capraz platform kutuphanedir. Ek olarak, IronOCR, Tesseract'in en iyi sonuclarini kullanarak yuksek bir dogruluk sunar, ekstra ayarlar gerektirmez. Çok sayfalı kareli TIFF, PDF dosyaları ve tüm popüler görüntü formatlarını destekler. Ayrica, resimlerden barkod degerlerini de okuyabilirsiniz.

Ücretsiz bir deneme lisansi ile IronOCR'yi da deneyebilirsiniz. Yazilim kutuphanesini buradan indirin.

Sıkça Sorulan Sorular

Blazor Server Uygulamasında bir görüntüden metin nasıl okuyabilirim?

Blazor Server Uygulamasında bir görüntüden metin okumak için IronOCR kullanabilirsiniz. Önce, BlazorInputFile paketini kullanarak görüntüyü yükleyin, ardından görüntüden metin çıkartmak için IronOCR'da GetText metodunu kullanın.

Bir Blazor Server Uygulaması için OCR kurmak için hangi adımlar gereklidir?

Bir Blazor Server Uygulaması için OCR kurmak için, ASP.NET ve Web Geliştirme iş yükü ile Visual Studio'nun yüklü olduğundan emin olun. Ardından, yeni bir Blazor Server Uygulaması oluşturun ve IronOCR'u NuGet Paket Yöneticisi aracılığıyla kurun.

Blazor uygulamasında dosya yüklemeleri nasıl ele alınır?

Blazor uygulamasında dosya yüklemeleri, BlazorInputFile paketi kullanılarak yönetilebilir. Bu paket, tek veya çoklu dosya yüklemesine izin verir, bu da OCR için resimleri işlemede önemlidir.

IronOCR metin çıkartmada birden fazla dili destekleyebilir mi?

Evet, IronOCR birden fazla dil için metin çıkarımını destekler. Farklı dillerdeki metinleri resimlerden yüksek doğrulukla tanıyan Tesseract 5 motorunu kullanır.

IronOCR'yi çapraz platform uygulamalarında kullanmanın avantajları nelerdir?

IronOCR, Windows, Linux, macOS, Docker, Azure, AWS ve MAUI ile uyumluluk da dahil olmak üzere çapraz platform uygulamaları için çeşitli avantajlar sunar. Bu, onu çeşitli ortamlarda OCR için çok yönlü bir seçenek haline getirir.

IronOCR'yi Blazor bileşeninde kullanarak bir görüntüden metni nasıl çıkarırsınız?

Blazor bileşeninde, önce resim dosyasını yükleyerek, ardından resmi işlemek ve metni çıkarmak için IronOCR'nin GetText metodunu çağırmak için OCR.razor.cs sınıfını kullanarak bir resimden metin çıkarabilirsiniz.

OCR işlevselliği için bir Blazor UI'nin ana bileşenleri nelerdir?

OCR işlevselliği için bir Blazor UI, görüntü seçimi için bir giriş dosyası etiketi, önizleme için bir görüntü etiketi, OCR sürecini başlatmak için bir düğme ve çıkarılan metni görüntülemek için bir metin alanı içerir.

Bir Blazor uygulamasında OCR sayfasına nasıl geçiş yapabilirim?

Bir Blazor uygulamasında OCR sayfasına gitmek için, Ortaklar klasörü altındaki NavMenu.razor dosyasına bir nav öğesi ekleyin. OCR sayfasına işaret eden bir NavLink dahil edin.

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