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 menggunakan ap-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 A RecognitionResult.
  • 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 tepat DetectAreasMode untuk dokumen. opsi API ditunjukkan dalam referensi. (Berdasarkan .aspose.com)

    • Kemampuannya *
  • Menggunakan S3 Prefixes seperti input/ dan output/ 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

More in this category