В этом пошаговом руководстве показано, как извлечь текст из отсканированного PDF на C#. Когда вы сканируете документы в PDF, эти страницы добавляются как отсканированные изображения внутри файла PDF. Таким образом, чтобы извлечь текст из отсканированного PDF-файла, вам фактически придется извлекать текст из изображений в PDF на C#, применяя оптическое распознавание символов (OCR).
Действия по извлечению текста из отсканированного PDF-файла в C#
- Получите Aspose.OCR for .NET от диспетчера пакетов NuGet.org.
- Добавить ссылку на Aspose.OCR namespace
- Примените лицензионный код с помощью метода SetLicense
- Инициировать экземпляр класса AsposeOcr
- Укажите параметры распознавания, используя DocumentRecognitionSettings class
- Извлеките все страницы PDF, используя метод RecognizePDF
- Получить текст с каждой страницы 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, скорость улучшится, а точность может немного снизиться. Таким образом, вы должны выбрать один из двух вариантов в зависимости от вашей ситуации.