אינטגרציה של Aspose.OCR עם Amazon S3 מאפשרת למפתחים לשפר את אחסון הענן כדי לאחסן את תוצאות זיהוי אופי אופטי (OCR) ביעילות.השילוב הזה לא רק מקדם את ניהול הנתונים של OCR, אלא גם מגביר את ההרחבה והגישה.במדריך זה, נלך דרך תהליך ההגדרה של ASPOSE.OKR לעבוד בקלות עם AWS S3, המספק דוגמאות מפורטות ושיטות טובות לאורך הדרך.
דוגמה מלאה
דרישות
- התקנת .NET 8 (או .Net 6+) SDK.
- חשבון AWS עם גישה לאמזון S3.
- חבילה אחת (לדוגמה,
my-ocr-demo-bucket
) באזור המועדף עליך (דוגמה למטה משתמשיםap-south-1
). - (אופציונלי) לחתוך את קובץ הרישיון אם אתה רוצה לרוץ מעבר הערכה.
שלב 1: הגדרת Aspose.OCR עבור .NET
התקנת אפליקציית קונסולה חדשה והוספת חבילות 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
אבו מאזן מספק את שני Aspose.OCR
(CPU ) ו Aspose.OCR-GPU
חבילות באמצעות NuGet; אתה רק צריך אחד. (תיעוד אספוס)
שלב 2: הגדרת AWS SDK עבור .NET
הגדר את פרופיל AWS שלך וליצור חבילה (סקי אם יש לך כבר אחד).
# 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
המדיניות המינימלית המומלצת של IAM (התייחסות למשתמש/תפקיד שלך) עבור מדריך זה:
{
"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 עבור .NET משתמש בשרשרת האמינות הנדרשת; הגדרות AWS_PROFILE=ocr-s3
תבחר את הפרופיל שלך באופן אוטומטי כאשר הוא פועל באופן מקומי.תבניות Core S3 (יצירת, העלאת, הורדה) מסומנות בדוגמאות .NET הרשמיות של AWS. (מסמכי AWS)
שלב 3: הפעלת API Aspose.OCR
יצירת בסיס Program.cs
אנחנו גם להגדיר אנגלית כגילוי שפה ומסמך הפריסה. (כל הסוגים המוצגים להלן מגיעים משטח API הנוכחי Aspose.OCR.) (תגית: 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...
}
}
מפתח APIs נשתמש בהמשך:
AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings)
חוזר אRecognitionResult
.RecognitionResult.RecognitionText
/GetJson(bool)
/Save(...)
תן לך לייצא את התוצאות ל TXT/JSON/PDF/DOCX. (תגית: aspose.com)
שלב 4: להעלות תמונות ל- S3
ניתן להעלות תמונות מהדיסק ל- S3 עם PutObjectAsync
(אתה יכול גם להעלות זרמים; שניהם נתמכים על ידי 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}.");
ראה דוגמאות של AWS .NET S3 עבור דפוסים להעלות. (מסמכי AWS)
שלב 5: ביצוע OCR על תמונות שהועלו
זורם את האובייקט S3 ישירות לתוך הזיכרון ועובר את MemoryStream
על ידי 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
העומס וה RecognitionResult.RecognitionText
הם חלק מההתייחסות הנוכחית של API. (תגית: aspose.com)
שלב 6: אחסון תוצאות OCR ב- S3
אתה יכול להעלות טקסט ברור, JSON, או אפילו PDF / DOCX המיוצר על ידי Aspose.OCR.
6.a) שמור כטקסט ברור
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) שמור את 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) שמור PDF ניתן לחפש (או DOCX) ולהכניס ל- 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}");
שיטות ייצוא וחיסכון (RecognitionResult.Save
) ופורמטים (TXT/PDF/DOCX) נמצאים בהתייחסות API הרשמית. ([reference.aspose.com][4])
תגית: end-to-end Program.cs
הנה גרסה קומפקטית סוף-עד-סוף שאתה יכול לזרוק לתוך Program.cs
(השילוב של השלבים 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.");
}
}
שיטות טובות
אינטגרציה של Aspose.OCR עם AWS S3 מציעה יתרונות רבים, כולל ניהול נתונים משופר ושיפור הסולם.
• אבטחה *
לעולם אל תשתמש בסוד קשיח.
aws configure
+AWS_PROFILE
מקומי; להשתמש בתפקידים של IAM בייצור.יש לקחת בחשבון את הצפנת צד השרת S3 (AES256 או KMS) על אובייקטים תוצאות, ומדיניות per-bucket עם הזכות הנמוכה ביותר (הוצגה לעיל).מסמכי AWS)
ביצועים
השתמשו בחבילת ה-GPU (
Aspose.OCR-GPU
על חומרה מסוגלת להאיץ את OCR; אותו קוד, ביצוע מהיר יותר. (תיעוד אספוס)תמונות מראש לשימוש באיכות (deskew, denoise) באמצעות
RecognitionSettings
אם יש צורך, בחר את הנכון.DetectAreasMode
עבור מסמכים. API אפשרויות מופיעות בהרשמה. (תגית: aspose.com)- חריגה *
השתמש S3 Prefixes כמו
input/
וoutput/
לפי עבודה, ומאוחסנים אובייקטים OCR (TXT/JSON/PDF) יחד למטרות מעקב.האפשרות S3 גרסה אם אתה רוצה היסטוריה אוטומטית ו rollbacks.
שימו לב לביצוע זרימה זו במכולות או ללא שרת (לדוגמה, AWS Batch/ECS/Lambda עם EFS) עבור OCR מקבילה בקנה מידה.
על ידי עמידה בהנחיות אלה, באפשרותך לשלב ביעילות את Aspose.OCR עם AWS S3 כדי להקל על זרימת העבודה של OCR שלך ולשפר את הביצועים הכלליים של היישום שלך.
רמזים
- חבילות ופתרונות ההתקנה (
Aspose.OCR
,Aspose.OCR-GPU
). (תיעוד אספוס) AsposeOcr.RecognizeImage(...)
יתר על המידה;RecognitionResult.RecognitionText
,GetJson
,Save(...)
. (תגית: aspose.com)- AWS SDK עבור .NET: S3 יצירת / העלאת / הורדת דוגמאות. (מסמכי AWS)
אם אתה רוצה, אני יכול גם להוסיף קטנטן Makefile
או PowerShell סקריפט כדי להפעיל את זה end-to-end, בתוספת CI snippet (פעולות GitHub) כדי לדחוף את התוצאות ל S3 על ההתחייבות.
[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ “ההכרהתוצאה