De integratie van Aspose.OCR met Amazon S3 stelt ontwikkelaars in staat om cloudopslag te gebruiken om optimaal de resultaten van Optical Character Recognition (OCR) op te slaan. Deze integration vergemakkelijkt niet alleen het beheer van OCR-gegevens, maar verbetert ook de schaalbaarheid en toegankelijkheid. In deze tutorial gaan we door het proces van het instellen van Aspo.ocR om naadloos te werken met AWS S3, met gedetailleerde voorbeelden en beste praktijken langs de weg.
Volledige voorbeeld
Voorwaarden
- .net 8 (of .NET 6+) SDK is geïnstalleerd.
- Een AWS-account met toegang tot Amazon S3.
- Een bucket (bijv.
my-ocr-demo-bucket
) in uw favoriete regio (bijvoorbeeld hieronder gebruikap-south-1
). - (Optioneel) Verwijder het licentiebestand als u verder wilt gaan dan de beoordeling.
Stap 1: Installeer Aspose.OCR voor .NET
Installeer een nieuwe console app en voeg NuGet pakketten toe.
# 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 biedt beide Aspose.OCR
(CPU) en Aspose.OCR-GPU
pakketten via NuGet; je hebt slechts één nodig. (Aspose documentatie)
Stap 2: Configureren van AWS SDK voor .NET
Configureer uw AWS-profiel en maak een bucket (skip als u er al een hebt).
# 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
Aanbevolen minimale IAM-beleid (bijdragen aan uw gebruiker/rol) voor deze 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/*" }
]
}
De AWS SDK voor .NET maakt gebruik van de standaardkern; AWS_PROFILE=ocr-s3
Core S3 patronen (create, upload, download) worden gedocumenteerd in de officiële .NET voorbeelden van AWS. (AWS documentatie)
Stap 3: Het initiëren van Aspose.OCR API
Een basis creëren Program.cs
We zullen ook Engels als taal- en documentlayout detectie instellen. (Alle soorten hieronder zijn van de huidige Aspose.OCR API-oppervlak.) (verwijzingen.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...
}
}
De belangrijkste API’s gebruiken we als volgt:
AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings)
Terug naar ARecognitionResult
.RecognitionResult.RecognitionText
/GetJson(bool)
/Save(...)
Laat de resultaten worden uitgevoerd naar TXT/JSON/PDF/DOCX. (verwijzingen.aspose.com)
Stap 4: Uploaden van afbeeldingen naar S3
U kunt afbeeldingen van de schijf naar S3 uploaden met PutObjectAsync
(U kunt ook streams uploaden; beide worden ondersteund door 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}.");
Zie voorbeelden van AWS’ .NET S3 voor uploadspatronen. (AWS documentatie)
Stap 5: Het uitvoeren van OCR op geüpload beelden
Stream het S3 object rechtstreeks naar het geheugen en passeren de MemoryStream
naar 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);
De RecognizeImage
Overlast en RecognitionResult.RecognitionText
is onderdeel van de huidige API-referentie. (verwijzingen.aspose.com)
Stap 6: Het opslaan van OCR-resultaten in S3
U kunt nette tekst, JSON of zelfs een PDF/DOCX die is geproduceerd door Aspose.OCR uploaden.
6. a) Bewaar als duidelijke tekst
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) Speel gedetailleerde 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) Save a searchable PDF (of DOCX) en zet 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}");
De uitvoer en besparingsmethoden (RecognitionResult.Save
) en formaten (TXT/PDF/DOCX) zijn in de officiële API referentie. ([reference.aspose.com][4])
Optie: End-to-end Program.cs
Hier is een compacte end-to-end versie die je in kunt vallen Program.cs
(Voordelen van stappen 3 tot 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 praktijken
Het integreren van Aspose.OCR met AWS S3 biedt tal van voordelen, waaronder verbeterd gegevensbeheer en verbeterde schaalbaarheid.
- Veiligheid *
nooit hardcode geheimen. gebruik
aws configure
+AWS_PROFILE
plaatselijk; gebruik van IAM-rollen in productie.Overweeg S3 server-side encryptie (AES256 of KMS) op resultaten objecten, en per-bucket beleid met het minste privilege (opgenomen hierboven).AWS documentatie)
prestaties
Gebruik het GPU-pakket (
Aspose.OCR-GPU
) op CUDA-capable hardware om OCR te versnellen; dezelfde code, sneller uitvoering. (Aspose documentatie)Preproces afbeeldingen voor kwaliteit (deskew, denoise) met behulp
RecognitionSettings
/ presets indien nodig, en kies de juisteDetectAreasMode
voor documenten. API-opties worden weergegeven in de referentie. (verwijzingen.aspose.com)- Schalbaarheid *
Gebruik S3 prefixes zoals
input/
enoutput/
per werk, en opslaan OCR-artifacten (TXT/JSON/PDF) samen voor traceerbaarheid.S3 versie mogelijk maken als u auditable geschiedenis en rollbacks wilt.
Overweeg deze stroom in containers of zonder server (bijvoorbeeld AWS Batch/ECS/Lambda met EFS) voor parallelle OCR op schaal.
Door deze richtlijnen te volgen, kunt u Aspose.OCR effectief integreren met AWS S3 om uw OCR-werkstroom te vergemakkelijken en de algemene prestaties van uw applicatie te verhogen.
References
- Opties en installatiepakketten (
Aspose.OCR
,Aspose.OCR-GPU
). (Aspose documentatie) AsposeOcr.RecognizeImage(...)
overlast;RecognitionResult.RecognitionText
,GetJson
,Save(...)
. (verwijzingen.aspose.com)- AWS SDK voor .NET: S3 maken / uploaden / downloaden voorbeelden. (AWS documentatie)
Als je wilt kan ik ook een klein stukje toevoegen. Makefile
of PowerShell script om deze end-to-end uit te voeren, plus een CI snippet (GitHub Actions) om de resultaten naar S3 op commit te drukken.
[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ “RecognitionResult♰