يتيح دمج Aspose.OCR مع Amazon S3 للمطورين الاستفادة من التخزين في السحابة لتخزن نتائج التعرف على الطابع البصري بفعالية.هذا التكامل لا يسهل إدارة بيانات OCR فحسب، بل يعزز أيضًا القدرة على التوسع والوصول.في هذا الدليل، سنمر من خلال عملية تثبيت Asposa.ocR للعمل بسهولة مع AWS S3, يوفر أمثلة مفصلة وأفضل الممارسات على طول الطريق.
نموذج كامل
المتطلبات
- نيت 8 (أو .NET 6+) SDK مثبتة.
- حساب AWS مع إمكانية الوصول إلى Amazon 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 for .NET سلسلة الاعتماد الافتراضية. AWS_PROFILE=ocr-s3
سوف تجعلها تختار ملفك الشخصي تلقائيًا عند تشغيلها محلي. يتم توثيق نموذج Core S3 (إنشاء وتحميل وتنزيل) في أمثلة .NET الرسمية لـ AWS. (AWS الوثائق)
الخطوة 3: إطلاق Aspose.OCR API
إنشاء قاعدة 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)
العودة إلى ARecognitionResult
.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);
و هو RecognizeImage
المبالغ الزائدة و RecognitionResult.RecognitionText
انها جزء من إشارة API الحالية. (أرشيف الوسم : aspose.com)
الخطوة 6: تخزين نتائج OCR في S3
يمكنك تحميل النص المسطح، JSON، أو حتى PDF/DOCX التي تنتجها Aspose.OCR.
6. (أ) حفظ النص المباشر
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) على الكائنات الناتجة، والسياسات الفردية مع الحد الأدنى من الامتيازات (يظهر أعلاه).AWS الوثائق)
الأداء
استخدم حزمة GPU (
Aspose.OCR-GPU
على الأجهزة القابلة لـ CUDA لتسريع OCR؛ نفس الرمز، أسرع التنفيذ. (أسوة الوثائق)صور ما قبل المعالجة لجودة (تخفيف، إلغاء) باستخدام
RecognitionSettings
- اقرأ إذا لزم الأمر واختر اليمين الصحيحDetectAreasMode
تظهر خيارات API في الإشارة. (أرشيف الوسم : aspose.com)- التكلفة *
استخدم S3 Prefixes مثل
input/
وoutput/
حسب العمل، وتخزين أدوات OCR (TXT/JSON/PDF) معا للتتبع.إمكانية إصدار S3 إذا كنت ترغب في تاريخ الاستماع والعودة.
فكر في تشغيل هذا التدفق في حاويات أو خالية من الخادم (على سبيل المثال، 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 for .NET: S3 خلق / تحميل / تنزيل الأمثلة. (AWS الوثائق)
إذا كنت ترغب في ذلك ، يمكنني أيضًا إضافة صغيرة Makefile
أو سكريبت PowerShell لتشغيل هذا النهائي إلى النهاية، بالإضافة إلى مقطع CI (إجراءات GitHub) لدفع النتائج إلى S3 على الالتزام.
[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ “التعرفالنتائج