Windows Uygulama SDK'sında Yapay Zeka Metin Tanıma (OCR) kullanmaya başlama
Makale
Önemli
Windows Uygulama SDK'sının en son deneysel kanal sürümünde kullanılabilir.
Windows Uygulama SDK'sı deneysel kanalı, geliştirmenin erken aşamalarında API'leri ve özellikleri içerir. Deneysel kanaldaki tüm API'ler kapsamlı düzeltmelere ve hataya neden olan değişikliklere tabidir ve herhangi bir zamanda sonraki sürümlerden kaldırılabilir. Deneysel özellikler üretim ortamlarında kullanılmak üzere desteklenmez ve bunları kullanan uygulamalar Microsoft Store'da yayımlanamaz.
Bağımsız uygulamalar desteklenmez.
Optik karakter tanıma (OCR) olarak da bilinen metin tanıma, görüntülerdeki metinleri algılayıp ayıklayıp makine tarafından okunabilir karakter akışlarına dönüştürebilen yapay zeka (AI) destekli bir dizi API aracılığıyla Windows Uygulama SDK'sı tarafından desteklenir.
Bu API'ler karakterleri, sözcükleri, satırları, çokgen metin sınırlarını tanımlayabilir ve her eşleşme için güvenilirlik düzeyleri sağlayabilir. Ayrıca, nöral işlem birimine (NPU) sahip cihazlarda donanım hızlandırma ile özel olarak desteklenir ve bu da onları Windows platformu SDK'sıeski Windows.Media.Ocr.OcrEngine API'lerinden daha hızlı ve daha doğru hale getirir.
Windows Uygulama SDK'sı GitHub deposunda (başlıkta OCR dahil) yeni bir sorun oluşturarak veya mevcut bir soruna yanıt vererek bu API'ler ve işlevleri hakkında geri bildirim sağlayın.
Windows Uygulama SDK'sı ve Yapay Zeka Metin Tanıma ile ne yapabilirim?
Bir görüntüdeki metni tanımlamak ve tanımak için Windows Uygulama SDK'sında yeni Yapay Zeka Metin Tanıma özelliklerini kullanın. Tanınan metin için metin sınırlarını ve güvenilirlik puanlarını da alabilirsiniz.
Dosyadan ImageBuffer oluşturma
Bu örnekte, bir görüntü dosyasından LoadImageBufferFromFileAsync almak için bir işlevi çağırıyoruz.
LoadImageBufferFromFileAsync işlevinde aşağıdaki adımları tamamlarız:
Belirtilen dosya yolundan bir StorageFile nesnesi oluşturun.
OpenAsynckullanarak StorageFile üzerinde bir akış açın.
RecognizeTextFromImage 'i çağırarak, ImageBuffer'ten tanınan metni elde edin.
Bir wstringstream nesnesi oluşturun ve tanınan metinle yükleyin.
Dizeyi döndür.
Not
EnsureModelIsReady işlevi, metin tanıma modelinin hazır olma durumunu denetlemek (ve gerekirse yüklemek) için kullanılır.
C#
using Microsoft.Windows.Vision;
using Microsoft.Graphics.Imaging;
using Windows.Graphics.Imaging;
using Windows.Storage;
using Windows.Storage.Streams;
publicasync Task<string> RecognizeTextFromSoftwareBitmap(SoftwareBitmap bitmap)
{
TextRecognizer textRecognizer = await EnsureModelIsReady();
ImageBuffer imageBuffer = ImageBuffer.CreateBufferAttachedToBitmap(bitmap);
RecognizedText recognizedText = textRecognizer.RecognizeTextFromImage(imageBuffer);
StringBuilder stringBuilder = new StringBuilder();
foreach (var line in recognizedText.Lines)
{
stringBuilder.AppendLine(line.Text);
}
return stringBuilder.ToString();
}
publicasync Task<TextRecognizer> EnsureModelIsReady()
{
if (!TextRecognizer.IsAvailable())
{
var loadResult = await TextRecognizer.MakeAvailableAsync();
if (loadResult.Status != PackageDeploymentStatus.CompletedSuccess)
{
thrownew Exception(loadResult.ExtendedError().Message);
}
}
returnawait TextRecognizer.CreateAsync();
}
namespace winrt
{
using namespace Microsoft::Windows::Vision;
using namespace Microsoft::Windows::Imaging;
using namespace Windows::Graphics::Imaging;
}
winrt::IAsyncOperation<winrt::TextRecognizer> EnsureModelIsReady();
winrt::IAsyncOperation<winrt::hstring> RecognizeTextFromSoftwareBitmap(winrt::SoftwareBitmap const& bitmap)
{
winrt::TextRecognizer textRecognizer = co_await EnsureModelIsReady();
winrt::ImageBuffer imageBuffer = winrt::ImageBuffer::CreateBufferAttachedToBitmap(bitmap);
winrt::RecognizedText recognizedText = textRecognizer.RecognizeTextFromImage(imageBuffer);
std::wstringstream stringStream;
for (const auto& line : recognizedText.Lines())
{
stringStream << line.Text().c_str() << std::endl;
}
co_return winrt::hstring{stringStream.view()};
}
winrt::IAsyncOperation<winrt::TextRecognizer> EnsureModelIsReady()
{
if (!winrt::TextRecognizer::IsAvailable())
{
auto loadResult = co_await winrt::TextRecognizer::MakeAvailableAsync();
if (loadResult.Status() != winrt::PackageDeploymentStatus::CompletedSuccess)
{
throw winrt::hresult_error(loadResult.ExtendedError());
}
}
co_return winrt::TextRecognizer::CreateAsync();
}
Sözcük sınırlarını ve güveni alma
Burada, bir SoftwareBitmap nesnesindeki her sözcüğün Sınırlayıcı Kutusu'nun, Kılavuz öğesi üzerinde renk kodlu çokgenlerden oluşan bir koleksiyon şeklinde nasıl görselleştirileceğini göstereceğiz.
Not
Bu örnekte textrecognizer nesnesinin önceden oluşturulduğunu ve işleve geçirildiğini varsayarız.
C#
using Microsoft.Windows.Vision;
using Microsoft.Graphics.Imaging;
using Windows.Graphics.Imaging;
using Windows.Storage;
using Windows.Storage.Streams;
publicvoidVisualizeWordBoundariesOnGrid(
SoftwareBitmap bitmap,
Grid grid,
TextRecognizer textRecognizer)
{
ImageBuffer imageBuffer = ImageBuffer.CreateBufferAttachedToBitmap(bitmap);
RecognizedText result = textRecognizer.RecognizeTextFromImage(imageBuffer);
SolidColorBrush greenBrush = new SolidColorBrush(Microsoft.UI.Colors.Green);
SolidColorBrush yellowBrush = new SolidColorBrush(Microsoft.UI.Colors.Yellow);
SolidColorBrush redBrush = new SolidColorBrush(Microsoft.UI.Colors.Red);
foreach (var line in result.Lines)
{
foreach (var word in line.Words)
{
PointCollection points = new PointCollection();
var bounds = word.BoundingBox;
points.Add(bounds.TopLeft);
points.Add(bounds.TopRight);
points.Add(bounds.BottomRight);
points.Add(bounds.BottomLeft);
Polygon polygon = new Polygon();
polygon.Points = points;
polygon.StrokeThickness = 2;
if (word.Confidence < 0.33)
{
polygon.Stroke = redBrush;
}
elseif (word.Confidence < 0.67)
{
polygon.Stroke = yellowBrush;
}
else
{
polygon.Stroke = greenBrush;
}
grid.Children.Add(polygon);
}
}
}
namespace winrt
{
using namespace Microsoft::Windows::Vision;
using namespace Microsoft::Windows::Imaging;
using namespace Micrsooft::Windows::UI::Xaml::Controls;
using namespace Micrsooft::Windows::UI::Xaml::Media;
using namespace Micrsooft::Windows::UI::Xaml::Shapes;
}
void VisualizeWordBoundariesOnGrid(
winrt::SoftwareBitmap const& bitmap,
winrt::Grid const& grid,
winrt::TextRecognizer const& textRecognizer)
{
winrt::ImageBuffer imageBuffer = winrt::ImageBuffer::CreateBufferAttachedToBitmap(bitmap);
winrt::RecognizedText result = textRecognizer.RecognizeTextFromImage(imageBuffer);
auto greenBrush = winrt::SolidColorBrush(winrt::Microsoft::UI::Colors::Green);
auto yellowBrush = winrt::SolidColorBrush(winrt::Microsoft::UI::Colors::Yellow);
auto redBrush = winrt::SolidColorBrush(winrt::Microsoft::UI::Colors::Red);
for (const auto& line : recognizedText.Lines())
{
for (const auto& word : line.Words())
{
winrt::PointCollection points;
const auto& bounds = word.BoundingBox();
points.Append(bounds.TopLeft);
points.Append(bounds.TopRight);
points.Append(bounds.BottomRight);
points.Append(bounds.BottomLeft);
winrt::Polygon polygon;
polygon.Points(points);
polygon.StrokeThickness(2);
if (word.Confidence() < 0.33)
{
polygon.Stroke(redBrush);
}
else if (word.Confidence() < 0.67)
{
polygon.Stroke(yellowBrush);
}
else
{
polygon.Stroke(greenBrush);
}
grid.Children().Add(polygon);
}
}
}
Görüntülerdeki metinleri algılayıp ayıklayıp makine tarafından okunabilir karakter akışlarına dönüştürebilen, yapay zeka (AI) tarafından desteklenen Windows Uygulama SDK'sı API'leri hakkında bilgi edinin.
Windows Uygulama SDK'sı ile birlikte gelen ve görüntüleri ölçeklendirmek ve keskinleştirmenin yanı sıra görüntüdeki nesneleri tanımlamak için kullanılabilen yeni Yapay Zeka (AI) görüntüleme özellikleri hakkında bilgi edinin.
Yapay zeka (AI) tarafından desteklenen ve görüntüleri hem ölçeklendirebilen hem de netleştirebilen (Görüntü Süper Çözünürlüğü) ve görüntü içindeki nesneleri (Görüntü Segmentasyonu) tanımlayan Windows Uygulama SDK'sı API'leri hakkında bilgi edinin.
Microsoft'un cihaz içi işleme ve sohbet oluşturma, metin üzerinde düşünme, matematik çözme, kod oluşturma ve daha fazlasını sağlayan en güçlü NPU ayarlı dil modeli Phi Silica gibi yerel dil modellerine erişebilen Windows Uygulama SDK'sı API'leri hakkında bilgi edinin.
Windows Uygulama SDK'sı ile birlikte gelecek olan ve yerel dil modellerine erişmek için kullanılabilen yeni Phi Silica API'leri hakkında bilgi edinin. Sohbet, matematik çözme, kod oluşturma, metin üzerinde mantık yürütme ve daha fazlası için yerel dil modellerine erişebilirsiniz.