Вступ

Aspose.OCR FOSS для .NET — це нова open-source C# бібліотека для виявлення та розпізнавання тексту у растрових зображеннях та PDF-документах. Вона створена для розробників .NET, яким потрібне розпізнавання тексту без залежності від зовнішнього OCR-сервісу, хмарного API або будь-якого пропрієтарного середовища виконання.

Бібліотека ліцензована за MIT і не має зовнішньої залежності OCR: весь конвеєр розпізнавання — виявлення рядків тексту, уточнення регіонів і розпізнавання латинської писемності — працює локально за допомогою трьох ONNX-моделей, вбудованих безпосередньо в збірку та виконуваних на CPU через Microsoft.ML.OnnxRuntime. Крок завантаження моделей і мережевий виклик не потрібні під час виконання.


Що включено

Розпізнавання зображень і PDF-файлів через єдину точку входу

AsposeOcr.Recognize() — це єдина точка входу для обох типів вхідних даних. OcrInput створюється за допомогою InputType.SingleImage або InputType.PDF, і один або декілька шляхів до файлів додаються у чергу за допомогою OcrInput.Add(). Для InputType.PDF кожна сторінка розпізнається та повертається у порядку джерела.

using Aspose.OCR;
var api = new AsposeOcr();
using var input = new OcrInput(InputType.SingleImage);
input.Add("scan.png");
RecognitionResult result = api.Recognize(input)[0];
Console.WriteLine(result.RecognitionText);

Текст на рівні рядка та піксельні координати

Кожен RecognitionResult повертає повний текст сторінки через RecognitionText, а окремі розпізнані рядки — через RecognitionLinesResult — список записів RecognitionResult.LinesResult, кожен з яких містить TextInLine і System.Drawing.Rectangle у Line, що дає піксельні координати цього рядка у вихідному зображенні.

foreach (RecognitionResult.LinesResult line in result.RecognitionLinesResult)
{
    Console.WriteLine($"{line.Line}: {line.TextInLine}");
}

Пакетна обробка кількох файлів

OcrInput може містити більше одного файлу. OcrOutput — значення, що повертає Recognize() — є списком RecognitionResult, по одному на зображення або сторінку PDF, зберігаючи оригінальний порядок, у якому файли були додані.

using var input = new OcrInput(InputType.SingleImage);
input.Add("page-1.jpg");
input.Add("page-2.png");
OcrOutput output = api.Recognize(input);

Швидкий старт

dotnet add package Aspose.OCR.FOSS

Наведений нижче приклад розпізнає кожну сторінку PDF за допомогою AsposeOcr.Recognize() і виводить текст кожної сторінки разом з її окремими розпізнаними рядками та їх піксельними координатами.

using Aspose.OCR;

var api = new AsposeOcr();
using var input = new OcrInput(InputType.PDF);
input.Add("document.pdf");

OcrOutput output = api.Recognize(input);

foreach (RecognitionResult page in output)
{
    Console.WriteLine(page.RecognitionText);

    foreach (RecognitionResult.LinesResult line in page.RecognitionLinesResult)
    {
        Console.WriteLine($"{line.Line}: {line.TextInLine}");
    }
}

Єдиними підтримуваними типами вхідних даних є InputType.SingleImage та InputType.PDF; будь-який інший тип даних викликає NotSupportedException.


Відкритий код та ліцензування

Aspose.OCR FOSS для .NET випущений під ліцензією MIT. Його можна використовувати, модифікувати та розповсюджувати — у тому числі в комерційних продуктах — без додаткових ліцензійних платежів. Джерело доступне на GitHub.


Початок роботи

Пов’язані ресурси