Mengintegrasikan Aspose.OCR dengan Amazon S3 memungkinkan pengembang untuk memanfaatkan penyimpanan awan untuk menyimpan hasil Pengenalan Karakter Optik (OCR) secara efisien. integrasi ini tidak hanya memudahkan pengelolaan data OCR tetapi juga meningkatkan scalability dan accessibility. Dalam tutorial ini, kami akan berjalan melalui proses mengatur Asposa.ocR untuk bekerja dengan lancar dengan AWS S3, memberikan contoh terperinci dan praktik terbaik di sepanjang jalan.
Contoh lengkap
Persyaratan
- .net 8 (atau .NET 6+) SDK terinstal.
- Sebuah akun AWS dengan akses ke Amazon S3.
- Sebuah pernyataan (misalnya
my-ocr-demo-bucket
) di daerah favorit Anda (contoh di bawah menggunakanap-south-1
). - (Optional) Hapus file lisensi jika Anda ingin berjalan di luar evaluasi.
Langkah 1: Menetapkan Aspose.OCR untuk .NET
Instal aplikasi konsol baru dan tambahkan paket 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
Asma menyediakan keduanya. Aspose.OCR
(CPU) dan Aspose.OCR-GPU
paket melalui NuGet; Anda hanya perlu satu. (Dokumentasi ASPOS)
Langkah 2: Mengkonfigurasi AWS SDK untuk .NET
Konfigurasikan profil AWS Anda dan buat bucket (skip jika Anda sudah memiliki satu).
# 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
Kebijakan minimum IAM yang disarankan (berhubung dengan pengguna / peran Anda) untuk tutorial ini:
{
"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/*" }
]
}
SDK AWS untuk .NET menggunakan rantai kredibilitas default; AWS_PROFILE=ocr-s3
akan membuatnya memilih profil Anda secara otomatis saat berjalan secara lokal. corak Core S3 (mencipta, upload, download) didokumentasikan dalam contoh .NET resmi AWS. (Dokumentasi AWS)
Langkah 3: Inisiatif Aspose.OCR API
Mencipta dasar Program.cs
Kami juga akan menetapkan Bahasa Inggris sebagai deteksi bahasa dan tata letak dokumen. (Semua jenis yang ditunjukkan di bawah ini berasal dari permukaan API Aspose.OCR saat ini.) (Berdasarkan .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 kunci yang akan kami gunakan berikut ini:
AsposeOcr.RecognizeImage(MemoryStream, RecognitionSettings)
Kembali ke ARecognitionResult
.RecognitionResult.RecognitionText
/GetJson(bool)
/Save(...)
Anda dapat mengekspor hasil ke TXT/JSON/PDF/DOCX. (Berdasarkan .aspose.com)
Langkah 4: Muat naik gambar ke S3
Anda dapat mengunggah gambar dari disk ke S3 dengan PutObjectAsync
(Anda juga dapat mengunggah aliran; keduanya didukung oleh 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}.");
Lihat contoh AWS .NET S3 untuk pola upload. (Dokumentasi AWS)
Langkah 5: Melakukan OCR pada gambar yang dimuat naik
Stream objek S3 langsung ke dalam memori dan melewati MemoryStream
untuk 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);
dan yang RecognizeImage
berlebihan dan RecognitionResult.RecognitionText
adalah bagian dari referensi API saat ini. (Berdasarkan .aspose.com)
Langkah 6: Menyimpan hasil OCR dalam S3
Anda dapat mengunggah teks rata, JSON, atau bahkan PDF/DOCX yang diproduksi oleh Aspose.OCR.
6. a) Simpan sebagai teks yang jelas
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) Simpan detail 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) Simpan PDF yang dapat dicari (atau DOCX) dan masukkan ke 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}");
Pengembangan dan pengembangan teknologi (RecognitionResult.Save
) dan format (TXT/PDF/DOCX) berada dalam referensi API resmi. ([reference.aspose.com][4])
Alternatif: Akhir ke Akhir Program.cs
Berikut adalah versi end-to-end kompak yang dapat Anda masukkan ke dalam Program.cs
(Kombinasi Langkah 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.");
}
}
Praktik Terbaik
Integrasi Aspose.OCR dengan AWS S3 menawarkan banyak manfaat, termasuk pengelolaan data yang dipertingkatkan dan scalability yang lebih baik. berikut adalah beberapa praktik terbaik untuk dipertimbangkan:
- Keselamatan *
Jangan Pernah Menggunakan Hardcode
aws configure
+AWS_PROFILE
secara lokal; menggunakan peran IAM dalam produksi.Pertimbangkan enkripsi sisi server S3 (AES256 atau KMS) pada objek hasil, dan kebijakan per-bucket dengan privileges terendah (lihat di atas). contoh resmi AWS C# S2 mencakup operasi dasar dan pola. (Dokumentasi AWS)
Penampilan
Menggunakan paket GPU (
Aspose.OCR-GPU
) pada perangkat keras yang mampu CUDA untuk mempercepat OCR; kode yang sama, pelaksanaan yang lebih cepat. (Dokumentasi ASPOS)Preprocess image untuk kualitas (deskew, denoise) menggunakan
RecognitionSettings
/ preset jika perlu, dan pilih yang tepatDetectAreasMode
untuk dokumen. opsi API ditunjukkan dalam referensi. (Berdasarkan .aspose.com)- Kemampuannya *
Menggunakan S3 Prefixes seperti
input/
danoutput/
per pekerjaan, dan menyimpan artifak OCR (TXT/JSON/PDF) bersama-sama untuk traceability.Memungkinkan versi S3 jika Anda ingin sejarah auditif dan rollbacks.
Pertimbangkan untuk menjalankan aliran ini dalam wadah atau tanpa server (misalnya, AWS Batch/ECS/Lambda dengan EFS) untuk OCR paralel pada skala.
Dengan mengikuti garis panduan ini, Anda dapat secara efektif mengintegrasikan Aspose.OCR dengan AWS S3 untuk mempercepat aliran kerja OCR Anda dan meningkatkan kinerja keseluruhan aplikasi Anda.
Referensi
- Pemasaran dan opsi instalasi (
Aspose.OCR
,Aspose.OCR-GPU
). (Dokumentasi ASPOS) AsposeOcr.RecognizeImage(...)
yang berlebihan;RecognitionResult.RecognitionText
,GetJson
,Save(...)
. (Berdasarkan .aspose.com)- AWS SDK untuk .NET: S3 membuat / upload / download contoh. (Dokumentasi AWS)
Jika Anda ingin, saya juga bisa menambahkan sedikit Makefile
atau skrip PowerShell untuk menjalankan end-to-end ini, ditambah snippet CI (Tindakan GitHub) untuk mendorong hasil ke S3 pada komitmen.
[4]: https://reference.aspose.com/ocr/net/aspose.ocr/recognitionresult/ “RecognitionResult