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-bucket
dans 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 à ARecognitionResult
.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 bonDetectAreasMode
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/
etoutput/
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
- Les options d’installation et les paquets de l’ASP (
Aspose.OCR
,Aspose.OCR-GPU
). (La documentation d’Aspose) AsposeOcr.RecognizeImage(...)
surcharge ;RecognitionResult.RecognitionText
,GetJson
,Save(...)
. (Étiquette.aspose.com)- AWS SDK pour .NET: S3 Créer / télécharger/download des exemples. (La documentation AWS)
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