C# : Extraire du texte à partir d'images ou de PDF numérisés avec OCR

2024-01-17 01:35:25

À l'ère numérique d'aujourd'hui, l'extraction de texte à partir d'images ou de PDF numérisés est une exigence courante pour diverses applications. La reconnaissance optique de caractères (OCR) est une technologie qui permet aux ordinateurs de reconnaître et d'extraire le texte de ces documents. Grâce à lui, nous pouvons facilement convertir des images et des PDF numérisés en formats modifiables et consultables, facilitant ainsi le traitement et l'analyse du contenu textuel. Dans ce blog, nous explorerons comment extraire du texte à partir d'images et de PDF numérisés avec OCR en C#.

Bibliothèques C# pour extraire du texte à partir d'images et de PDF numérisés

Pour extraire le texte des images, nous utiliserons la bibliothèque Spire.OCR for .NET. Spire.OCR for .NET est une bibliothèque puissante conçue spécifiquement pour extraire du texte à partir d'images dans des applications .NET. Il prend en charge divers formats d'image tels que BMP, JPG, PNG, TIFF et GIF.

Voici les étapes pour installer Spire.OCR for .NET:

  • Modifiez la cible de plate-forme de votre solution en x64.
  • C#: Extract Text from Images or Scanned PDFs with OCR

  • Installez Spire.OCR à partir de NuGet en exécutant la commande suivante dans la console NuGet Package Manager :
    Install-Package Spire.OCR
  • Ouvrez votre dossier de solution et accédez au répertoire « packages\Spire.OCR.1.8.0\runtimes\win-x64\native ». Copiez les fichiers DLL de ce répertoire et collez-les dans le dossier "Debug" de votre solution.

C#: Extract Text from Images or Scanned PDFs with OCR

Pour extraire le texte d'un PDF numérisé, nous devons d'abord convertir le document PDF en images. Pour cette tâche, nous emploierons le Spire.PDF for .NET bibliothèque. Une fois la conversion terminée, nous pouvons utiliser Spire.OCR pour extraire le texte des images résultantes.

Vous pouvez installer Spire.PDF for .NET à partir de NuGet en exécutant la commande suivante dans la console NuGet Package Manager :

Install-Package Spire.PDF

Extraire le texte des images en C#

Spire.OCR fournit la méthode OcrScanner.Scan() pour reconnaître le texte d'une image. Après reconnaissance, vous pouvez obtenir le texte reconnu à l'aide de la propriété OcrScanner.Text.

Voici les principales étapes pour reconnaître le texte d'une image à l'aide de Spire.OCR :

  • Créez une instance de la classe OcrScanner.
  • Reconnaître le texte d'une image à l'aide de la méthode OcrScanner.Scan().
  • Obtenez le texte reconnu de l'objet OcrScanner à l'aide de la propriété OcrScanner.Text.
  • Enregistrez le texte dans un fichier texte.

Voici un exemple de code qui montre comment reconnaître le texte d'une image et enregistrer le résultat dans un fichier texte :

  • C#
using Spire.OCR;
    using System.IO;
    
    namespace ReadTextFromImage
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                //Specify the path of the input image file
                string imageFilePath = "Image.png";
                //Specify the path of the output text file
                string outputFilePath = "ScanImage.txt";
    
                //Call the ScanTextFromImage method to scan text from an image
                string scannedText = ScanTextFromImage(imageFilePath);
    
                //Write the text to the specified file
                File.WriteAllText(outputFilePath, scannedText);
            }
    
            public static string ScanTextFromImage(string imageFilePath)
            {
                //Instantiate an OcrScanner object
                using (OcrScanner ocrScanner = new OcrScanner())
                {
                    //Scan text from the image
                    ocrScanner.Scan(imageFilePath);
    
                    //Get the recognized text from the OcrScanner object
                    IOCRText text = ocrScanner.Text;
    
                    //Return the text
                    return text.ToString();
                }
            }
        }
    }

C#: Extract Text from Images or Scanned PDFs with OCR

Extraire le texte des images avec des coordonnées en C#

L'extraction de coordonnées est utile lorsque vous devez identifier l'emplacement exact d'éléments de texte spécifiques dans votre image. Avec Spire.OCR, vous pouvez récupérer le texte reconnu sous forme de blocs ou de lignes. Pour chaque bloc, vous pouvez obtenir des informations détaillées sur son emplacement, y compris les coordonnées x et y, ainsi que sa largeur et sa hauteur.

Voici les principales étapes pour extraire du texte ainsi que ses informations de localisation à partir d'une image à l'aide de Spire.OCR :

  • Créez une instance de la classe OcrScanner.
  • Reconnaître le texte d'une image à l'aide de la méthode OcrScanner.Scan().
  • Obtenez le texte reconnu de l'objet OcrScanner à l'aide de la propriété OcrScanner.Text.
  • Parcourez les blocs de texte du texte reconnu.
  • Pour chaque bloc, obtenez son texte et ses informations d'emplacement à l'aide des propriétés IOCRTextBlock.Text et IOCRTextBlock.Box, puis ajoutez le résultat à une liste de chaînes.
  • Enregistrez le contenu de la liste dans un fichier texte.

Voici un exemple de code qui montre comment reconnaître le texte ainsi que ses informations de localisation à partir d'une image et enregistrer le résultat dans un fichier texte :

  • C#
