إن دمج Aspose.OCR مع Amazon S3 يسمح للمطورين بتحميل التخزين السحابي لتخزين نتائج التعرف على الشخصية البصرية (OCR) بفعالية.هذا التكامل لا يساعد فقط على إدارة بيانات OCR ولكن يعزز أيضًا التوسع والوصول.في هذا الدليل ، سنقوم بمرور عملية إعداد Aspose.OCR للعمل بسلاسة مع AWS S3 ، وتوفير أمثلة مفصلة وأفضل الممارسات على طول الطريق.
مثال كامل
المعايير
- .NET 8 (أو .NET 6+) SDK مثبتة.
- حساب AWS مع إمكانية الوصول إلى Amazon S3.
- بطاقة ( على سبيل المثال ،.,
my-ocr-demo-bucketفي منطقة تفضيلك (مثال أدناه يستخدمap-south-1). - (اختياري) Aspose ملف الترخيص إذا كنت ترغب في تشغيل خارج التقييم.
الخطوة 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 يوفر كلاهما 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: إطلاق Aspose.OCR API
إنشاء أساس Program.cs مع إطلاق محرك OCR، سنقوم أيضًا بتعيين اللغة الإنجليزية ككشف اللغة ووضع وثيقة. (جميع الأنواع المذكورة أدناه هي من سطح 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}.");
انظر أمثلة .NET S3 من AWS لتحديثات النمط. (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.a) Save as plain 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) Save detailed 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 (or DOCX) and put to 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)
الخيارات: نهاية إلى نهاية 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)
- استخدم حزمة GPU (
- التكلفة
- استخدام S3 المسبقين مثل
input/وoutput/حسب العمل، وتخزين المواد OCR (TXT/JSON/PDF) معا للتتبع. - إمكانية إصدار S3 إذا كنت ترغب في تاريخ التحقق والعودة.
- فكر في تشغيل هذا التدفق في حاويات أو خالية من الخادم (على سبيل المثال، AWS Batch/ECS/Lambda مع EFS) لـ OCR الموازية على مقياس.
- استخدام S3 المسبقين مثل
من خلال اتباع هذه المبادئ التوجيهية، يمكنك دمج Aspose.OCR بفعالية مع AWS S3 لتسريع تدفق عمل OCR الخاص بك وتحسين الأداء العام لتطبيقك.
مرجعية
- Aspose.OCR NuGet packages and installation options (
Aspose.OCR,Aspose.OCR-GPU). (أسبوس الوثائق) AsposeOcr.RecognizeImage(...)إرسال المبالغ؛;RecognitionResult.RecognitionText,GetJson,Save(...). (الوسوم.aspose.com)- AWS SDK for .NET: S3 خلق / تحميل / تنزيل الأمثلة. (AWS الوثائق)
إذا كنت ترغب في ذلك ، يمكنك أيضًا إضافة صغيرة Makefile أو سيناريو PowerShell لتشغيل هذا النهاية إلى النهاية، بالإضافة إلى قطع CI (إجراءات GitHub) لدفع النتائج إلى S3 على الالتزام.