Comment utiliser la vision par ordinateur pour trouver du texte
Introduction
IronOCR utilise OpenCV pour utiliser la vision par ordinateur afin de détecter les zones où se trouve du texte dans une image. Cette fonction est utile pour les images contenant beaucoup de bruit, les images dont le texte se trouve à plusieurs endroits différents et les images dont le texte est déformé. L'utilisation de la vision par ordinateur dans IronOCR déterminera où se trouvent les régions de texte et utilisera ensuite Tesseract pour tenter de lire ces régions.
- Comment reconnaître une plaque d'immatriculation en C# (Tutoriel)
- Comment obtenir du texte à partir d'une facture en C# Tutoriel
- Comment obtenir par OCR du texte à partir d'une capture d'écran en C#
Comment reconnaître des sous-titres en C# (Tutoriel)
Étapes de l'utilisation de l'OCR avec la vision par ordinateur
- Télécharger la bibliothèque C# pour utiliser l'OCR avec la vision par ordinateur
- Utiliser
FindTextRegion
méthode de détection automatique des zones de texte - Vérifier quelle région de texte est détectée avec
StampCropRectangleAndSaveAs
méthode - Utiliser la vision artificielle pour séparer l'image originale en images basées sur les régions de texte avec
FindMultipleTextRegions
méthode - Utilisation
Obtenir des régions de texte
méthode to get crop areas list where text was detected
Installation d'IronOCR.ComputerVision via un paquet NuGet
Les méthodes OpenCV qui effectuent de la vision par ordinateur dans IronOCR sont visibles dans le paquet NuGet IronOCR normal.
L'utilisation de ces méthodes nécessite l'installation de NuGet IronOcr.ComputerVision
dans la solution, vous êtes invité à le télécharger si vous ne l'avez pas installé.
- Windows :
IronOcr.ComputerVision.Windows
- Linux :
IronOcr.ComputerVision.Linux
- macOS :
IronOcr.ComputerVision.MacOS
macOS ARM :
IronOcr.ComputerVision.MacOS.ARM
Installer à l'aide du gestionnaire de paquets NuGet ou coller le texte suivant dans la console du gestionnaire de paquets :
PM> Installer-Package IronOCR.ComputerVision.Windows
Cela fournira les assemblages nécessaires pour utiliser IronOCR Computer Vision avec notre fichier modèle.
## Fonctionnalité et API
Des exemples de code sont inclus plus loin dans ce tutoriel. Voici un aperçu général des méthodes actuellement disponibles :
<table class="table table__configuration-variables">
<tr>
<th scope="col">Méthode</th>
<th scope="col">Explication</th>
</tr>
<tr>
<td><a href="#anchor-findtextregion">FindTextRegion</a></td>
<td class="word-break--break-word">Détecter les régions qui contiennent des éléments de texte et demander à Tesseract de ne rechercher du texte que dans la zone où du texte a été détecté.</td>
</tr>
<tr>
<td><a href="#anchor-findmultipletextregions">FindMultipleTextRegions</a></td>
<td class="word-break--break-word">Détecter les zones contenant des éléments de texte et diviser la page en images distinctes en fonction des zones de texte.</td>
</tr>
<tr>
<td><a href="#anchor-gettextregions">Obtenir des régions de texte</a></td>
<td class="word-break--break-word">Scanne l'image et renvoie une liste de régions de texte sous forme de "Liste"<CropRectangle>`.</td>
</tr>
</table>
## FindTextRegion
L'utilisation de `FindTextRegion` utilisera la vision artificielle pour détecter les régions qui contiennent des éléments de texte sur chaque page d'un objet OcrInput.
```cs
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findtextregion-1.cs
Peut éventuellement être appelé avec des paramètres personnalisés :
: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
Dans cet exemple, j'utiliserai l'image suivante pour une méthode que je suis en train d'écrire et qui doit recadrer les zones contenant du texte, mais les images d'entrée peuvent varier en ce qui concerne l'emplacement du texte. Dans ce cas, je peux utiliser FindTextRegion pour limiter l'analyse à une zone où la vision par ordinateur a détecté du texte. Il s'agit d'un exemple d'image :
: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)
Ce code a deux sorties, la première est un fichier .png
sauvegardé par StampCropRectangleAndSaveAs
qui est utilisé pour le débogage. Nous pouvons voir où IronCV (Vision par ordinateur) a pensé que le texte était :
Il a l'air plutôt bon. La deuxième sortie est le texte lui-même qui est :
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
L'utilisation de FindMultipleTextRegions
prend toutes les pages d'un objet OcrInput
et utilise la vision artificielle pour détecter les zones qui contiennent des éléments de texte et diviser l'entrée en images séparées basées sur les régions de texte :
: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
Peut éventuellement être appelé avec des paramètres personnalisés :
: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
Une autre méthode de surcharge de FindMultipleTextRegions
prend une page OCR et renvoie une liste de pages OCR, une pour chaque région de texte qu'elle contient :
: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()
Obtenir des régions de texte
L'utilisation de GetTextRegions
renvoie une liste des zones de culture où du texte a été détecté dans une page :
: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();
Guides de cas d'utilisation spécifiques
Avec les bons paramètres et les bons fichiers d'entrée, l'OCR peut être un outil très puissant. Il peut imiter presque parfaitement la capacité de lecture d'un être humain.