Jak odczytywać zrzuty ekranu za pomocą IronOCR w języku C
Metoda ReadScreenshot z IronOCR wydajnie wyodrębnia tekst z zrzutów ekranu, rozwiązując problemy z różnymi wymiarami i zakłóceniami, przy jednoczesnym wsparciu powszechnych formatów plików takich jak PNG, JPG i BMP.
Zrzuty ekranu to szybki sposób na udostępnianie informacji i przechwytywanie kluczowych danych. Jednak wyodrębnianie tekstu ze zrzutów ekranu okazało się trudne ze względu na różne wymiary i zakłócenia. To sprawia, że zrzuty ekranu są trudnym medium dla OCR.
IronOCR rozwiązuje ten problem, oferując specjalistyczne metody, takie jak ReadScreenshot. Metoda ta jest zoptymalizowana pod kątem odczytywania zrzutów ekranu i wyodrębniania z nich informacji, obsługując jednocześnie popularne formaty plików. W przeciwieństwie do standardowych metod OCR, ta metoda stosuje specyficzne optymalizacje przetwarzania wstępnego dostosowane do treści zrzutów ekranu, w tym automatyczną redukcję szumów i poprawę kontrastu.
Aby skorzystać z tej funkcji, zainstaluj pakiet IronOcr.Extension.AdvancedScan. To rozszerzenie zapewnia zaawansowane funkcje przetwarzania obrazu, które zwiększają dokładność rozpoznawania tekstu na zrzutach ekranu, szczególnie w przypadku elementów interfejsu użytkownika, czcionek systemowych i tekstu z wygładzaniem krawędzi w nowoczesnych aplikacjach.
Szybki start: Odczyt tekstu ze zrzutu ekranu
Rozpocznij w kilka sekund, używając ReadScreenshot z IronOCR – załaduj swój zrzut ekranu do OcrInput, wywołaj ReadScreenShot i natychmiast uzyskaj dostęp do wyodrębnionego tekstu, wartości zaufania oraz obszarów tekstowych za pomocą OcrPhotoResult. To najszybszy sposób na przekształcenie obrazów w tekst, który można wykorzystać, przy minimalnej konfiguracji.
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
Skopiuj i uruchom ten fragment kodu.
OcrPhotoResult result = new IronTesseract().ReadScreenShot(new OcrInput().LoadImage("screenshot.png")); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
W niniejszym przewodniku pokazano, jak używać IronOCR do rozpoznawania tekstu na zrzutach ekranu, omawiając przykłady i właściwości obiektu wynikowego. Zbadamy zaawansowane scenariusze, takie jak przetwarzanie określonych regionów, obsługa treści wielojęzycznych oraz optymalizacja wydajności przetwarzania wsadowego.
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do odczytu zrzutów ekranu
- Zaimportuj zrzuty ekranu do przetworzenia
- Użyj metody
ReadScreenshot,aby wyodrębnić tekst z obrazu - Pobierz wyodrębnione dane za pomocą właściwości OcrPhotoResult w celu dalszego przetwarzania
- Zapisz lub wyeksportuj wyodrębniony tekst w razie potrzeby
Jak wyodrębnić tekst ze zrzutów ekranu za pomocą ReadScreenshot?
Aby odczytać zrzut ekranu w IronOCR, użyj metody ReadScreenshot, która przyjmuje OcrInput jako parametr. Ta metoda jest bardziej zoptymalizowana dla zrzutów ekranu niż standardowy odpowiednik Read biblioteki. Optymalizacja obejmuje automatyczne wykrywanie elementów interfejsu użytkownika, lepszą obsługę czcionek z wygładzaniem krawędzi oraz ulepszone rozpoznawanie czcionek systemowych w różnych systemach operacyjnych.
- Metoda ta działa obecnie w przypadku języków takich jak angielski, chiński, japoński, koreański oraz alfabetów opartych na alfabecie łacińskim.
- Korzystanie z zaawansowanego skanowania w środowisku .NET Framework wymaga, aby projekt działał na architekturze x64.
)}]
Jakie rodzaje zrzutów ekranu sprawdzają się najlepiej?
Poniżej znajduje się nasz wkład dotyczący przykładu kodu; Demonstrujemy wszechstronność tej metody, łącząc różne czcionki i rozmiary tekstu. Metoda ReadScreenshot doskonale rozpoznaje:
- Czcionki interfejsu użytkownika systemu (Windows, macOS, Linux)
- Tekst z wygładzaniem krawędzi z nowoczesnych aplikacji
- Mieszane rozmiary i style czcionek
- Tekst nałożony na złożone tło
- Wyniki konsoli i zrzuty ekranu terminala
- Treści przeglądarki z różnymi czcionkami internetowymi
Aby uzyskać optymalne wyniki, należy wykonać zrzuty ekranu w natywnej rozdzielczości bez kompresji. Metoda obsługuje różne formaty obrazów, ale format PNG najlepiej zachowuje czytelność tekstu dzięki bezstratnej kompresji.

