Die Integration von Aspose.OCR mit Amazon S3 ermöglicht Entwicklern, Cloud-Speicher zu nutzen, um die Ergebnisse der Optical Character Recognition (OCR) effizient zu speichern. Diese Integrierung vereinfacht nicht nur die Verwaltung von OCR-Daten, sondern verbessert auch die Skalierbarkeit und Zugänglichkeit. In diesem Tutorial gehen wir durch den Prozess der Einstellung von ASPOSE.OKR und arbeiten unsicher mit AWS S3, um detaillierte Beispiele und beste Praktiken auf dem Weg zu liefern.

Vollständiges Beispiel

Voraussetzung

  • .NET 8 (oder .Net 6+) SDK installiert.
  • Ein AWS-Konto mit Zugriff auf Amazon S3.
  • Ein Bucket (z. B. my-ocr-demo-bucketin Ihrer bevorzugten Region (beispiele unten verwendet ap-south-1).).
  • (Optional) Verspüren Sie die Lizenzdatei, wenn Sie über die Bewertung hinausgehen möchten.

Schritt 1: Installieren Sie Aspose.OCR für .NET

Installieren Sie eine neue Konsolen-App und fügen Sie NuGet-Pakete hinzu.

# 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 bietet beide Aspose.OCR CPU) und Aspose.OCR-GPU Pakete über NuGet; Sie brauchen nur einen. (Aspose Dokumentation)

Schritt 2: Konfigurieren von AWS SDK für .NET

Konfigurieren Sie Ihr AWS-Profil und erstellen Sie einen Bucket (Skip, wenn Sie bereits einen haben).

# 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

Empfohlene minimale IAM-Politik (Anschluss an Ihren Benutzer/Rolle) für dieses 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/*" }
  ]
}

Das AWS SDK für .NET verwendet die Standardkennzeile; AWS_PROFILE=ocr-s3 Die Core S3 Muster (Create, upload, download) werden in den offiziellen .NET Beispielen von AWS dokumentiert.AWS Dokumentation)

Schritt 3: Initialisierung der Aspose.OCR API

Eine Basis erstellen Program.cs mit OCR-Motor-Initialisierung. Wir werden auch Englisch als Sprache und Dokument-Layout-Detektion festlegen. (Alle nachfolgend angezeigten Typen sind von der aktuellen Aspose.OCR API Oberfläche.) (Referenz.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...
    }
}

Key APIs werden wir nachfolgend verwenden:

  • AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings) Rückkehr A RecognitionResult.
  • RecognitionResult.RecognitionText / GetJson(bool) / Save(...) lassen Sie die Ergebnisse in TXT/JSON/PDF/DOCX exportieren. (Referenz.aspose.com)

Schritt 4: Laden Sie Bilder auf S3

Sie können Bilder von Disk auf S3 hochladen mit PutObjectAsync(Sie können auch Streams hochladen; beide werden von AWS SDK unterstützt.)

// 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}.");

Sehen Sie AWS .NET S3 Beispiele für upload patterns. (AWS Dokumentation)

Schritt 5: Ausführen von OCR auf hochgeladenen Bildern

Streamen Sie das S3 Objekt direkt in das Speicher und übertragen MemoryStream zu 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);

The RecognizeImage Überlastung und RecognitionResult.RecognitionText Sie sind Teil der aktuellen API-Referenz. (Referenz.aspose.com)

Schritt 6: Speichern von OCR Ergebnissen in S3

Sie können klares Text, JSON oder sogar ein PDF/DOCX hochladen, das von Aspose.OCR produziert wird.

6. a) Speichern Sie als klares Text

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) Speichern Sie detaillierte 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) Speichern Sie ein Suchbares PDF (oder DOCX) und geben Sie es in 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}");

Ausfuhr- und Sparmethoden (RecognitionResult.Save) und Formate (TXT/PDF/DOCX) sind in der offiziellen API-Referenz. ([reference.aspose.com][4])

Alternative: End-to-End Program.cs

Hier ist eine kompakte End-to-End-Version, in die Sie fallen können Program.cs (Kombinationen von Schritten 3 bis 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.");
    }
}

Beste Praktiken

Die Integration von Aspose.OCR mit AWS S3 bietet zahlreiche Vorteile, einschließlich verbesserter Datenmanagement und verbesserte Skalierbarkeit.

    • Sicherheit*
  • nie Hardcode Geheimnisse. verwenden aws configure + AWS_PROFILE lokalerweise; IAM-Rollen in der Produktion verwenden.

  • Betrachten Sie die S3 Server-Side-Cryption (AES256 oder KMS) auf Ergebnisseobjekte und per-bucket-Politik mit dem geringsten Privileg (siehe oben).AWS Dokumentation)

  • Leistung

  • Verwenden Sie das GPU-Paket (Aspose.OCR-GPU) auf CUDA-fähiger Hardware, um OCR zu beschleunigen; der gleiche Code, schneller Ausführung. (Aspose Dokumentation)

  • Vorverarbeitete Bilder für Qualität (deskew, denoise) mit RecognitionSettings Präsetieren Sie, wenn nötig, und wählen Sie die richtige DetectAreasMode für Dokumente. API-Optionen sind in der Referenz angezeigt. (Referenz.aspose.com)

    • Skalierbarkeit *
  • Verwenden Sie S3 Prefixes wie input/ und output/ pro Job und Speichern von OCR-Artikel (TXT/JSON/PDF) zusammen für die Traceability.

  • Aktivieren Sie die S3-Version, wenn Sie auditive Geschichte und Rollbacks wünschen.

  • Betrachten Sie diesen Fluss in Behältern oder ohne Server (z. B. AWS Batch/ECS/Lambda mit EFS) für parallele OCR-Scale.

Durch die Einhaltung dieser Leitlinien können Sie Aspose.OCR effektiv mit AWS S3 integrieren, um Ihren OCR-Workfluss zu vereinfachen und die Gesamtleistung Ihrer Anwendung zu verbessern.

Referenzen

  • Abkürzungsanlagen und Installationsoptionen (Aspose.OCR, Aspose.OCR-GPU). (Aspose Dokumentation)
  • AsposeOcr.RecognizeImage(...) überlastet werden; RecognitionResult.RecognitionText, GetJson, Save(...). (Referenz.aspose.com)
  • AWS SDK für .NET: S3 erstellen / hochladen / herunterladen Beispiele. (AWS Dokumentation)

Wenn du willst, kann ich auch eine kleine Makefile oder PowerShell-Skripte, um dieses End-to-End auszuüben, plus ein CI-Snippet (GitHub-Aktionen), um die Ergebnisse auf S3 zu drücken.

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

More in this category