Jak znaleźć tekst za pomocą widzenia komputerowego w C
IronOCR wykorzystuje widzenie komputerowe OpenCV do automatycznego wykrywania obszarów tekstu na obrazach przed przetwarzaniem OCR. To poprawia dokładność dla zaszumionego, wieloobszarowego lub zniekształconego tekstu, skupiając rozpoznawanie Tesseract tylko na zidentyfikowanych obszarach tekstowych, znacznie poprawiając wyniki ekstrakcji w porównaniu z przetwarzaniem całych obrazów.
Szybki start: Wykryj i przeprowadź OCR na głównym obszarze tekstowym
Ten przykład prezentuje natychmiastowe wydobycie tekstu: załaduj obraz, użyj Widzenia Komputerowego IronOCR do automatycznego wykrycia głównego obszaru tekstowego za pomocą FindTextRegion(), a następnie uruchom .Read(...), aby wyodrębnić tekst w jednej linii.
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
Skopiuj i uruchom ten fragment kodu.
using var result = new IronTesseract().Read(new OcrInput().LoadImage("image.png").FindTextRegion()); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
- Jak przeprowadzić OCR tablicy rejestracyjnej w C# (Samouczek)
- Jak uzyskać tekst z faktury w C# (Samouczek)
- Jak przeprowadzić OCR zrzutu ekranu w C#
- Jak przeprowadzić OCR napisów w C# (Samouczek)
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do używania OCR z widzeniem komputerowym
- Użyj metody
FindTextRegiondo automatycznego wykrywania obszarów tekstowych - Sprawdź, który obszar tekstowy został wykryty za pomocą metody
StampCropRectangleAndSaveAs - Użyj widzenia komputerowego, aby podzielić oryginalny obraz na obrazy na podstawie obszarów tekstowych za pomocą metody
FindMultipleTextRegions - Użyj metody
GetTextRegionsdo uzyskania listy obszarów kadrowania, w których wykryto tekst
Jak zainstalować IronOcr.ComputerVision poprzez pakiet NuGet?
Metody OpenCV, które realizują widzenie komputerowe w IronOCR, są widoczne w zwykłym pakiecie NuGet IronOCR. Aby uzyskać dokładne wskazówki dotyczące instalacji, zapoznaj się z naszym przewodnikiem instalacji NuGet.
Dlaczego IronOCR wymaga osobnego pakietu widzenia komputerowego?
Korzystanie z tych metod wymaga instalacji NuGet IronOcr.ComputerVision do rozwiązania. Zostaniesz poproszony o jego pobranie, jeśli nie jest zainstalowany. Funkcjonalność widzenia komputerowego wykorzystuje algorytmy OpenCV, które znacznie poprawiają dokładność wykrywania tekstu, podobnie jak techniki stosowane w naszych funkcjach rozpoznawania tablic rejestracyjnych i skanowania paszportów.
Jaki pakiet specyficzny dla platformy powinienem zainstalować?
- Windows:
IronOcr.ComputerVision.Windows- Zobacz nasz przewodnik instalacji Windows - Linux:
IronOcr.ComputerVision.Linux- Sprawdź nasz samouczek instalacji Linux - macOS:
IronOcr.ComputerVision.MacOS- Zobacz nasze instrukcje instalacji macOS - macOS ARM:
IronOcr.ComputerVision.MacOS.ARM
Jak zainstalować używając konsoli menedżera pakietów?
Zainstaluj używając Menedżera Pakietów NuGet lub wklej poniższe w Konsoli Menedżera Pakietów:
Install-Package IronOcr.ComputerVision.Windows
To zapewnia niezbędne zestawy do używania widzenia komputerowego IronOCR z naszym plikiem modelu.
Jakie metody widzenia komputerowego są dostępne w IronOCR?
Przykłady kodu znajdują się dalej w tym samouczku. Oto ogólny przegląd metod obecnie dostępnych:
| Metoda | Objasnienie |
|---|---|
| FindTextRegion | Wykryj obszary zawierające elementy tekstowe i nakazuj Tesseractowi wyszukiwanie tekstu wyłącznie w obszarze, w którym został on wykryty. |
| FindMultipleTextRegions | Wykryj obszary zawierające elementy tekstowe i podziel stronę na oddzielne obrazy w oparciu o regiony tekstowe. |
| GetTextRegions | Skanuje obraz i zwraca listę obszarów tekstowych jako `List |
Jak używać FindTextRegion do wykrywania obszarów tekstowych?
FindTextRegion używa widzenia komputerowego do wykrywania obszarów zawierających elementy tekstowe na każdej stronie obiektu OcrInput. Ta metoda jest szczególnie przydatna podczas przetwarzania obrazów z rozproszonym tekstem lub gdy trzeba poprawić wydajność, skupiając się wyłącznie na obszarach zawierających tekst.
Jakie jest podstawowe zastosowanie FindTextRegion?
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findtextregion-1.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindTextRegion();
OcrResult result = ocr.Read(input);
string resultText = result.Text;
Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindTextRegion()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.Text
IronOcr 2025.6.x i nie przyjmuje niestandardowych parametrów.Jak mogę dostosować parametry FindTextRegion?
Wywołaj tę metodę z niestandardowymi parametrami, aby precyzyjnie dostosować wykrywanie tekstu. Te parametry działają podobnie do naszych konfiguracji filtrów obrazów:
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findtextregion-2.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindTextRegion(Scale: 2.0, DilationAmount: 20, Binarize: true, Invert: true);
OcrResult result = ocr.Read(input);
string resultText = result.Text;
Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindTextRegion(Scale:= 2.0, DilationAmount:= 20, Binarize:= True, Invert:= True)
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.Text
Jak wygląda FindTextRegion w praktyce?
W tym przykładzie używam poniższego obrazka dla metody, która wymaga przycięcia do obszarów zawierających tekst, ale w obrazach wejściowych położenie tekstu może się różnić. Używam FindTextRegion, aby zawęzić skanowanie do obszaru, w którym widzenie komputerowe wykryło tekst. Podejście to jest podobne do technik stosowanych w naszym samouczku dotyczącym obszarów treści i regionów przycięcia. Oto przykładowy obrazek:
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findtextregion-3.cs
using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Linq;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("wh-words-sign.jpg");
// Find the text region using Computer Vision
Rectangle textCropArea = input.GetPages().First().FindTextRegion();
// For debugging and demonstration purposes, lets see what region it found:
input.StampCropRectangleAndSaveAs(textCropArea, Color.Red, "image_text_area", AnyBitmap.ImageFormat.Png);
// Looks good, so let us apply this region to hasten the read:
var ocrResult = ocr.Read("wh-words-sign.jpg", textCropArea);
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Imports System.Linq
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("wh-words-sign.jpg")
' Find the text region using Computer Vision
Dim textCropArea As Rectangle = input.GetPages().First().FindTextRegion()
' For debugging and demonstration purposes, lets see what region it found:
input.StampCropRectangleAndSaveAs(textCropArea, Color.Red, "image_text_area", AnyBitmap.ImageFormat.Png)
' Looks good, so let us apply this region to hasten the read:
Dim ocrResult = ocr.Read("wh-words-sign.jpg", textCropArea)
Console.WriteLine(ocrResult.Text)
Jak debugować i weryfikować wykrywanie regionów tekstu?
Ten kod ma dwa wyniki. Pierwszy to plik .png zapisany przez StampCropRectangleAndSaveAs używany do debugowania. Technika ta została również omówiona w naszym przewodniku dotyczącym tekstów wyróżnionych służących do debugowania. Widzimy, gdzie IronCV (Computer Vision) wykryło tekst:
Wykrywanie dokładnie identyfikuje obszar tekstowy. Drugim wynikiem jest sam tekst:
IRONSOFTWARE
50,000+
Developers in our active community
10,777,061 19,313
NuGet downloads Support tickets resolved
50%+ 80%+
Engineering Team growth Support Team growth
$25,000+
Raised with #TEAMSEAS to clean our beaches & waterways
Jak korzystać z funkcji FindMultipleTextRegions w przypadku wielu obszarów tekstowych?
FindMultipleTextRegions pobiera wszystkie strony obiektu OcrInput i wykorzystuje widzenie komputerowe do wykrywania obszarów zawierających elementy tekstowe, a następnie dzieli wejście na oddzielne obrazy na podstawie obszarów tekstowych. Jest to szczególnie przydatne w przypadku przetwarzania dokumentów zawierających wiele odrębnych obszarów tekstowych, podobnie jak w przypadku naszej funkcji odczytu tabeli w dokumencie:
Jakie jest podstawowe zastosowanie funkcji FindMultipleTextRegions?
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findmultipletextregions-1.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindMultipleTextRegions();
OcrResult result = ocr.Read(input);
string resultText = result.Text;
Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindMultipleTextRegions()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.Text
FindMultipleTextRegions nie wspiera już niestandardowych parametrów.Jak mogę dostosować parametry FindMultipleTextRegions?
Wywołaj tę metodę z niestandardowymi parametrami, aby kontrolować sposób wykrywania i rozdzielania regionów:
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findmultipletextregions-2.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindMultipleTextRegions(Scale: 2.0, DilationAmount: -1, Binarize: true, Invert: false);
OcrResult result = ocr.Read(input);
string resultText = result.Text;
Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindMultipleTextRegions(Scale:= 2.0, DilationAmount:= -1, Binarize:= True, Invert:= False)
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.Text
Jak przetwarzać poszczególne strony za pomocą FindMultipleTextRegions?
Inna metoda przeciążeniowa FindMultipleTextRegions przyjmuje stronę OCR i zwraca listę stron OCR, jedną dla każdego obszaru tekstowego na niej. Takie podejście jest pomocne w przypadku złożonych układów, podobnie jak techniki opisane w naszym przewodniku dotyczącym przetwarzania wielostronicowych plików TIFF:
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findmultipletextregions-3.cs
using IronOcr;
using System.Collections.Generic;
using System.Linq;
int pageIndex = 0;
using var input = new OcrInput();
input.LoadImage("/path/file.png");
var selectedPage = input.GetPages().ElementAt(pageIndex);
List<OcrInputPage> textRegionsOnPage = selectedPage.FindMultipleTextRegions();
Imports IronOcr
Imports System.Collections.Generic
Imports System.Linq
Private pageIndex As Integer = 0
Private input = New OcrInput()
input.LoadImage("/path/file.png")
Dim selectedPage = input.GetPages().ElementAt(pageIndex)
Dim textRegionsOnPage As List(Of OcrInputPage) = selectedPage.FindMultipleTextRegions()
Jak używać GetTextRegions do uzyskania współrzędnych regionów tekstu?
GetTextRegions zwraca listę obszarów kadrowania, na których wykryto tekst na stronie. Ta metoda jest szczególnie przydatna, gdy potrzebujesz współrzędnych obszarów tekstu do dalszego przetwarzania lub podczas wdrażania niestandardowych procesów OCR. Więcej szczegółów na temat pracy z wynikami można znaleźć w dokumentacji klasy OcrResult:
Kiedy należy używać GetTextRegions zamiast FindTextRegion?
/* :path=/static-assets/ocr/content-code-examples/how-to/computer-vision-gettextregions.cs */
using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.Linq;
// Create a new IronTesseract object for OCR
var ocr = new IronTesseract();
// Load an image into OcrInput
using var input = new OcrInput();
input.LoadImage("/path/file.png");
// Get the first page from the input
var firstPage = input.GetPages().First();
// Get all text regions detected on this page
List<Rectangle> textRegions = firstPage.GetTextRegions();
// Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:");
foreach (var region in textRegions)
{
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}");
}
// You can also process each region individually
foreach (var region in textRegions)
{
var regionResult = ocr.Read(input, region);
Console.WriteLine($"Text in region: {regionResult.Text}");
}
/* :path=/static-assets/ocr/content-code-examples/how-to/computer-vision-gettextregions.cs */
using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.Linq;
// Create a new IronTesseract object for OCR
var ocr = new IronTesseract();
// Load an image into OcrInput
using var input = new OcrInput();
input.LoadImage("/path/file.png");
// Get the first page from the input
var firstPage = input.GetPages().First();
// Get all text regions detected on this page
List<Rectangle> textRegions = firstPage.GetTextRegions();
// Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:");
foreach (var region in textRegions)
{
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}");
}
// You can also process each region individually
foreach (var region in textRegions)
{
var regionResult = ocr.Read(input, region);
Console.WriteLine($"Text in region: {regionResult.Text}");
}
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
Imports System.Linq
' Create a new IronTesseract object for OCR
Dim ocr As New IronTesseract()
' Load an image into OcrInput
Using input As New OcrInput()
input.LoadImage("/path/file.png")
' Get the first page from the input
Dim firstPage = input.GetPages().First()
' Get all text regions detected on this page
Dim textRegions As List(Of Rectangle) = firstPage.GetTextRegions()
' Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:")
For Each region In textRegions
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}")
Next
' You can also process each region individually
For Each region In textRegions
Dim regionResult = ocr.Read(input, region)
Console.WriteLine($"Text in region: {regionResult.Text}")
Next
End Using
Jakie są typowe zastosowania wizji komputerowej w OCR?
Wizja komputerowa znacznie poprawia dokładność OCR w trudnych sytuacjach. Oto praktyczne zastosowania:
-
Analiza układu dokumentu: automatyczne identyfikowanie i przetwarzanie różnych sekcji złożonych dokumentów. Szczególnie przydatne w przypadku dokumentów zeskanowanych.
-
Tekst wielokolumnowy: Rozdziel i czytaj kolumny niezależnie w przypadku gazet lub czasopism. Aby uzyskać szybsze wyniki, należy używać przetwarzania wielowątkowego.
-
Treści mieszane: Należy rozróżniać obszary tekstowe od graficznych w dokumentach. Przydatne podczas przetwarzania zdjęć z osadzonym tekstem.
-
Optymalizacja wydajności: Skoncentruj przetwarzanie OCR wyłącznie na obszarach zawierających tekst. Zobacz nasz przewodnik po szybkiej konfiguracji OCR.
- Kontrola jakości: Sprawdź wykrywanie tekstu przed pełnym przetwarzaniem OCR. Nasza funkcja śledzenia postępów monitoruje każdy etap.
Przy odpowiednich ustawieniach i plikach wejściowych OCR może osiągnąć zdolność czytania zbliżoną do ludzkiej. Aby uzyskać optymalne wyniki, połącz wizję komputerową z naszymi filtrami optymalizacji obrazu, aby osiągnąć najlepszą możliwą dokładność OCR. W przypadku pracy z obrazami o niskiej jakości nasz przewodnik dotyczący poprawiania skanów o niskiej jakości zawiera cenne techniki przetwarzania wstępnego.
Zaawansowane techniki wizji komputerowej
Programiści, którzy chcą przesuwać granice dokładności OCR, powinni rozważyć następujące zaawansowane podejścia:
- Szkolenie niestandardowe: Naucz silnik OCR rozpoznawania specjalistycznych czcionek, korzystając z naszego przewodnika po niestandardowych plikach językowych
- Obsługa wielu języków: przetwarzaj dokumenty wielojęzyczne dzięki naszej funkcji obsługi wielu języków
- Integracja BarCode: Połącz rozpoznawanie tekstu z odczytem BarCode, korzystając z naszego OCR z funkcjami odczytu BarCode
Często Zadawane Pytania
Co to jest wizja komputerowa w OCR i jak poprawia ekstrakcję tekstu?
Wizja komputerowa w IronOCR używa algorytmów OpenCV do automatycznego wykrywania obszarów tekstu na obrazach przed przetwarzaniem OCR. To znacznie poprawia dokładność dla tekstu z szumami, wieloma obszarami lub zniekształconym tekstem, skupiając rozpoznawanie Tesseract wyłącznie na zidentyfikowanych obszarach tekstu, zamiast przetwarzać całe obrazy.
Jak mogę szybko zaimplementować OCR wizji komputerowej w C#?
IronOCR pozwala na wdrożenie OCR wizji komputerowej w zaledwie jednej linii kodu: użyj IronTesseract z metodą FindTextRegion(), aby automatycznie wykryć główny obszar tekstu, następnie uruchom .Read(), aby natychmiast wyodrębnić tekst.
Dlaczego muszę zainstalować osobny pakiet wizji komputerowej?
IronOCR wymaga osobnego pakietu IronOcr.ComputerVision NuGet, ponieważ funkcjonalność wizji komputerowej wykorzystuje algorytmy OpenCV. Te algorytmy znacznie poprawiają dokładność wykrywania tekstu i są niezbędne do funkcji takich jak rozpoznawanie tablic rejestracyjnych i skanowanie paszportów.
Który specjalistyczny pakiet wizji komputerowej powinienem zainstalować?
IronOCR oferuje pakiety specyficzne dla platform: IronOcr.ComputerVision.Windows dla systemów Windows, IronOcr.ComputerVision.Linux dla dystrybucji Linux i IronOcr.ComputerVision.MacOS dla środowisk macOS.
Jak mogę wykryć wiele obszarów tekstu na obrazie?
IronOCR zapewnia metodę FindMultipleTextRegions do oddzielenia oryginalnego obrazu na wiele obrazów na podstawie wykrytych obszarów tekstu. Możesz również użyć GetTextRegions, aby uzyskać listę obszarów przycięcia, gdzie wykryto tekst.
Czy mogę zweryfikować, które obszary tekstu zostały wykryte przed przetwarzaniem?
Tak, IronOCR obejmuje metodę StampCropRectangleAndSaveAs, która pozwala sprawdzić, które obszary tekstu zostały wykryte przez algorytmy wizji komputerowej przed uruchomieniem rzeczywistego procesu OCR.

