Как извлечь текст из отсканированного PDF в C#

В этом пошаговом руководстве показано, как извлечь текст из отсканированного PDF на C#. Когда вы сканируете документы в PDF, эти страницы добавляются как отсканированные изображения внутри файла PDF. Таким образом, чтобы извлечь текст из отсканированного PDF-файла, вам фактически придется извлекать текст из изображений в PDF на C#, применяя оптическое распознавание символов (OCR).

Действия по извлечению текста из отсканированного PDF-файла в C#

  1. Получите Aspose.OCR for .NET от диспетчера пакетов NuGet.org.
  2. Добавить ссылку на Aspose.OCR namespace
  3. Примените лицензионный код с помощью метода SetLicense
  4. Инициировать экземпляр класса AsposeOcr
  5. Укажите параметры распознавания, используя DocumentRecognitionSettings class
  6. Извлеките все страницы PDF, используя метод RecognizePDF
  7. Получить текст с каждой страницы PDF, используя свойство RecognitionText

С помощью описанных выше шагов вы можете быстро и легко читать текст из отсканированного PDF-файла на C#. Ранее мы показали вам, как Извлечь текст из изображения в C#. Однако этот пример поможет вам получить текст из PDF на C#.

Код для извлечения текста из отсканированного PDF-файла на С#

using System;
using System.Collections.Generic;
//Use following namespace to extract text from scanned PDF
using Aspose.OCR;
namespace ExtractTextFromScannedPDFFile
{
class Program
{
static void Main(string[] args)
{
//Set license before extracting text from scanned PDF file
Aspose.OCR.License AsposeOCRLicense = new Aspose.OCR.License();
AsposeOCRLicense.SetLicense(@"c:\asposelicense\license.lic");
//create AsposeOcr object
AsposeOcr ScannedPDFFile = new AsposeOcr();
//set recognition settings
DocumentRecognitionSettings RecognitionSettings = new DocumentRecognitionSettings();
RecognitionSettings.StartPage = 1;
RecognitionSettings.PagesNumber = 3;
//when set true, improves accuracy but reduces speed
RecognitionSettings.DetectAreas = false;
//extract text from specified pages
List<RecognitionResult> ExtractedResults = ScannedPDFFile.RecognizePdf("InputScannedPDFFile.pdf", RecognitionSettings);
//fetch extracted text of each page
int PageCounter = 1;
foreach(RecognitionResult SinglePage in ExtractedResults)
{
Console.WriteLine("Page: {0}, Extracted Text:{1}", PageCounter, SinglePage.RecognitionText);
PageCounter++;
}
}
}
}

Приведенный выше пример получения текста из PDF на С# прост и понятен. Мы просто читаем отсканированный файл PDF, а затем извлекаем текст с каждой страницы. Однако здесь следует понимать один важный момент — свойство DetectArea. Если вы установите значение true, это обеспечит большую точность, но снизит скорость обработки PDF. Однако, установив для него значение false, скорость улучшится, а точность может немного снизиться. Таким образом, вы должны выбрать один из двух вариантов в зависимости от вашей ситуации.

 Русский