Jak zaimplementować metodę ReadScreenshot?
:path=/static-assets/ocr/content-code-examples/how-to/read-screenshot-read-screenshot.cs
using IronOcr;
using System;
using System.Linq;
// Instantiate OCR engine
var ocr = new IronTesseract();
using var inputScreenshot = new OcrInput();
inputScreenshot.LoadImage("screenshotOCR.png");
// Perform OCR
OcrPhotoResult result = ocr.ReadScreenShot(inputScreenshot);
// Output screenshot information
Console.WriteLine(result.Text);
Console.WriteLine(result.TextRegions.First().Region.X);
Console.WriteLine(result.TextRegions.Last().Region.Width);
Console.WriteLine(result.Confidence);
Imports IronOcr
Imports System
Imports System.Linq
' Instantiate OCR engine
Private ocr = New IronTesseract()
Private inputScreenshot = New OcrInput()
inputScreenshot.LoadImage("screenshotOCR.png")
' Perform OCR
Dim result As OcrPhotoResult = ocr.ReadScreenShot(inputScreenshot)
' Output screenshot information
Console.WriteLine(result.Text)
Console.WriteLine(result.TextRegions.First().Region.X)
Console.WriteLine(result.TextRegions.Last().Region.Width)
Console.WriteLine(result.Confidence)
W przypadku złożonych scenariuszy należy usprawnić proces odczytu zrzutów ekranu poprzez dodatkowe przetwarzanie wstępne:
using IronOcr;
using System;
// Configure OCR engine with specific settings for screenshots
var ocr = new IronTesseract()
{
// Set language for better accuracy with non-English content
Language = OcrLanguage.English,
// Configure for screen-resolution images
Configuration = new TesseractConfiguration()
{
PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
// Enable whitelist for specific characters if needed
WhiteListCharacters = null
}
};
using var inputScreenshot = new OcrInput();
// Load screenshot with specific DPI setting for consistency
inputScreenshot.LoadImage("screenshotOCR.png", 96); // Standard screen DPI
// Apply preprocessing for better accuracy
inputScreenshot.DeNoise(); // Remove screenshot artifacts
inputScreenshot.Sharpen(); // Enhance text edges
// Perform OCR with error handling
try
{
OcrPhotoResult result = ocr.ReadScreenShot(inputScreenshot);
// Process results with confidence threshold
if (result.Confidence > 0.8)
{
Console.WriteLine($"High confidence text extraction: {result.Text}");
}
else
{
Console.WriteLine("Low confidence - consider image preprocessing");
}
}
catch (Exception ex)
{
Console.WriteLine($"OCR Error: {ex.Message}");
}
using IronOcr;
using System;
// Configure OCR engine with specific settings for screenshots
var ocr = new IronTesseract()
{
// Set language for better accuracy with non-English content
Language = OcrLanguage.English,
// Configure for screen-resolution images
Configuration = new TesseractConfiguration()
{
PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
// Enable whitelist for specific characters if needed
WhiteListCharacters = null
}
};
using var inputScreenshot = new OcrInput();
// Load screenshot with specific DPI setting for consistency
inputScreenshot.LoadImage("screenshotOCR.png", 96); // Standard screen DPI
// Apply preprocessing for better accuracy
inputScreenshot.DeNoise(); // Remove screenshot artifacts
inputScreenshot.Sharpen(); // Enhance text edges
// Perform OCR with error handling
try
{
OcrPhotoResult result = ocr.ReadScreenShot(inputScreenshot);
// Process results with confidence threshold
if (result.Confidence > 0.8)
{
Console.WriteLine($"High confidence text extraction: {result.Text}");
}
else
{
Console.WriteLine("Low confidence - consider image preprocessing");
}
}
catch (Exception ex)
{
Console.WriteLine($"OCR Error: {ex.Message}");
}
Imports IronOcr
Imports System
' Configure OCR engine with specific settings for screenshots
Dim ocr As New IronTesseract() With {
' Set language for better accuracy with non-English content
.Language = OcrLanguage.English,
' Configure for screen-resolution images
.Configuration = New TesseractConfiguration() With {
.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
' Enable whitelist for specific characters if needed
.WhiteListCharacters = Nothing
}
}
Using inputScreenshot As New OcrInput()
' Load screenshot with specific DPI setting for consistency
inputScreenshot.LoadImage("screenshotOCR.png", 96) ' Standard screen DPI
' Apply preprocessing for better accuracy
inputScreenshot.DeNoise() ' Remove screenshot artifacts
inputScreenshot.Sharpen() ' Enhance text edges
' Perform OCR with error handling
Try
Dim result As OcrPhotoResult = ocr.ReadScreenShot(inputScreenshot)
' Process results with confidence threshold
If result.Confidence > 0.8 Then
Console.WriteLine($"High confidence text extraction: {result.Text}")
Else
Console.WriteLine("Low confidence - consider image preprocessing")
End If
Catch ex As Exception
Console.WriteLine($"OCR Error: {ex.Message}")
End Try
End Using
Jakie właściwości zwraca OcrPhotoResult?

