Интегрирование Aspose.OCR с Amazon S3 позволяет разработчикам использовать облачное хранилище для эффективного хранения результатов Оптического распознавания персонажей (ОКР). Эта интеграция не только упрощает управление данными OCR, но и улучшает масштабируемость и доступность. В этом учебном заведении мы пройдем через процесс установки ASPOSE.OCR для беспрепятственной работы с AWS S3, предоставляя подробные примеры и лучшие практики по пути.

Полный пример

Предупреждения

  • .NET 8 (или .Net 6+) SDK установлен.
  • Акаунт AWS с доступом к Amazon S3.
  • Вместе с тем, букет (например my-ocr-demo-bucketв вашем предпочтительном регионе (пример ниже используется ap-south-1).
  • (Опционально) Скачать лицензионный файл, если вы хотите запустить за пределы оценки.

Шаг 1: Настройка Aspose.OCR для .NET

Установите новую консоль и добавьте пакеты NuGet.

# Create project
dotnet new console -n OcrS3Demo -f net8.0
cd OcrS3Demo

# Add Aspose.OCR (CPU) OR Aspose.OCR-GPU (pick exactly one)
dotnet add package Aspose.OCR
# dotnet add package Aspose.OCR-GPU   # if you prefer GPU build

# Add AWS S3 SDK
dotnet add package AWSSDK.S3

Aspose обеспечивает оба Aspose.OCR CPU) и Aspose.OCR-GPU Пакеты через NuGet; вам нужен только один. (Aspose Документация)

Шаг 2: Конфигурирование AWS SDK для .NET

Настраивайте свой профиль AWS и создайте букет (скак, если у вас уже есть).

# Configure credentials (creates ~/.aws/credentials and config)
aws configure --profile ocr-s3
# AWS Access Key ID: AKIA****************
# AWS Secret Access Key: ************************
# Default region name: ap-south-1
# Default output format: json

# Create a bucket in that region (bucket name must be globally unique)
aws s3api create-bucket \
  --bucket my-ocr-demo-bucket \
  --region ap-south-1 \
  --create-bucket-configuration LocationConstraint=ap-south-1

Рекомендуемая минимальная политика IAM (присоединяется к вашему пользователю / роли) для этого урока:

{
  "Version": "2012-10-17",
  "Statement": [
    { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::my-ocr-demo-bucket" },
    { "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:::my-ocr-demo-bucket/*" }
  ]
}

SDK AWS для .NET использует предпочтительную цепочку аккредитации; AWS_PROFILE=ocr-s3 Выбирает ваш профиль автоматически, когда он работает локально. Core S3 шаблоны (создать, загружать, скачать) документируются в официальных примерах AWS .NET. (Документация AWS)

Шаг 3: Инициатива Aspose.OCR API

Создайте базовый Program.cs Мы также будем устанавливать английский язык как расположение языка и документа. (все типы, представленные ниже, являются из текущей поверхности API Aspose.OCR.) (ссылка.aspose.com)

using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using Aspose.OCR;

class Program
{
    static async Task Main(string[] args)
    {
        // Optional: load license if you have one
        // new License().SetLicense("Aspose.Total.lic");

        var ocr = new AsposeOcr();

        var settings = new RecognitionSettings
        {
            // pick your language(s); can combine if needed
            Language = Language.Eng,
            DetectAreasMode = DetectAreasMode.DOCUMENT
        };

        // We'll fill in S3 + OCR steps next...
    }
}

Ключевые АПИ мы будем использовать следующее:

  • AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings) Возвращается A RecognitionResult.
  • RecognitionResult.RecognitionText / GetJson(bool) / Save(...) Пусть вы экспортируете результаты в TXT/JSON/PDF/DOCX. (ссылка.aspose.com)

Шаг 4: Скачать изображения в S3

Вы можете загрузить изображения с диска в S3 с PutObjectAsync(Вы также можете загрузить потоки; оба поддерживаются AWS SDK.)

// Configure S3 client (uses your AWS_PROFILE locally)
var region = RegionEndpoint.APSouth1; // change if needed
using var s3 = new AmazonS3Client(region);

// Local image you want to OCR:
string localImagePath = @"D:\samples\invoices\invoice-001.png";
string bucket = "my-ocr-demo-bucket";
string objectKey = "input/invoice-001.png";

// Upload the image to S3
await s3.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    FilePath = localImagePath,
    ContentType = "image/png",
    // Optional: enable server-side encryption
    // ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
});
Console.WriteLine($"Uploaded {objectKey} to s3://{bucket}.");

Смотреть примеры .NET S3 для загрузки шаблонов. (Документация AWS)

Шаг 5: выполнение OCR на загруженных изображениях

Поток S3 объекта напрямую в память и переход через MemoryStream С помощью ASPOSE.OCR

// Download S3 object and OCR in-memory (no temp files)
var get = await s3.GetObjectAsync(bucket, objectKey);
await using var s3Stream = get.ResponseStream;
using var ms = new MemoryStream();
await s3Stream.CopyToAsync(ms);
ms.Position = 0;

// Run OCR (with settings → structured result)
RecognitionResult result = ocr.RecognizeImage(ms, settings);

// Or: if you just need plain text and defaults
// string textFast = ocr.RecognizeImage(ms);

string recognizedText = result.RecognitionText;
Console.WriteLine("=== OCR TEXT ===");
Console.WriteLine(recognizedText);

И в RecognizeImage перегрузки и RecognitionResult.RecognitionText Они являются частью текущей ссылки API. (ссылка.aspose.com)

Шаг 6: Сохранение результатов OCR в S3

Вы можете загрузить прямой текст, JSON или даже PDF/DOCX, созданный Aspose.OCR.

6.a) Сохранить как прямой текст

