Att integrera Aspose.OCR med Amazon S3 gör det möjligt för utvecklare att använda molnlagring för att lagra Optical Character Recognition (OCR) resultat på ett effektivt sätt. Denna integration förenklar inte bara hanteringen av OCR-data utan förbättrar också skalbarhet och tillgänglighet. I denna tutorial kommer vi att gå igenom processen att ställa in Asposa.ocR att arbeta smidigt med AWS S3, vilket ger detaljerade exempel och bästa praxis längs vägen.
Fullständigt exempel
förutsättningar
- .NET 8 (eller .Net 6+) SDK installeras.
- Ett AWS-konto med åtkomst till Amazon S3.
- Det är en bukett (t.ex.
my-ocr-demo-bucket
) i din favoritregion (exempel nedan använderap-south-1
). - (Optionell) Ta bort licensfilen om du vill köra utöver utvärderingen.
Steg 1: Ställ upp Aspose.OCR för .NET
Installera en ny konsolapp och lägga till NuGet-paket.
# 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
Aspos ger båda Aspose.OCR
CPU) och Aspose.OCR-GPU
paket via NuGet; du behöver bara en. (Aspos dokumentation)
Steg 2: Konfigurera AWS SDK för .NET
Konfigurera din AWS-profil och skapa en bucket (skip om du redan har en).
# 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
Rekommenderad minimal IAM policy (attack till din användare/rollen) för denna 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/*" }
]
}
AWS SDK för .NET använder standardkrediteringskedjan. AWS_PROFILE=ocr-s3
Core S3 mönster (skapa, ladda ner, hämta) dokumenteras i AWS officiella .NET-exempler. (AWS dokumentation)
Steg 3: Initialisera Aspose.OCR API
Skapa en bas Program.cs
Vi kommer också att ställa in engelska som språk och dokument layout detektion. (alla typer som visas nedan är från den aktuella Aspose.OCR API ytan.) (omdöme.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...
}
}
Viktiga APIs vi kommer att använda följande:
AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings)
Återvänder ARecognitionResult
.RecognitionResult.RecognitionText
/GetJson(bool)
/Save(...)
Låt du exportera resultat till TXT/JSON/PDF/DOCX. (omdöme.aspose.com)
Steg 4: Ladda upp bilder till S3
Du kan ladda upp bilder från disken till S3 med PutObjectAsync
(Du kan också ladda upp strömmar; båda stöds av 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}.");
Se AWS .NET S3 exempel för uppladdning mönster. (AWS dokumentation)
Steg 5: Utföra OCR på laddade bilder
Ström S3-objektet direkt in i minnet och passera MemoryStream
Till 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);
och den RecognizeImage
överbelastning och RecognitionResult.RecognitionText
är en del av den aktuella API referensen. (omdöme.aspose.com)
Steg 6: Spara OCR-resultat i S3
Du kan ladda upp platt text, JSON, eller till och med en PDF/DOCX som produceras av Aspose.OCR.
6.a) Spara som tydlig 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) Spara detaljerad 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) Spara en sökbar PDF (eller DOCX) och lägga till 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}");
Exportera och spara metoder (RecognitionResult.Save
) och format (TXT/PDF/DOCX) är i den officiella API referensen. ([reference.aspose.com][4])
Alternativt: End-to-end Program.cs
Här är en kompakt end-to-end version som du kan släppa in Program.cs
(Kombinerade steg 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.");
}
}
Bästa praxis
Att integrera Aspose.OCR med AWS S3 erbjuder många fördelar, inklusive förbättrad datahantering och bättre skalbarhet.
- Säkerhet *
Aldrig hårdkod hemligheter. använd
aws configure
+AWS_PROFILE
lokalt; använda IAM-roller i produktion.Tänk på S3 server-side kryptering (AES256 eller KMS) på resultatobjekt, och per-bucket policyer med minst privilegier (visas ovan). AWS officiella C# S3-exempel täcker baslinjeoperationer och mönster. (AWS dokumentation)
prestanda
Använd GPU-paketet (
Aspose.OCR-GPU
) på CUDA-kapabel hårdvara för att påskynda OCR; samma kod, snabbare genomförande. (Aspos dokumentation)Förbehandling av bilder för kvalitet (deskew, denoise) med
RecognitionSettings
/ presets om nödvändigt, och välj rättDetectAreasMode
för dokument. API-alternativ visas i referensen. (omdöme.aspose.com)- Skalbarhet *
Använd S3 Prefix som
input/
ochoutput/
per jobb, och lagra OCR-artiklar (TXT/JSON/PDF) tillsammans för spårbarhet.Aktivera S3-versionering om du vill ha redo historia och rollbacks.
Tänk på att köra denna flöde i behållare eller utan server (t.ex. AWS Batch/ECS/Lambda med EFS) för parallell OCR i skala.
Genom att följa dessa riktlinjer kan du effektivt integrera Aspose.OCR med AWS S3 för att effektivisera din OCR-arbetsflöde och förbättra din applikations övergripande prestanda.
Referenser
- S.O.C.R.P.S.A. paket och installationsalternativ (
Aspose.OCR
,Aspose.OCR-GPU
). (Aspos dokumentation) AsposeOcr.RecognizeImage(...)
överbelastningRecognitionResult.RecognitionText
,GetJson
,Save(...)
. (omdöme.aspose.com)- AWS SDK för .NET: S3 skapa/upload/download exempel. (AWS dokumentation)
Om du vill kan jag också lägga till en liten Makefile
eller PowerShell-skriptet för att köra denna slut-till-änd, plus en CI-snippet (GitHub-åtgärder) att trycka på resultaten till S3 på engagemang.
[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ “RecognitionResultatet