Wynik wyświetlany w konsoli pokazuje wyodrębnienie wszystkich fragmentów tekstu ze zrzutu ekranu. Przyjrzyjmy się właściwościom OcrPhotoResult i sposobom ich efektywnego wykorzystania:
Text: Wyodrębniony tekst z wejścia OCR. Ta właściwość zawiera cały rozpoznany tekst jako pojedynczy ciąg znaków, zachowując oryginalny układ z podziałami na linie i odstępami.Confidence: Właściwość podwójna wskazująca statystyczną pewność dokładności w skali od 0 do 1, gdzie 1 oznacza najwyższą pewność. Wykorzystaj to do wdrożenia kontroli jakości w swojej aplikacji.TextRegion: Tablica obiektówTextRegionzawierająca właściwości, które zwracają obszary, gdzie tekst został znaleziony na zrzucie ekranu. Domyślnie, wszystkieTextRegionto pochodna klasyRectanglez modeli IronOCR. Obejmuje to współrzędne x i y oraz wysokość i szerokość prostokąta.
Praca z TextRegions pozwala na:
- Wyodrębnianie tekstu z określonych obszarów zrzutów ekranu
- Zidentyfikuj lokalizacje elementów interfejsu użytkownika
- Tworzenie klikalnych nakładek na podstawie pozycji tekstu
- Wdrożenie przetwarzania OCR dostosowanego do regionu
Oto przykład przetwarzania poszczególnych fragmentów tekstu:
using IronOcr;
using System;
using System.Linq;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("screenshot.png");
OcrPhotoResult result = ocr.ReadScreenShot(input);
// Process each text region individually
foreach (var region in result.TextRegions)
{
Console.WriteLine($"Text: {region.Text}");
Console.WriteLine($"Location: X={region.Region.X}, Y={region.Region.Y}");
Console.WriteLine($"Size: {region.Region.Width}x{region.Region.Height}");
Console.WriteLine($"Confidence: {region.Confidence:P2}");
Console.WriteLine("---");
}
// Find specific UI elements by text content
var buttonRegion = result.TextRegions
.FirstOrDefault(r => r.Text.Contains("Submit", StringComparison.OrdinalIgnoreCase));
if (buttonRegion != null)
{
Console.WriteLine($"Found button at: {buttonRegion.Region.X}, {buttonRegion.Region.Y}");
}
using IronOcr;
using System;
using System.Linq;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("screenshot.png");
OcrPhotoResult result = ocr.ReadScreenShot(input);
// Process each text region individually
foreach (var region in result.TextRegions)
{
Console.WriteLine($"Text: {region.Text}");
Console.WriteLine($"Location: X={region.Region.X}, Y={region.Region.Y}");
Console.WriteLine($"Size: {region.Region.Width}x{region.Region.Height}");
Console.WriteLine($"Confidence: {region.Confidence:P2}");
Console.WriteLine("---");
}
// Find specific UI elements by text content
var buttonRegion = result.TextRegions
.FirstOrDefault(r => r.Text.Contains("Submit", StringComparison.OrdinalIgnoreCase));
if (buttonRegion != null)
{
Console.WriteLine($"Found button at: {buttonRegion.Region.X}, {buttonRegion.Region.Y}");
}
Imports IronOcr
Imports System
Imports System.Linq
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadImage("screenshot.png")
Dim result As OcrPhotoResult = ocr.ReadScreenShot(input)
' Process each text region individually
For Each region In result.TextRegions
Console.WriteLine($"Text: {region.Text}")
Console.WriteLine($"Location: X={region.Region.X}, Y={region.Region.Y}")
Console.WriteLine($"Size: {region.Region.Width}x{region.Region.Height}")
Console.WriteLine($"Confidence: {region.Confidence:P2}")
Console.WriteLine("---")
Next
' Find specific UI elements by text content
Dim buttonRegion = result.TextRegions _
.FirstOrDefault(Function(r) r.Text.Contains("Submit", StringComparison.OrdinalIgnoreCase))
If buttonRegion IsNot Nothing Then
Console.WriteLine($"Found button at: {buttonRegion.Region.X}, {buttonRegion.Region.Y}")
End If
End Using
Zaawansowane techniki przetwarzania zrzutów ekranu
Obsługa wielojęzycznych zrzutów ekranu
W przypadku pracy ze zrzutami ekranu zawierającymi wiele języków, IronOCR zapewnia solidną obsługę wielojęzyczną. Jest to przydatne w przypadku aplikacji międzynarodowych lub zrzutów ekranu z wielojęzycznych interfejsów użytkownika:
using IronOcr;
// Configure for multiple languages
var ocr = new IronTesseract();
ocr.AddSecondaryLanguage(OcrLanguage.ChineseSimplified);
ocr.AddSecondaryLanguage(OcrLanguage.Japanese);
using var input = new OcrInput();
input.LoadImage("multilingual-screenshot.png");
// Process with language detection
OcrPhotoResult result = ocr.ReadScreenShot(input);
Console.WriteLine($"Extracted multilingual text: {result.Text}");
using IronOcr;
// Configure for multiple languages
var ocr = new IronTesseract();
ocr.AddSecondaryLanguage(OcrLanguage.ChineseSimplified);
ocr.AddSecondaryLanguage(OcrLanguage.Japanese);
using var input = new OcrInput();
input.LoadImage("multilingual-screenshot.png");
// Process with language detection
OcrPhotoResult result = ocr.ReadScreenShot(input);
Console.WriteLine($"Extracted multilingual text: {result.Text}");
Imports IronOcr
' Configure for multiple languages
Dim ocr As New IronTesseract()
ocr.AddSecondaryLanguage(OcrLanguage.ChineseSimplified)
ocr.AddSecondaryLanguage(OcrLanguage.Japanese)
Using input As New OcrInput()
input.LoadImage("multilingual-screenshot.png")
' Process with language detection
Dim result As OcrPhotoResult = ocr.ReadScreenShot(input)
Console.WriteLine($"Extracted multilingual text: {result.Text}")
End Using
Optymalizacja wydajności przetwarzania wsadowego
Podczas przetwarzania wielu zrzutów ekranu należy zastosować następujące strategie optymalizacji:
using IronOcr;
using System.Collections.Generic;
using System.Threading.Tasks;
public async Task ProcessScreenshotBatchAsync(List<string> screenshotPaths)
{
var ocr = new IronTesseract();
// Process screenshots in parallel for better performance
var tasks = screenshotPaths.Select(async path =>
{
using var input = new OcrInput();
input.LoadImage(path);
// Apply consistent preprocessing
input.DeNoise();
var result = await Task.Run(() => ocr.ReadScreenShot(input));
return new { Path = path, Result = result };
});
var results = await Task.WhenAll(tasks);
// Process results
foreach (var item in results)
{
Console.WriteLine($"File: {item.Path}");
Console.WriteLine($"Text: {item.Result.Text}");
Console.WriteLine($"Confidence: {item.Result.Confidence:P2}");
}
}
using IronOcr;
using System.Collections.Generic;
using System.Threading.Tasks;
public async Task ProcessScreenshotBatchAsync(List<string> screenshotPaths)
{
var ocr = new IronTesseract();
// Process screenshots in parallel for better performance
var tasks = screenshotPaths.Select(async path =>
{
using var input = new OcrInput();
input.LoadImage(path);
// Apply consistent preprocessing
input.DeNoise();
var result = await Task.Run(() => ocr.ReadScreenShot(input));
return new { Path = path, Result = result };
});
var results = await Task.WhenAll(tasks);
// Process results
foreach (var item in results)
{
Console.WriteLine($"File: {item.Path}");
Console.WriteLine($"Text: {item.Result.Text}");
Console.WriteLine($"Confidence: {item.Result.Confidence:P2}");
}
}
Imports IronOcr
Imports System.Collections.Generic
Imports System.Threading.Tasks
Public Async Function ProcessScreenshotBatchAsync(screenshotPaths As List(Of String)) As Task
Dim ocr As New IronTesseract()
' Process screenshots in parallel for better performance
Dim tasks = screenshotPaths.Select(Async Function(path)
Using input As New OcrInput()
input.LoadImage(path)
' Apply consistent preprocessing
input.DeNoise()
Dim result = Await Task.Run(Function() ocr.ReadScreenShot(input))
Return New With {Key .Path = path, Key .Result = result}
End Using
End Function)
Dim results = Await Task.WhenAll(tasks)
' Process results
For Each item In results
Console.WriteLine($"File: {item.Path}")
Console.WriteLine($"Text: {item.Result.Text}")
Console.WriteLine($"Confidence: {item.Result.Confidence:P2}")
Next
End Function
Najlepsze praktyki dotyczące OCR zrzutów ekranu
- Jakość przechwytywania: Przechwytuj zrzuty ekranu w natywnej rozdzielczości bez skalowania
- Wybór formatu: Użyj formatu PNG, aby zachować jakość bez strat
- Przetwarzanie wstępne: zastosuj odpowiednie filtry w oparciu o zawartość zrzutu ekranu
- Progi pewności: Wdrożenie walidacji opartej na pewności dla krytycznych aplikacji
- Śledzenie postępów: W przypadku długotrwałych operacji należy wdrożyć śledzenie postępów
Typowe przypadki użycia
Metoda ReadScreenshot jest idealna do:
- Automatyczne testowanie i weryfikacja interfejsu użytkownika
- Systemy zarządzania zasobami cyfrowymi
- Narzędzia obsługi klienta do przechwytywania komunikatów o błędach
- Automatyzacja dokumentacji
- Narzędzia ułatwiające dostęp dla czytników ekranu
- Aplikacje do gier i streamingu
Integracja z funkcjami IronOCR
Funkcja odczytu zrzutów ekranu płynnie integruje się z innymi funkcjami IronOCR. Zapoznaj się z kompleksowymi funkcjami przetwarzania wyników OCR, aby eksportować dane w różnych formatach, lub zagłęb się w zaawansowaną konfigurację Tesseract w celu precyzyjnego dostrojenia dokładności rozpoznawania.
Podsumowanie
Metoda ReadScreenshot z IronOCR zapewnia potężne i zoptymalizowane rozwiązanie do wyodrębniania tekstu ze zrzutów ekranu. Dzięki specjalistycznemu przetwarzaniu wstępnemu, wysokiej dokładności i kompleksowym danym wynikowym umożliwia programistom tworzenie solidnych aplikacji, które niezawodnie przetwarzają zawartość zrzutów ekranu. Niezależnie od tego, czy budujesz narzędzia automatyzacji, rozwiązania dostępności, czy systemy ekstrakcji danych, metoda ReadScreenshot oferuje wydajność i dokładność wymaganą w środowiskach produkcyjnych.
Często Zadawane Pytania
Dlaczego wyodrębnianie OCR ze zrzutów ekranu jest wyzwaniem?
Zrzuty ekranu stwarzają unikalne wyzwania dla OCR ze względu na różne wymiary i poziomy szumów. IronOCR rozwiązuje te problemy dzięki specjalistycznej metodzie ReadScreenshot, która automatycznie redukuje szumy i zwiększa kontrast, optymalizując szczególnie pod kątem treści zrzutów ekranu.
Jakie formaty plików są obsługiwane dla OCR zrzutów ekranu?
Metoda ReadScreenshot IronOCR obsługuje popularne formaty plików graficznych, takie jak PNG, JPG i BMP, co czyni ją kompatybilną z większością narzędzi i aplikacji do tworzenia zrzutów ekranu.
Czym metoda ReadScreenshot różni się od standardowych metod OCR?
W przeciwieństwie do standardowych metod OCR w IronOCR, metoda ReadScreenshot zastosowuje specyficzne optymalizacje przetwarzania wstępnego dostosowane do treści zrzutów ekranu, w tym automatyczną redukcję szumów, poprawę kontrastu i lepszą obsługę wygładzonych czcionek oraz elementów interfejsu użytkownika.
Jaki dodatkowy pakiet jest wymagany do działania funkcji OCR zrzutów ekranu?
Aby używać funkcji ReadScreenshot w IronOCR, należy zainstalować pakiet IronOcr.Extension.AdvancedScan, który zapewnia zaawansowane możliwości widzenia komputerowego, podnosząc dokładność rozpoznawania tekstu zrzutów ekranu.
Jak szybko mogę zacząć wyodrębniać tekst z zrzutów ekranu?
Z IronOCR możesz w ciągu kilku sekund wyodrębnić tekst z zrzutów ekranu, ładując zrzut ekranu do OcrInput, wywołując ReadScreenShot i natychmiast uzyskując dostęp do wyodrębnionego tekstu, wskaźnika pewności i regionów tekstu za pośrednictwem OcrPhotoResult.
For what types of content does the screenshot OCR optimize?
Optymalizacja zrzutów ekranu IronOCR obejmuje automatyczne wykrywanie elementów interfejsu użytkownika, poprawioną rozpoznawalność systemowych czcionek w różnych systemach operacyjnych oraz lepszą obsługę wygładzonych tekstów, często spotykanych w nowoczesnych aplikacjach.
Czy mogę przetwarzać określone regiony zrzutu ekranu?
Tak, IronOCR obsługuje przetwarzanie określonych regionów zrzutów ekranu, umożliwiając skupienie działań na konkretnych obszarach zainteresowania zamiast przetwarzania całego obrazu, co może poprawić wydajność i dokładność.
Czy OCR zrzutów ekranu obsługuje treści w wielu językach?
Metoda ReadScreenshot IronOCR może obsługiwać treści w wielu językach na zrzutach ekranu, dzięki czemu nadaje się do międzynarodowych aplikacji i wielojęzycznych interfejsów użytkownika.

