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-bucket
in Ihrer bevorzugten Region (beispiele unten verwendetap-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 ARecognitionResult
.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 richtigeDetectAreasMode
für Dokumente. API-Optionen sind in der Referenz angezeigt. (Referenz.aspose.com)- Skalierbarkeit *
Verwenden Sie S3 Prefixes wie
input/
undoutput/
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