Integracja Aspose.OCR z Amazon S3 pozwala deweloperom na korzystanie z magazynu w chmurze, aby efektywnie przechowywać wyniki rozpoznawania charakteru optycznego (OCR). ta integracja nie tylko ułatwia zarządzanie danymi OCR, ale także poprawia skalowalność i dostępność. W tym podręczniku przejdziemy przez proces ustawienia ASPOSE.OKR do bezprzewodowej pracy z AWS S3, dostarczając szczegółowych przykładów i najlepszych praktyk wzdłuż drogi.

Pełny przykład

Warunki

  • Zainstalowany jest .NET 8 (lub .Net 6+) SDK.
  • Konto AWS z dostępem do Amazon S3.
  • Płytki (na przykład my-ocr-demo-bucketw preferowanym regionie (przykład poniżej używa ap-south-1).
  • (Opcjonalny) Wstrzymaj plik licencji, jeśli chcesz wykonać poza ocenę.

Krok 1: Ustaw Aspose.OCR dla .NET

Zainstaluj nową aplikację konsoli i dodaj pakiety 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

Aspoza zapewnia obie Aspose.OCR CPU) i Aspose.OCR-GPU Pakiety za pośrednictwem NuGet; potrzebujesz tylko jednego.Asposa dokumentacja)

Krok 2: Konfiguracja AWS SDK dla .NET

Konfiguruj swój profil AWS i utwórz bucket (skip, jeśli już go masz).

# 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

Zalecane minimalne zasady IAM (przywiązanie do użytkownika / roli) dla tego tutorialu:

{
  "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/*" }
  ]
}

AWS SDK dla .NET wykorzystuje domyślny łańcuch uwierzytelniania; ustawienia AWS_PROFILE=ocr-s3 Wzorce Core S3 (tworzenie, przesyłanie, pobieranie) są dokumentowane w oficjalnych przykładach .NET AWS. (Dokumentacja AWS)

Krok 3: Inicjalizacja Aspose.OCR API

Tworzenie podstawy Program.cs z inicjalizacją silnika OCR. Ustawimy również język angielski jako wykrycie języka i układu dokumentu. (Wszystkie typy przedstawione poniżej pochodzą z obecnej powierzchni API Aspose.OCR.) (Źródło: 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...
    }
}

Kluczowe API będziemy używać następująco:

  • AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings) Powrót A RecognitionResult.
  • RecognitionResult.RecognitionText / GetJson(bool) / Save(...) Pozwól wyeksportować wyniki do TXT/JSON/PDF/DOCX. (Źródło: aspose.com)

Krok 4: Pobierz zdjęcia do S3

Możesz przesyłać obrazy z dysku do S3 z PutObjectAsync(Możesz również przesyłać strumienia; oba są obsługiwane przez 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}.");

Zobacz przykłady AWS .NET S3 dla wzorców przesyłania. (Dokumentacja AWS)

Krok 5: Wykonanie OCR na przesyłanych obrazach

Przenosić obiekt S3 bezpośrednio do pamięci i przejść przez MemoryStream do 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);

W tym RecognizeImage przepływów i RecognitionResult.RecognitionText jest częścią bieżącego odniesienia API. (Źródło: aspose.com)

Krok 6: Przechowywanie wyników OCR w S3

Możesz pobrać płaski tekst, JSON lub nawet PDF/DOCX wyprodukowany przez Aspose.OCR.

6. a) Zapisz jako płaski tekst

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) Zapisz szczegółowe 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) Zapisz wyszukiwalny PDF (lub DOCX) i umieścić na 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}");

Wywoz i oszczędności (RecognitionResult.Save) i formaty (TXT/PDF/DOCX) znajdują się w oficjalnej referencji API. ([reference.aspose.com][4])

Opcjonalne: End-to-end Program.cs

Oto kompaktowa wersja end-to-end, do której możesz wkroczyć Program.cs (Przekierowano kroki 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.");
    }
}

Najlepsze praktyki

Integracja Aspose.OCR z AWS S3 oferuje wiele korzyści, w tym poprawione zarządzanie danymi i poprawiona skalowalność.

    • Bezpieczeństwo *
  • Nigdy nie używaj tajnych kodów. aws configure + AWS_PROFILE lokalnie; wykorzystanie rol IAM w produkcji.

  • Uważaj na szyfrowanie strony serwera S3 (AES256 lub KMS) na wynikach obiektów, a polityki per-bucket z najmniejszym przywilejem (wyświetlane powyżej).Dokumentacja AWS)

  • wydajność

  • Użyj pakietu GPU (Aspose.OCR-GPU) na sprzęcie zdolnym CUDA do przyspieszenia OCR; ten sam kod, szybsze wykonanie. (Asposa dokumentacja)

  • Wstępne przetwarzanie obrazów dla jakości (deskew, denoise) przy użyciu RecognitionSettings W razie potrzeby wybierz odpowiednią DetectAreasMode Opcje API są wyświetlane w odniesieniu. (Źródło: aspose.com)

    • Skaliwność *
  • Użyj S3 prefixów jak input/ i output/ Przez pracę i przechowywać wspólnie artefakty OCR (TXT/JSON/PDF) w celu umożliwienia śledzenia.

  • Umożliwia wersję S3, jeśli chcesz audytowej historii i zwrotów.

  • Uważaj, że ten przepływ działa w pojemnikach lub bez serwera (np. AWS Batch/ECS/Lambda z EFS) dla równoległego OCR na skalę.

Postępując zgodnie z tymi wytycznymi, możesz skutecznie zintegrować Aspose.OCR z AWS S3 w celu upraszczenia przepływu pracy OCR i poprawy ogólnej wydajności aplikacji.

Referencje

  • Pakiety i opcje instalacji (Aspose.OCR, Aspose.OCR-GPU). (Asposa dokumentacja)
  • AsposeOcr.RecognizeImage(...) nadmierne obciążenie; RecognitionResult.RecognitionText, GetJson, Save(...). (Źródło: aspose.com)
  • AWS SDK dla .NET: S3 tworzyć/przesyłać/download przykłady. (Dokumentacja AWS)

Jeśli chcesz, mogę również dodać mały Makefile lub skrypt PowerShell do uruchomienia tego końcowego do końca, plus odcinek CI (Działania GitHub), aby naciskać wyniki do S3 na zaangażowanie.

[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ “RozpoznanieWyniki

More in this category