Integrarea Aspose.OCR cu Amazon S3 permite dezvoltatorilor să utilizeze stocarea în cloud pentru a stoca rezultatele Recunoașterii Caracterului Optic (OCR) în mod eficient. Această integrare nu numai că simplifică gestionarea datelor OCR, ci îmbunătățește, de asemenea, scalabilitatea și accesibilitatea. În acest tutorial, vom trece prin procesul de configurare a Asposa.ocR pentru ca lucrul să funcționeze fără probleme cu AWS S3, oferind exemple detaliate și cele mai bune practici pe tot parcursul drumului.
Exemplu complet
Prevederile
- .NET 8 (sau .Net 6+) SDK este instalat.
- Un cont AWS cu acces la Amazon S3.
- O bucată (de exemplu,
my-ocr-demo-bucket
în regiunea preferată (exemplul de mai jos utilizeazăap-south-1
). - (Opțional) Asposați fișierul de licență dacă doriți să rulați dincolo de evaluare.
Pasul 1: Setarea Aspose.OCR pentru .NET
Instalați o nouă aplicație de console și adăugați pachete 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
Aspoza oferă ambele Aspose.OCR
CPU şi Aspose.OCR-GPU
pachete prin NuGet; aveți nevoie doar de unul. (Documentație Asposa)
Pasul 2: Configurarea AWS SDK pentru .NET
Configurați-vă profilul AWS și creați un bucket (skip dacă aveți deja unul).
# 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
Politica minimă recomandată a IAM (adaptarea utilizatorului / rolului) pentru acest 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/*" }
]
}
SDK-ul AWS pentru .NET utilizează lanțul de acreditare predefinit; AWS_PROFILE=ocr-s3
Modele Core S3 (create, upload, download) sunt documentate în exemplele oficiale ale AWS .NET. (Documentare AWS)
Pasul 3: Inițializarea API-ului Aspose.OCR
Creați o bază Program.cs
De asemenea, vom stabili limba engleză ca detecție de limbă și layout document. (Toate tipurile prezentate mai jos sunt de la suprafața actuală a API-ului Aspose.OCR.) (de referință.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...
}
}
API-uri cheie pe care le vom folosi următoarele:
AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings)
Se întoarce laRecognitionResult
.RecognitionResult.RecognitionText
/GetJson(bool)
/Save(...)
Vă rugăm să exportați rezultatele la TXT/JSON/PDF/DOCX. (de referință.aspose.com)
Pasul 4: Încărcați imagini la S3
Puteți încărca imagini de pe disc la S3 cu PutObjectAsync
(Puteți, de asemenea, să încărcați fluxuri; ambele sunt susținute de 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}.");
A se vedea exemplele AWS .NET S3 pentru modelele de încărcare. (Documentare AWS)
Pasul 5: Realizarea OCR pe imagini încărcate
Stream obiectul S3 direct în memorie și trece prin MemoryStream
În acest sens.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);
pe care RecognizeImage
supraîncărcare şi RecognitionResult.RecognitionText
sunt parte a referinței actuale API. (de referință.aspose.com)
Pasul 6: stocarea rezultatelor OCR în S3
Puteți încărca text clar, JSON sau chiar un PDF/DOCX produs de Aspose.OCR.
6.a) Salvați ca text clar
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) Salvați detaliat 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) Salvați un PDF (sau DOCX) care poate fi căutat și puneți în 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}");
Metodele de export și de economisire (RecognitionResult.Save
) și formatele (TXT/PDF/DOCX) sunt în referința API oficială. ([reference.aspose.com][4])
Etichetă: end-to-end Program.cs
Iată o versiune compactă end-to-end pe care o puteți descărca în Program.cs
(Combinați pașii 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.");
}
}
Cele mai bune practici
Integrarea Aspose.OCR cu AWS S3 oferă numeroase beneficii, inclusiv o gestionare îmbunătățită a datelor și o scalabilitate mai bună.
- Securitate *
Niciodată secretul hardcode. utilizare
aws configure
+AWS_PROFILE
local; utilizarea rolurilor IAM în producție.Gândiți-vă la criptarea server-side S3 (AES256 sau KMS) pe obiectele rezultate, și la politicile per-bucket cu cel mai mic privilegiu (a arătat mai sus).Documentare AWS)
performanță
Folosiți pachetul GPU (
Aspose.OCR-GPU
pe hardware-capabil CUDA pentru a accelera OCR; același cod, execuție mai rapidă. (Documentație Asposa)Imagini preprocesate pentru calitate (descew, denoise) folosind
RecognitionSettings
/ prezete, dacă este necesar, și alege dreaptaDetectAreasMode
pentru documente. opțiunile API sunt afișate în referință. (de referință.aspose.com)• Scalabilitate *
Utilizarea prefixelor S3 ca
input/
şioutput/
pe locul de muncă, și stocarea de articole OCR (TXT/JSON/PDF) împreună pentru trasabilitate.Permiteți versiunea S3 dacă doriți istorie audibilă și rolback-uri.
Gândiți-vă să rulați acest flux în containere sau fără server (de exemplu, AWS Batch/ECS/Lambda cu EFS) pentru OCR paralel la scară.
Urmând aceste orientări, puteți integra în mod eficient Aspose.OCR cu AWS S3 pentru a vă simplifica fluxul de lucru OCR și a îmbunătăți performanța generală a aplicației.
References
- Pachete și opțiuni de instalare (
Aspose.OCR
,Aspose.OCR-GPU
). (Documentație Asposa) AsposeOcr.RecognizeImage(...)
supraîncărcări;RecognitionResult.RecognitionText
,GetJson
,Save(...)
. (de referință.aspose.com)- AWS SDK pentru .NET: S3 create/upload/download exemple. (Documentare AWS)
Dacă doriți, pot adăuga și un mic Makefile
sau scriptul PowerShell pentru a rula acest end-to-end, plus un snippet CI (Acțiuni GitHub) de a împinge rezultatele la S3 pe angajament.
[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ „RecognitionRezultă