C#: Extraia texto de imagens ou PDFs digitalizados com OCR

2024-01-17 01:47:31

Na era digital de hoje, extrair texto de imagens ou PDFs digitalizados é um requisito comum para diversas aplicações. O reconhecimento óptico de caracteres (OCR) é uma tecnologia que permite aos computadores reconhecer e extrair texto de tais documentos. Com ele, podemos converter facilmente imagens e PDFs digitalizados em formatos editáveis e pesquisáveis, facilitando o processamento e a análise do conteúdo textual. Neste blog, exploraremos como extraia texto de imagens e PDFs digitalizados com OCR em C#.

Bibliotecas C# para extrair texto de imagens e PDFs digitalizados

Para extrair texto de imagens, utilizaremos o Spire.OCR for .NET biblioteca. Spire.OCR for .NET é uma biblioteca poderosa projetada especificamente para extrair texto de imagens em aplicativos .NET. Suporta vários formatos de imagem, como BMP, JPG, PNG, TIFF e GIF.

Aqui estão as etapas para instalar o Spire.OCR for .NET:

  • Altere o destino da plataforma da sua solução para x64.
  • C#: Extract Text from Images or Scanned PDFs with OCR

  • Instale o Spire.OCR do NuGet executando o seguinte comando no Console do Gerenciador de Pacotes NuGet:
    Install-Package Spire.OCR
  • Abra a pasta da solução e navegue até o diretório "packages\Spire.OCR.1.8.0\runtimes\win-x64\native". Copie os arquivos DLL deste diretório e cole-os na pasta “Debug” da sua solução.

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

Para extrair texto de PDFs digitalizados, primeiro precisamos converter o documento PDF em imagens. Para esta tarefa, empregaremos a biblioteca Spire.PDF for .NET. Assim que a conversão for concluída, podemos utilizar Spire.OCR para extrair texto das imagens resultantes.

Você pode instalar o Spire.PDF for .NET do NuGet executando o seguinte comando no Console do Gerenciador de Pacotes NuGet:

Install-Package Spire.PDF

Extraia texto de imagens em C#

Spire.OCR fornece o método OcrScanner.Scan() para reconhecer texto de uma imagem. Após o reconhecimento, você pode obter o texto reconhecido usando a propriedade OcrScanner.Text.

Aqui estão as principais etapas para reconhecer texto de uma imagem usando Spire.OCR:

  • Crie uma instância da classe OcrScanner.
  • Reconheça o texto de uma imagem usando o método OcrScanner.Scan().
  • Obtenha o texto reconhecido do objeto OcrScanner usando a propriedade OcrScanner.Text.
  • Salve o texto em um arquivo de texto.

Aqui está um exemplo de código que mostra como reconhecer o texto de uma imagem e salvar o resultado em um arquivo de texto:

  • 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

Extraia texto de imagens com coordenadas em C#

A extração de coordenadas é útil quando você precisa identificar a localização exata de elementos de texto específicos em sua imagem. Com o Spire.OCR, você pode recuperar o texto reconhecido em blocos ou linhas. Para cada bloco, você pode obter informações detalhadas de localização, incluindo as coordenadas xey, bem como sua largura e altura.

Aqui estão as etapas principais para extrair texto junto com suas informações de localização de uma imagem usando Spire.OCR:

  • Crie uma instância da classe OcrScanner.
  • Reconheça o texto de uma imagem usando o método OcrScanner.Scan().
  • Obtenha o texto reconhecido do objeto OcrScanner usando a propriedade OcrScanner.Text.
  • Itere pelos blocos de texto do texto reconhecido.
  • Para cada bloco, obtenha suas informações de texto e localização usando as propriedades IOCRTextBlock.Text e IOCRTextBlock.Box e anexe o resultado a uma lista de strings.
  • Salve o conteúdo da lista em um arquivo de texto.

Aqui está um exemplo de código que mostra como reconhecer texto junto com suas informações de localização de uma imagem e salvar o resultado em um arquivo de texto:

  • 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;
            }
        }
    }

Extraia texto de PDFs digitalizados em C#

Para extrair texto de PDFs digitalizados, precisamos seguir um processo de duas etapas. Primeiro, usamos o Spire.PDF para converter os PDFs digitalizados em imagens. Em seguida, utilizamos Spire.OCR para extrair o texto dessas imagens.

Aqui estão as principais etapas para reconhecer texto de um PDF digitalizado usando Spire.PDF e Spire.OCR:

  • Crie uma instância da classe PdfDocument.
  • Carregue um documento PDF usando o método PdfDocument.LoadFromFile().
  • Itere pelas páginas do documento PDF.
  • Converta cada página em um objeto Image usando o método PdfDocument.SaveAsImage().
  • Salve o objeto Image em um stream usando o método Image.Save().
  • Crie uma instância da classe OcrScanner.
  • Reconheça o texto do fluxo usando o método OcrScanner.Scan().
  • Obtenha o texto reconhecido usando a propriedade IOCRText.Text e anexe-o a uma lista de strings.
  • Salve o conteúdo da lista em um arquivo de texto.

Aqui está um exemplo de código que mostra como reconhecer texto de um PDF digitalizado e salvar o resultado em um arquivo de texto:

  • 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();
                }
            }
        }
    }

Obtenha uma licença gratuita

Para experimentar totalmente os recursos do Spire.OCR for .NET ou Spire.PDF for .NET sem quaisquer limitações de avaliação, você pode solicitar uma licença de teste gratuita de 30 dias.

Conclusão

Esta postagem do blog demonstrou como extrair texto de imagens e documentos PDF digitalizados em C#. Se você tiver alguma dúvida, sinta-se à vontade para publicá-la em nosso fórum ou enviá-la para nossa equipe de suporte por e-mail.

Veja também