Jak wykorzystać wizję komputerową do wyszukiwania tekstu w języku C#

Jak znaleźć tekst za pomocą widzenia komputerowego w C

This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. Skopiuj i uruchom ten fragment kodu.

    using var result = new IronTesseract().Read(new OcrInput().LoadImage("image.png").FindTextRegion());
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

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ć?

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
$vbLabelText   $csharpLabel

Uwaga Ta metoda przeciążeniowa jest obecnie przestarzała w 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
$vbLabelText   $csharpLabel

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:

Statystyki firmy IronSoftware za rok 2022 przedstawiające wskaźniki dotyczące programistów oraz dane dotyczące wyników biznesowych
: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)
$vbLabelText   $csharpLabel

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:

Statystyki IronSoftware 2022 z czerwonym ramką wskazującą funkcję wykrywania tekstu FindTextRegion

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
$vbLabelText   $csharpLabel

Uwaga Od wersji IronOcr v2025.6.x metoda 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
$vbLabelText   $csharpLabel

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()
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Jakie są typowe zastosowania wizji komputerowej w OCR?

Wizja komputerowa znacznie poprawia dokładność OCR w trudnych sytuacjach. Oto praktyczne zastosowania:

  1. Analiza układu dokumentu: automatyczne identyfikowanie i przetwarzanie różnych sekcji złożonych dokumentów. Szczególnie przydatne w przypadku dokumentów zeskanowanych.

  2. Tekst wielokolumnowy: Rozdziel i czytaj kolumny niezależnie w przypadku gazet lub czasopism. Aby uzyskać szybsze wyniki, należy używać przetwarzania wielowątkowego.

  3. Treści mieszane: Należy rozróżniać obszary tekstowe od graficznych w dokumentach. Przydatne podczas przetwarzania zdjęć z osadzonym tekstem.

  4. Optymalizacja wydajności: Skoncentruj przetwarzanie OCR wyłącznie na obszarach zawierających tekst. Zobacz nasz przewodnik po szybkiej konfiguracji OCR.

  5. 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:

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 5,571,678 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.