var textKey = "output/invoice-001.txt";
var textBytes = Encoding.UTF8.GetBytes(recognizedText);
await s3.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = textKey,
    InputStream = new MemoryStream(textBytes),
    ContentType = "text/plain"
});
Console.WriteLine($"Saved OCR text to s3://{bucket}/{textKey}");

6.b) Сохраните подробную JSON

var json = result.GetJson(true); // include additional data
var jsonKey = "output/invoice-001.json";
await s3.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = jsonKey,
    InputStream = new MemoryStream(Encoding.UTF8.GetBytes(json)),
    ContentType = "application/json"
});
Console.WriteLine($"Saved OCR JSON to s3://{bucket}/{jsonKey}");

6.c) Сохраните поисковый PDF (или DOCX) и поместите в S3

// Export to PDF in-memory, then upload
using var outPdf = new MemoryStream();
result.Save(outPdf, SaveFormat.Pdf, "Arial", PdfOptimizationMode.Basic);
outPdf.Position = 0;

var pdfKey = "output/invoice-001.pdf";
await s3.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = pdfKey,
    InputStream = outPdf,
    ContentType = "application/pdf"
});
Console.WriteLine($"Saved OCR PDF to s3://{bucket}/{pdfKey}");

Методы экспорта и сбережения (RecognitionResult.Save) и форматы (TXT/PDF/DOCX) находятся в официальной ссылке API. ([reference.aspose.com][4])

Опциональное: End-to-end Program.cs

Вот компактная конечная версия, в которую вы можете попасть Program.cs (Смешанные шаги 3 – 6):

using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using Aspose.OCR;

class Program
{
    static async Task Main()
    {
        // new License().SetLicense("Aspose.Total.lic"); // optional

        string bucket = "my-ocr-demo-bucket";
        string regionSystemName = "ap-south-1";
        string localImagePath = @"D:\samples\invoices\invoice-001.png";
        string imageKey = "input/invoice-001.png";

        var ocr = new AsposeOcr();
        var settings = new RecognitionSettings
        {
            Language = Language.Eng,
            DetectAreasMode = DetectAreasMode.DOCUMENT
        };

        using var s3 = new AmazonS3Client(RegionEndpoint.GetBySystemName(regionSystemName));

        // Upload original
        await s3.PutObjectAsync(new PutObjectRequest
        {
            BucketName = bucket,
            Key = imageKey,
            FilePath = localImagePath,
            ContentType = "image/png"
        });

        // Get image as stream
        var get = await s3.GetObjectAsync(bucket, imageKey);
        await using var s3Stream = get.ResponseStream;
        using var ms = new MemoryStream();
        await s3Stream.CopyToAsync(ms);
        ms.Position = 0;

        // OCR
        RecognitionResult result = ocr.RecognizeImage(ms, settings);
        string text = result.RecognitionText;

        // Upload text
        await s3.PutObjectAsync(new PutObjectRequest
        {
            BucketName = bucket,
            Key = "output/invoice-001.txt",
            InputStream = new MemoryStream(Encoding.UTF8.GetBytes(text)),
            ContentType = "text/plain"
        });

        // Upload JSON
        string json = result.GetJson(true);
        await s3.PutObjectAsync(new PutObjectRequest
        {
            BucketName = bucket,
            Key = "output/invoice-001.json",
            InputStream = new MemoryStream(Encoding.UTF8.GetBytes(json)),
            ContentType = "application/json"
        });

        // Upload PDF
        using var outPdf = new MemoryStream();
        result.Save(outPdf, SaveFormat.Pdf, "Arial", PdfOptimizationMode.Basic);
        outPdf.Position = 0;
        await s3.PutObjectAsync(new PutObjectRequest
        {
            BucketName = bucket,
            Key = "output/invoice-001.pdf",
            InputStream = outPdf,
            ContentType = "application/pdf"
        });

        Console.WriteLine("OCR complete and results stored in S3.");
    }
}

Лучшие практики

Интегрирование Aspose.OCR с AWS S3 предлагает множество преимуществ, в том числе улучшенное управление данными и повышенная масштабируемость.

  • • Безопасность*

  • Никогда не скрывайте тайны. используйте aws configure + AWS_PROFILE местно; использовать IAM роли в производстве.

  • Рассмотрим шифрование со стороны сервера S3 (AES256 или KMS) на объектах, полученных результатом, и политику по букету с минимальным привилегией (показано выше).Документация AWS)

  • производительность

  • Используйте пакет GPU (Aspose.OCR-GPU) на CUDA-способном оборудовании для ускорения OCR; тот же код, быстрее исполнение. (Aspose Документация)

  • Препроцесс изображений для качества (дескеу, отрицание) с использованием RecognitionSettings - в случае необходимости, и выбирайте правое DetectAreasMode для документов. API варианты отображаются в ссылке. (ссылка.aspose.com)

    • Скалируемость *
  • Используйте S3 Prefixes как input/ и output/ по работе, и хранить OCR артефакты (TXT/JSON/PDF) вместе для отслеживаемости.

  • Включите S3 версию, если вы хотите аудитную историю и повороты.

  • Рассмотрим, как этот поток работает в контейнерах или без сервера (например, AWS Batch/ECS/Lambda с EFS) для параллельного OCR по шкале.

Следуя этим рекомендациям, вы можете эффективно интегрировать Aspose.OCR с AWS S3, чтобы упростить рабочий поток OCR и улучшить общую производительность вашего приложения.

ссылки

Если вы хотите, я также могу добавить небольшой Makefile или PowerShell-скрипт, чтобы запустить этот фин-на-фин, а также снайпер CI (GitHub Actions) для подачи результатов в S3 на компромисс.

[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ «Результат признания»

More in this category