Việc tích hợp Aspose.OCR với Amazon S3 cho phép các nhà phát triển sử dụng lưu trữ đám mây để tiết kiệm hiệu quả các kết quả nhận dạng nhân vật quang học (OCR). Kết hợp này không chỉ đơn giản hóa việc quản lý dữ liệu OCR mà còn cải thiện tính quy mô và khả năng truy cập. Trong hướng dẫn này, chúng tôi sẽ đi qua quá trình thiết lập Asposa.ocR để làm việc an toàn với AWS S3, cung cấp các ví dụ chi tiết và thực hành tốt nhất trên đường đi.
Một ví dụ đầy đủ
Nguyên tắc
- .NET 8 (hoặc.NET 6+) SDK được cài đặt.
- Một tài khoản AWS với truy cập vào Amazon S3.
- Một bút chì (ví dụ:
my-ocr-demo-bucket
trong khu vực yêu thích của bạn (ví dụ dưới đây sử dụngap-south-1
). - (Tùy chọn) Khóa tệp giấy phép nếu bạn muốn chạy vượt quá đánh giá.
Bước 1: Cài đặt Aspose.OCR cho .NET
Cài đặt một ứng dụng console mới và thêm gói 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 cung cấp cả hai Aspose.OCR
(CPU) và Aspose.OCR-GPU
gói thông qua NuGet; bạn chỉ cần một. (Aspose Tài liệu)
Bước 2: Thiết lập AWS SDK cho .NET
Thiết lập hồ sơ AWS của bạn và tạo một bucket (skip nếu bạn đã có một).
# 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
Chính sách IAM tối thiểu được khuyến khích (tính đến người dùng / vai trò của bạn) cho hướng dẫn này:
{
"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 cho .NET sử dụng chuỗi chứng nhận mặc định; thiết lập AWS_PROFILE=ocr-s3
sẽ làm cho nó tự động chọn hồ sơ của bạn khi chạy địa phương. mô hình Core S3 (tạo, tải lên, download) được tài liệu trong các ví dụ .NET chính thức của AWS. (Tài liệu AWS)
Bước 3: Khởi động Aspose.OCR API
Tạo một cơ bản Program.cs
Chúng tôi cũng sẽ thiết lập tiếng Anh như là phát hiện ngôn ngữ và bố trí tài liệu. (tất cả các loại được hiển thị dưới đây đều từ bề mặt API Aspose.OCR hiện tại.) (tham khảo.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...
}
}
Các APIs chính chúng tôi sẽ sử dụng sau:
AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings)
Trở lại aRecognitionResult
.RecognitionResult.RecognitionText
/GetJson(bool)
/Save(...)
cho phép bạn xuất kết quả vào TXT/JSON/PDF/DOCX. (tham khảo.aspose.com)
Bước 4: Tải hình ảnh lên S3
Bạn có thể tải hình ảnh từ đĩa lên S3 với PutObjectAsync
(Bạn cũng có thể tải về các dòng; cả hai đều được hỗ trợ bởi 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}.");
Xem các ví dụ của AWS .NET S3 cho các mô hình tải lên. (Tài liệu AWS)
Bước 5: Thực hiện OCR trên hình ảnh tải lên
Stream S3 đối tượng trực tiếp vào bộ nhớ và đi qua MemoryStream
Nhập 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);
của The RecognizeImage
quá tải và RecognitionResult.RecognitionText
là một phần của tham khảo API hiện tại. (tham khảo.aspose.com)
Bước 6: Lưu kết quả OCR trong S3
Bạn có thể tải lên văn bản thẳng, JSON, hoặc thậm chí một PDF/DOCX được sản xuất bởi Aspose.OCR.
6.a) Lưu như một văn bản thẳng
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) Lưu chi tiết 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) Lưu một PDF có thể tìm kiếm (hoặc DOCX) và đặt vào 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}");
Các phương pháp xuất khẩu và tiết kiệm (RecognitionResult.Save
) và các định dạng (TXT/PDF/DOCX) nằm trong tham chiếu API chính thức. ([reference.aspose.com][4])
Tùy chọn: End-to-end Program.cs
Dưới đây là một phiên bản nhỏ gọn end-to-end mà bạn có thể rơi vào Program.cs
(Các kết hợp các bước 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.");
}
}
Thực hành tốt nhất
Việc tích hợp Aspose.OCR với AWS S3 mang lại nhiều lợi ích, bao gồm việc quản lý dữ liệu nâng cao và khả năng quy mô tốt hơn.
- Bảo mật *
Không bao giờ sử dụng mật mã cứng
aws configure
+AWS_PROFILE
địa phương; sử dụng vai trò IAM trong sản xuất.Hãy xem xét mã hóa phía máy chủ S3 (AES256 hoặc KMS) trên các đối tượng kết quả, và các chính sách per-bucket với quyền lợi thấp nhất (được hiển thị ở trên).Tài liệu AWS)
Hiệu suất
Sử dụng gói GPU (
Aspose.OCR-GPU
) trên thiết bị có khả năng CUDA để tăng tốc OCR; cùng mã, thực hiện nhanh hơn. (Aspose Tài liệu)Preprocess hình ảnh cho chất lượng (deskew, denoise) sử dụng
RecognitionSettings
/ đặt trước nếu cần thiết, và chọn đúngDetectAreasMode
cho các tài liệu. API tùy chọn được hiển thị trong tham chiếu. (tham khảo.aspose.com)- Khả năng *
Sử dụng S3 Prefixes như
input/
vàoutput/
theo công việc, và lưu trữ các tài liệu OCR (TXT/JSON/PDF) cùng nhau để có thể theo dõi.Tạo phiên bản S3 nếu bạn muốn có lịch sử và quay trở lại.
Hãy xem xét việc chạy dòng này trong container hoặc không có máy chủ (ví dụ: AWS Batch/ECS/Lambda với EFS) cho OCR song song theo quy mô.
Bằng cách làm theo các hướng dẫn này, bạn có thể tích hợp hiệu quả Aspose.OCR với AWS S3 để làm nhanh dòng công việc OCR của bạn và cải thiện hiệu suất tổng thể của ứng dụng.
tham chiếu
- Các gói và tùy chọn cài đặt (
Aspose.OCR
,Aspose.OCR-GPU
). (Aspose Tài liệu) AsposeOcr.RecognizeImage(...)
quá tải;RecognitionResult.RecognitionText
,GetJson
,Save(...)
. (tham khảo.aspose.com)- AWS SDK cho .NET: S3 tạo / tải lên / download ví dụ. (Tài liệu AWS)
Nếu bạn muốn, tôi cũng có thể thêm một nhỏ Makefile
hoặc PowerShell script để chạy end-to-end này, cộng với một snippet CI (GitHub Actions) để đẩy kết quả đến S3 trên commit.
[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ “Kết quả nhận dạng