Wie man mit Computer Vision Text findet

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

Einführung

IronOCR nutzt OpenCV, um mit Hilfe von Computer Vision Bereiche zu erkennen, in denen Text in einem Bild vorhanden ist. Dies ist nützlich für Bilder, die viel Rauschen enthalten, Bilder mit Text an vielen verschiedenen Stellen und Bilder, bei denen der Text verzerrt ist. Mit Hilfe von Computer Vision in IronOCR wird festgestellt, wo Textbereiche vorhanden sind, und dann mit Tesseract versucht, diese Bereiche zu lesen.

IronOCR.ComputerVision Installation über NuGet-Paket

OpenCV-Methoden, die Computer Vision in IronOCR ausführen, sind im regulären IronOCR NuGet-Paket sichtbar.

Die Verwendung dieser Methoden erfordert die NuGet-Installation von "IronOcr.ComputerVision" in der Lösung. Sie werden aufgefordert, diese herunterzuladen, wenn Sie sie noch nicht installiert haben.

  • Windows: "IronOcr.ComputerVision.Windows
  • Linux: "IronOcr.ComputerVision.Linux
  • macOS: IronOcr.ComputerVision.MacOS
  • macOS ARM: IronOcr.ComputerVision.MacOS.ARM

    Installieren Sie mit dem NuGet-Paketmanager oder fügen Sie Folgendes in die Paketmanager-Konsole ein: PM> Install-Package IronOCR.ComputerVision.Windows Dadurch werden die erforderlichen Baugruppen für die Verwendung von IronOCR Computer Vision mit unserer Modelldatei bereitgestellt.

Funktionsweise und API

Code-Beispiele sind weiter unten in diesem Tutorial enthalten. Im Folgenden finden Sie einen allgemeinen Überblick über die derzeit verfügbaren Methoden:

Methode Erläuterung
FindTextRegion Erkennen Sie Regionen, die Textelemente enthalten, und weisen Sie Tesseract an, nur innerhalb des Bereichs, in dem Text erkannt wurde, nach Text zu suchen.
FindMultipleTextRegions Erkennen Sie Bereiche, die Textelemente enthalten, und unterteilen Sie die Seite anhand der Textbereiche in einzelne Bilder.
GetTextRegions Scannt das Bild und gibt eine Liste von Textregionen als `List`.

FindTextRegion

Die Verwendung von FindTextRegion wird die Computer Vision nutzen, um Regionen zu erkennen, die Textelemente auf jeder Seite eines OcrInput-Objekts enthalten.

: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
VB   C#

Kann optional mit benutzerdefinierten Parametern aufgerufen werden:

: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
VB   C#

In diesem Beispiel werde ich das folgende Bild für eine Methode verwenden, die ich gerade schreibe und die Bereiche mit Text beschneiden muss, aber die Eingabebilder können in der Textposition variieren. In diesem Fall kann ich FindTextRegion verwenden, um den Scan auf einen Bereich einzugrenzen, in dem Computer Vision Text erkannt hat. Dies ist ein Beispielbild:

Bild mit Text
: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)
VB   C#

Dieser Code hat zwei Ausgaben, die erste ist eine .png-Datei, die von StampCropRectangleAndSaveAs gespeichert wird und zur Fehlersuche dient. Wir können sehen, wo IronCV(Computer Vision) dachte, der Text sei:

Bild mit hervorgehobenem Textbereich

Sieht ziemlich gut aus. Die zweite Ausgabe ist der Text selbst, der lautet:

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

FindMultipleTextRegions

Bei der Verwendung von "FindMultipleTextRegions" werden alle Seiten eines "OcrInput"-Objekts verwendet, um mit Hilfe der Computer Vision Bereiche zu erkennen, die Textelemente enthalten, und die Eingabe in separate Bilder auf der Grundlage von Textregionen zu unterteilen:

: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
VB   C#

Kann optional mit benutzerdefinierten Parametern aufgerufen werden:

: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
VB   C#

Eine weitere Überladungsmethode von "FindMultipleTextRegions" nimmt eine OCR-Seite und gibt eine Liste von OCR-Seiten zurück, eine für jede Textregion auf dieser Seite:

: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()
VB   C#

GetTextRegions

Die Verwendung von GetTextRegions liefert eine Liste der Beschnittbereiche, in denen Text auf einer Seite erkannt wurde:

:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-gettextregions.cs
using IronOcr;
using IronSoftware.Drawing;
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<Rectangle> regions = selectedPage.GetTextRegions();
Imports IronOcr
Imports IronSoftware.Drawing
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)
' List<Rectangle> regions = selectedPage.GetTextRegions();
VB   C#

Spezifische Leitfäden für Anwendungsfälle

Mit den richtigen Einstellungen und Eingabedateien kann die OCR ein sehr leistungsfähiges Werkzeug sein. Es kann die Lesefähigkeit eines Menschen nahezu perfekt imitieren.