Integrarea Aspose.OCR cu Amazon S3 permite dezvoltatorilor să utilizeze stocarea în cloud pentru a stoca rezultatele Recunoașterii Caracterului Optic (OCR) în mod eficient. Această integrare nu numai că simplifică gestionarea datelor OCR, ci îmbunătățește, de asemenea, scalabilitatea și accesibilitatea. În acest tutorial, vom trece prin procesul de configurare a Asposa.ocR pentru ca lucrul să funcționeze fără probleme cu AWS S3, oferind exemple detaliate și cele mai bune practici pe tot parcursul drumului.

Exemplu complet

Prevederile

  • .NET 8 (sau .Net 6+) SDK este instalat.
  • Un cont AWS cu acces la Amazon S3.
  • O bucată (de exemplu, my-ocr-demo-bucketîn regiunea preferată (exemplul de mai jos utilizează ap-south-1).
  • (Opțional) Asposați fișierul de licență dacă doriți să rulați dincolo de evaluare.

Pasul 1: Setarea Aspose.OCR pentru .NET

Instalați o nouă aplicație de console și adăugați pachete 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 oferă ambele Aspose.OCR CPU şi Aspose.OCR-GPU pachete prin NuGet; aveți nevoie doar de unul. (Documentație Asposa)

Pasul 2: Configurarea AWS SDK pentru .NET

Configurați-vă profilul AWS și creați un bucket (skip dacă aveți deja unul).

# 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

Politica minimă recomandată a IAM (adaptarea utilizatorului / rolului) pentru acest tutorial:

{
  "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-ul AWS pentru .NET utilizează lanțul de acreditare predefinit; AWS_PROFILE=ocr-s3 Modele Core S3 (create, upload, download) sunt documentate în exemplele oficiale ale AWS .NET. (Documentare AWS)

Pasul 3: Inițializarea API-ului Aspose.OCR

Creați o bază Program.cs De asemenea, vom stabili limba engleză ca detecție de limbă și layout document. (Toate tipurile prezentate mai jos sunt de la suprafața actuală a API-ului Aspose.OCR.) (de referință.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...
    }
}

API-uri cheie pe care le vom folosi următoarele:

  • AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings) Se întoarce la RecognitionResult.
  • RecognitionResult.RecognitionText / GetJson(bool) / Save(...) Vă rugăm să exportați rezultatele la TXT/JSON/PDF/DOCX. (de referință.aspose.com)

Pasul 4: Încărcați imagini la S3

Puteți încărca imagini de pe disc la S3 cu PutObjectAsync(Puteți, de asemenea, să încărcați fluxuri; ambele sunt susținute de 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}.");

A se vedea exemplele AWS .NET S3 pentru modelele de încărcare. (Documentare AWS)

Pasul 5: Realizarea OCR pe imagini încărcate

Stream obiectul S3 direct în memorie și trece prin MemoryStream În acest sens.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);

pe care RecognizeImage supraîncărcare şi RecognitionResult.RecognitionText sunt parte a referinței actuale API. (de referință.aspose.com)

Pasul 6: stocarea rezultatelor OCR în S3

Puteți încărca text clar, JSON sau chiar un PDF/DOCX produs de Aspose.OCR.

6.a) Salvați ca text clar

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) Salvați detaliat 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) Salvați un PDF (sau DOCX) care poate fi căutat și puneți în 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}");

Metodele de export și de economisire (RecognitionResult.Save) și formatele (TXT/PDF/DOCX) sunt în referința API oficială. ([reference.aspose.com][4])

Etichetă: end-to-end Program.cs

Iată o versiune compactă end-to-end pe care o puteți descărca în Program.cs (Combinați pașii 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.");
    }
}

Cele mai bune practici

Integrarea Aspose.OCR cu AWS S3 oferă numeroase beneficii, inclusiv o gestionare îmbunătățită a datelor și o scalabilitate mai bună.

    • Securitate *
  • Niciodată secretul hardcode. utilizare aws configure + AWS_PROFILE local; utilizarea rolurilor IAM în producție.

  • Gândiți-vă la criptarea server-side S3 (AES256 sau KMS) pe obiectele rezultate, și la politicile per-bucket cu cel mai mic privilegiu (a arătat mai sus).Documentare AWS)

  • performanță

  • Folosiți pachetul GPU (Aspose.OCR-GPUpe hardware-capabil CUDA pentru a accelera OCR; același cod, execuție mai rapidă. (Documentație Asposa)

  • Imagini preprocesate pentru calitate (descew, denoise) folosind RecognitionSettings / prezete, dacă este necesar, și alege dreapta DetectAreasMode pentru documente. opțiunile API sunt afișate în referință. (de referință.aspose.com)

  • • Scalabilitate *

  • Utilizarea prefixelor S3 ca input/ şi output/ pe locul de muncă, și stocarea de articole OCR (TXT/JSON/PDF) împreună pentru trasabilitate.

  • Permiteți versiunea S3 dacă doriți istorie audibilă și rolback-uri.

  • Gândiți-vă să rulați acest flux în containere sau fără server (de exemplu, AWS Batch/ECS/Lambda cu EFS) pentru OCR paralel la scară.

Urmând aceste orientări, puteți integra în mod eficient Aspose.OCR cu AWS S3 pentru a vă simplifica fluxul de lucru OCR și a îmbunătăți performanța generală a aplicației.

References

Dacă doriți, pot adăuga și un mic Makefile sau scriptul PowerShell pentru a rula acest end-to-end, plus un snippet CI (Acțiuni GitHub) de a împinge rezultatele la S3 pe angajament.

[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ „RecognitionRezultă

More in this category