using Spire.OCR;
    using System.Collections.Generic;
    using System.IO;
    
    namespace ReadTextFromImageWithCoordinates
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                //Specify the path of the input image file
                string imagePath = "Image.png";
                //Specify the path of the output text file
                string outputFile = "ScanImageWithCoordinates.txt";
    
                //Call the ScanTextFromImageWithCoordinates method to extract text and its area information from the image
                List<string> extractedText = ScanTextFromImageWithCoordinates(imagePath);
    
                //Write the result to the specified file
                File.WriteAllLines(outputFile, extractedText);
            }
    
            //Retrieve the text blocks along with their location information (x, y, width, height) from an image
            public static List<string> ScanTextFromImageWithCoordinates(string imageFilePath)
            {
                //Create a list
                List<string> extractedText = new List<string>();
    
                //Instantiate an OcrScanner object
                using (OcrScanner ocrScanner = new OcrScanner())
                {
                    //Scan text from the image
                    ocrScanner.Scan(imageFilePath);
                    //Get the scanned text
                    IOCRText text = ocrScanner.Text;
    
                    //Iterate through each text block
                    foreach (IOCRTextBlock block in text.Blocks)
                    {
                        //Append the text of each block and its location information to the list
                        extractedText.Add($"Text: {block.Text}\nRectangular Area: {block.Box}");
                    }
                }
    
                return extractedText;
            }
        }
    }

Extraire le texte des PDF numérisés en C#

Pour extraire le texte des PDF numérisés, nous devons suivre un processus en deux étapes. Tout d’abord, nous utilisons Spire.PDF pour convertir les PDF numérisés en images. Ensuite, nous utilisons Spire.OCR pour extraire le texte de ces images.

Voici les principales étapes pour reconnaître le texte d'un PDF numérisé à l'aide de Spire.PDF et Spire.OCR :

  • Créez une instance de la classe PdfDocument.
  • Chargez un document PDF à l'aide de la méthode PdfDocument.LoadFromFile().
  • Parcourez les pages du document PDF.
  • Convertissez chaque page en un objet Image à l’aide de la méthode PdfDocument.SaveAsImage().
  • Enregistrez l'objet Image dans un flux à l'aide de la méthode Image.Save().
  • Créez une instance de la classe OcrScanner.
  • Reconnaissez le texte du flux à l’aide de la méthode OcrScanner.Scan().
  • Obtenez le texte reconnu à l’aide de la propriété IOCRText.Text et ajoutez-le à une liste de chaînes.
  • Enregistrez le contenu de la liste dans un fichier texte.

Voici un exemple de code qui montre comment reconnaître le texte d'un PDF numérisé et enregistrer le résultat dans un fichier texte :

  • C#
using Spire.OCR;
    using Spire.Pdf;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    
    namespace ReadTextFromScannedPDF
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                //Specify the path of the scanned PDF file
                string pdfFilePath = "Sample.pdf";
                //Specify the path of the output text file
                string outputFilePath = "ScanPDF.txt";
    
                //Extract text from the scanned PDF
                List<string> extractedText = ExtractTextFromScannedPDF(pdfFilePath);
    
                //Write the text to the specified file
                File.WriteAllLines(outputFilePath, extractedText);
            }
    
            //Extract text from a scanned PDF
            public static List<string> ExtractTextFromScannedPDF(string pdfFilePath)
            {
                //Create a list to store the extracted text
                List<string> extractedText = new List<string>();
    
                //Create an instance of the PdfDocument class
                using (PdfDocument document = new PdfDocument())
                {
                    //Load the PDF document
                    document.LoadFromFile(pdfFilePath);
    
                    //Iterate through each page of the document
                    for (int pageIndex = 0; pageIndex < document.Pages.Count; pageIndex++)
                    {
                        //Convert the page to an image
                        using (Image image = document.SaveAsImage(pageIndex, 300, 300))
                        {
                            //Create a memory stream to hold the image data
                            using (MemoryStream stream = new MemoryStream())
                            {
                                //Save the image to the memory stream in PNG format
                                image.Save(stream, ImageFormat.Png);
                                stream.Position = 0;
    
                                //Scan the text from the image and add it to the list
                                string text = ScanTextFromImageStream(stream);
                                extractedText.Add(text);
                            }
                        }
                    }
                }
    
                //Return the list
                return extractedText;
            }
    
            //Scan text from an image stream
            public static string ScanTextFromImageStream(Stream stream)
            {
                //Create an instance of the OcrScanner class
                using (OcrScanner ocrScanner = new OcrScanner())
                {
                    //Scan the text from the image stream in PNG format
                    ocrScanner.Scan(stream, OCRImageFormat.Png);
                    IOCRText text = ocrScanner.Text;
    
                    //Return the text
                    return text.ToString();
                }
            }
        }
    }

Obtenez une licence gratuite

Pour profiter pleinement des capacités de Spire.OCR for .NET ou Spire.PDF for .NET sans aucune limitation d'évaluation, vous pouvez demander une licence d'essai gratuite de 30 jours.

Conclusion

Cet article de blog a montré comment extraire du texte à partir d'images et de documents PDF numérisés en C#. Si vous avez des questions, n'hésitez pas à les publier sur notre forum ou à les envoyer à notre équipe d'assistance par e-mail.

Voir également