L’intégration d’Aspose.OCR avec Amazon S3 permet aux développeurs de profiter du stockage en nuage pour stocker efficacement les résultats de la reconnaissance des caractères optiques. Cette intégration ne simplifie pas seulement la gestion des données OCR, mais améliore également l’escalabilité et l’accessibilité. Dans ce tutoriel, nous allons parcourir le processus de mise en place d’ASPOSE.OCR pour travailler sans cesse avec AWS S3, fournissant des exemples détaillés et des meilleures pratiques tout au long du chemin.

Exemple complet

Principaux

  • .NET 8 (ou .Net 6+) SDK est installé.
  • Un compte AWS avec accès à Amazon S3.
  • Une poignée (par exemple, my-ocr-demo-bucketdans votre région préférée (exemple ci-dessous utilisé ap-south-1).
  • (Optionnel) Aspose le fichier de licence si vous voulez exécuter l’évaluation.

Étape 1 : Mettre en place Aspose.OCR pour .NET

Installez une nouvelle application de console et ajoutez des paquets 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

L’aspiration fournit les deux Aspose.OCR CPU) et Aspose.OCR-GPU Les paquets via NuGet; vous n’avez besoin que d’un. (La documentation d’Aspose)

Étape 2 : Configurer AWS SDK pour .NET

Configurez votre profil AWS et créez un bucket (skip si vous avez déjà un).

# 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

Politique minimale recommandée IAM (attache à votre utilisateur / rôle) pour ce tutoriel:

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

Le SDK AWS pour .NET utilise la chaîne d’accréditation par défaut; AWS_PROFILE=ocr-s3 Les modèles Core S3 (create, upload, download) sont documentés dans les exemples officiels .NET de AWS. (La documentation AWS)

Étape 3 : Initialiser Aspose.OCR API

Créer une base Program.cs Nous allons également définir l’anglais comme détection de langue et de layout de document. (Tous les types indiqués ci-dessous proviennent de la surface actuelle Aspose.OCR API.) (Étiquette.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...
    }
}

Les APIs clés que nous utiliserons suivants :

  • AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings) Retour à A RecognitionResult.
  • RecognitionResult.RecognitionText / GetJson(bool) / Save(...) Laissez-vous exporter les résultats à TXT/JSON/PDF/DOCX. (Étiquette.aspose.com)

Étape 4 : Télécharger les images sur S3

Vous pouvez télécharger des images de disque à S3 avec PutObjectAsync(Vous pouvez également télécharger des flux; les deux sont soutenus par 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}.");

Voir les exemples de .NET S3 pour les modèles de téléchargement. (La documentation AWS)

Étape 5: Effectuer l’OCR sur les images téléchargées

Stream l’objet S3 directement dans la mémoire et passez le MemoryStream à l’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);

Le RecognizeImage surcharge et RecognitionResult.RecognitionText Ils font partie de la référence API actuelle. (Étiquette.aspose.com)

Étape 6: Enregistrer les résultats OCR dans S3

Vous pouvez télécharger un texte plain, JSON, ou même un PDF/DOCX produit par Aspose.OCR.

6. a) Enregistrer comme texte clair

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) Enregistrer les détails 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) Enregistrer un PDF (ou DOCX) recherchable et mettre à 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}");

Les méthodes d’exportation et de sauvegarde (RecognitionResult.Save) et les formats (TXT/PDF/DOCX) sont dans la référence officielle API. ([reference.aspose.com][4])

Étiquette : End-to-End Program.cs

Voici une version end-to-end compacte que vous pouvez jeter dans Program.cs (Combinaison des étapes 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.");
    }
}

Migliori pratiche

L’intégration d’Aspose.OCR avec AWS S3 offre de nombreux avantages, y compris une gestion améliorée des données et une meilleure scalabilité.

    • Sécurité *
  • N’utilisez jamais les secrets de code dur. aws configure + AWS_PROFILE locaux; utiliser les rôles IAM dans la production.

  • Considérons le cryptage du côté du serveur S3 (AES256 ou KMS) sur les objets résultant, et les politiques per-bucket avec le moindre privilège (affiché ci-dessus).La documentation AWS)

  • La performance

  • Utilisez le package GPU (Aspose.OCR-GPU) sur le matériel capable de CUDA pour accélérer OCR ; même code, exécution plus rapide. (La documentation d’Aspose)

  • Pré-procession des images pour la qualité (découvre, dénoncer) en utilisant RecognitionSettings Précédents si nécessaire, et choisissez le bon DetectAreasMode pour les documents. les options API sont affichées dans la référence. (Étiquette.aspose.com)

    • La scalabilité *
  • Utilisez les préfixes S3 comme input/ et output/ par emploi, et stockez des objets OCR (TXT/JSON/PDF) ensemble pour la traçabilité.

  • Activer la version S3 si vous voulez des histoires auditives et des rollbacks.

  • Considérez le fonctionnement de ce flux dans des conteneurs ou sans serveur (par exemple, AWS Batch/ECS/Lambda avec EFS) pour un OCR parallèle à l’échelle.

En suivant ces lignes directrices, vous pouvez intégrer efficacement Aspose.OCR avec AWS S3 pour simplifier votre flux de travail OCR et améliorer la performance globale de votre application.

Les références

Si vous voulez, je peux aussi ajouter un petit Makefile ou PowerShell script pour exécuter ce end-to-end, plus un snippet CI (GitHub Actions) pour pousser les résultats à S3 sur comm.

[4] : https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ « RecognitionRésultat

More in this category