# PowerShell script using Windows built-in OCR Add-Type -AssemblyName System.Drawing Add-Type -AssemblyName System.Runtime.WindowsRuntime Add-Type -AssemblyName Windows.Foundation Add-Type -AssemblyName Windows.Graphics.Imaging Add-Type -AssemblyName Windows.Media.Ocr $winRtTypes = [Windows.Media.Ocr.OcrEngine]::GetType() # Load the image $imagePath = "D:\Yuzu-GCA\screen2.png" $bitmap = [System.Drawing.Bitmap]::FromFile($imagePath) Write-Host "Image size: $($bitmap.Width) x $($bitmap.Height)" # Convert to stream $ms = New-Object System.IO.MemoryStream $bitmap.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png) $bitmap.Dispose() # Create BitmapDecoder $ms.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null $randomAccessStream = New-Object Windows.Storage.Streams.InMemoryRandomAccessStream $outputStream = $randomAccessStream.GetOutputStreamAt(0) $dataWriter = New-Object Windows.Storage.Streams.DataWriter($outputStream) $bytes = $ms.ToArray() $dataWriter.WriteBytes($bytes) $dataWriter.StoreAsync().GetAwaiter().GetResult() | Out-Null $dataWriter.FlushAsync().GetAwaiter().GetResult() | Out-Null $ms.Dispose() $decoder = [Windows.Graphics.Imaging.BitmapDecoder]::CreateAsync($randomAccessStream).GetAwaiter().GetResult() $softwareBitmap = [Windows.Graphics.Imaging.SoftwareBitmap]::Convert($decoder.GetSoftwareBitmapAsync().GetAwaiter().GetResult(), [Windows.Graphics.Imaging.BitmapPixelFormat]::Bgra8, [Windows.Graphics.Imaging.BitmapAlphaMode]::Premultiplied) # Perform OCR $engine = [Windows.Media.Ocr.OcrEngine]::TryCreateFromUserProfileLanguages() $result = $engine.RecognizeAsync($softwareBitmap).GetAwaiter().GetResult() # Output results Write-Host "Recognized text:" Write-Host "====================" foreach ($line in $result.Lines) { Write-Host $line.Text }