การบูรณาการ Aspose.OCR กับ Amazon S3 ช่วยให้ผู้พัฒนาสามารถใช้บันทึกคลาวด์เพื่อจัดเก็บผลการรับรู้ตัวละครออฟติคอล (OCR) ได้อย่างมีประสิทธิภาพ การรวมกันนี้ไม่เพียง แต่ช่วยให้การจัดการข้อมูล OCR ได้ง่ายขึ้น แต่ยังช่วยเพิ่มความสามารถในการสแกนและเข้าถึงได้ ในบทเรียนนี้เราจะไปผ่านกระบวนการตั้งค่า Asposa.ocR เพื่อทํางานได้อย่างราบรื่นกับ AWS S3, ให้ตัวอย่างรายละเอียดและปฏิบัติที่ดีที่สุดตลอดทาง
ตัวอย่างที่สมบูรณ
ข้อกําหนด
- .NET 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 ให้ทั้งสอง Aspose.OCR
(CPU) และ Aspose.OCR-GPU
บรรจุภัณฑ์ผ่าน NuGet; คุณต้องการหนึ่งเท่านั้น. (การจัดทําเอกสาร)
ขั้นตอน 2: การกําหนดค่า AWS SDK สําหรับ .NET
การตั้งค่าโปรไฟล์ AWS ของคุณและสร้าง bucket (skip ถ้าคุณมีหนึ่งแล้ว)
# 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 มอเตอร์ initialization นอกจากนี้เรายังจะกําหนดภาษาอังกฤษเป็นภาษาและเอกสารการตั้งค่าการตรวจจับ (ทุกประเภทที่แสดงไว้ด้านล่างมาจากพื้นผิว 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...
}
}
API ที่สําคัญเราจะใช้ต่อไปนี้:
AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings)
กลับ ARecognitionResult
.RecognitionResult.RecognitionText
/GetJson(bool)
/Save(...)
ให้คุณส่งผลให้เข้าสู่ TXT/JSON/PDF/DOCX (คําอธิบาย.aspose.com)
ขั้นตอน 4: ดาวน์โหลดภาพไปยัง S3
คุณสามารถดาวน์โหลดภาพจากดิสก์ไปยัง S3 ด้วย PutObjectAsync
(คุณยังสามารถดาวน์โหลด Streams ทั้งสองจะได้รับการสนับสนุนโดย 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.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
นี่คือรุ่นขนาดกะทัดรัด end-to-end ที่คุณสามารถลงใน 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 ที่มีสิทธิพิเศษน้อยที่สุด (แสดงไว้ข้างต้น) ตัวอย่าง C# S4 ของ AWS ได้ครอบคลุมการดําเนินงานและรูปแบบพื้นฐาน (การรับรอง AWS)
การแสดงผล
ใช้แพคเกจ GPU (
Aspose.OCR-GPU
) บนฮาร์ดแวร์ที่สามารถใช้ CUDA เพื่อเร่ง OCR; รหัสเดียวกันการดําเนินการเร็วขึ้น (การจัดทําเอกสาร)การประมวลผลภาพก่อนสําหรับคุณภาพ (deskew, denoise) ใช้
RecognitionSettings
/ โพสต์ถ้าจําเป็นและเลือกที่เหมาะสมDetectAreasMode
สําหรับเอกสาร ตัวเลือก API ที่แสดงไว้ในคําอธิบาย (คําอธิบาย.aspose.com)*การปรับตัว *
ใช้ S3 Prefix เช่น
input/
และoutput/
โดยงานและจัดเก็บเอกสาร OCR (TXT / JSON / PDF) รวมกันเพื่อการติดตามเปิดใช้งาน S3 รุ่นถ้าคุณต้องการประวัติการตรวจสอบและ rollbacks
โปรดพิจารณาการทํางานของกระแสนี้ในคอนเทนเนอร์หรือไม่มีเซิร์ฟเวอร์ (เช่น AWS Batch / ECS / Lambda กับ EFS) สําหรับ OCR ที่คล้ายกันในระดับ
โดยการปฏิบัติตามคําแนะนําเหล่านี้คุณสามารถบูรณาการ Aspose.OCR กับ AWS S3 ได้อย่างมีประสิทธิภาพเพื่อปรับปรุงการทํางานของ OCR ของคุณและเพิ่มประสิทธิภาพโดยรวมของแอพของคุณ
คําอธิบาย
- Aspose.OCR NuGet แพคเกจและตัวเลือกการติดตั้ง (
Aspose.OCR
,Aspose.OCR-GPU
). (การจัดทําเอกสาร) AsposeOcr.RecognizeImage(...)
การโหลดเกินไปRecognitionResult.RecognitionText
,GetJson
,Save(...)
. (คําอธิบาย.aspose.com)- AWS SDK สําหรับ .NET: S3 สร้าง/อัพโหลด/ดาวน์โหลดตัวอย่าง (การรับรอง AWS)
ถ้าคุณต้องการฉันยังสามารถเพิ่มขนาดเล็ก Makefile
หรือสคริปต์ PowerShell เพื่อดําเนินการนี้ end-to-end, plus a CI snippet (GitHub Actions) to push results to S3 on commit.
[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ “การรับรู้ผลลัพธ์