IRONSOFTWAREHOME

如何在 AWS Lambda 上识别文档 OCR

Curtis Chau
Curtis Chau
Updated: 2026年6月4日

本文提供了使用 IronOCR 设置 AWS Lambda 函数的逐步指南。 通过本指南,您将学习如何配置 IronOCR 并高效地读取存储在 S3 存储桶中的文档。

安装

本文将使用 S3 存储桶,因此需要 AWSSDK.S3 包。

如果您使用的是 IronOCR ZIP,则必须设置临时文件夹。

// Set temporary folder path and log file path for IronOCR.
var awsTmpPath = @"/tmp/";
IronOcr.Installation.InstallationPath = awsTmpPath;
IronOcr.Installation.LogFilePath = awsTmpPath;

Start using IronOCR in your project today with a free trial.

第一步:
arrow pointer

创建 AWS Lambda 项目

using Visual Studio 创建容器化的 AWS Lambda 是一个简单的过程:

选择容器图像

添加包依赖项

在 .NET 8 中使用 IronOCR 库不需要安装额外的依赖项即可在 AWS Lambda 上使用。 修改项目的 Dockerfile 文件,添加以下内容:

FROM public.ecr.aws/lambda/dotnet:8

# Update all installed packages
RUN dnf update -y

WORKDIR /var/task

# Copy build artifacts from the host machine into the Docker image
COPY "bin/Release/lambda-publish" .
Text

修改 FunctionHandler 代码

此示例从 S3 存储桶中检索图像,对其进行处理,并将可搜索的 PDF 保存回同一个存储桶。 使用 IronOCR ZIP 时,设置临时文件夹至关重要,因为该库需要写入权限才能从 DLL 复制运行时文件夹。

using Amazon.Lambda.Core;
using Amazon.S3;
using Amazon.S3.Model;
using IronOcr;
using System;
using System.IO;
using System.Threading.Tasks;

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]

namespace IronOcrZipAwsLambda
{
    public class Function
    {
        // Initialize the S3 client with a specific region endpoint
        private static readonly IAmazonS3 _s3Client = new AmazonS3Client(Amazon.RegionEndpoint.APSoutheast1);

        /// <summary>
        /// Function handler to process OCR on the PDF stored in S3.
        /// </summary>
        /// <param name="context">The ILambdaContext that provides methods for logging and describing the Lambda environment.</param>
        public async Task FunctionHandler(ILambdaContext context)
        {
            // Set up necessary paths for IronOCR
            var awsTmpPath = @"/tmp/";
            IronOcr.Installation.InstallationPath = awsTmpPath;
            IronOcr.Installation.LogFilePath = awsTmpPath;

            // Set license key for IronOCR
            IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";

            string bucketName = "deploymenttestbucket"; // Your bucket name
            string pdfName = "sample";
            string objectKey = $"IronPdfZip/{pdfName}.pdf";
            string objectKeyForSearchablePdf = $"IronPdfZip/{pdfName}-SearchablePdf.pdf";

            try
            {
                // Retrieve the PDF file from S3
                var pdfData = await GetPdfFromS3Async(bucketName, objectKey);

                // Initialize IronTesseract for OCR processing
                IronTesseract ironTesseract = new IronTesseract();
                OcrInput ocrInput = new OcrInput();
                ocrInput.LoadPdf(pdfData);
                OcrResult result = ironTesseract.Read(ocrInput);

                // Log the OCR result
                context.Logger.LogLine($"OCR result: {result.Text}");

                // Upload the searchable PDF to S3
                await UploadPdfToS3Async(bucketName, objectKeyForSearchablePdf, result.SaveAsSearchablePdfBytes());
                context.Logger.LogLine($"PDF uploaded successfully to {bucketName}/{objectKeyForSearchablePdf}");
            }
            catch (Exception e)
            {
                context.Logger.LogLine($"[ERROR] FunctionHandler: {e.Message}");
            }
        }

        /// <summary>
        /// Retrieves a PDF from S3 and returns it as a byte array.
        /// </summary>
        private async Task<byte[]> GetPdfFromS3Async(string bucketName, string objectKey)
        {
            var request = new GetObjectRequest
            {
                BucketName = bucketName,
                Key = objectKey
            };

            using (var response = await _s3Client.GetObjectAsync(request))
            using (var memoryStream = new MemoryStream())
            {
                await response.ResponseStream.CopyToAsync(memoryStream);
                return memoryStream.ToArray();
            }
        }

        /// <summary>
        /// Uploads the generated searchable PDF back to S3.
        /// </summary>
        private async Task UploadPdfToS3Async(string bucketName, string objectKey, byte[] pdfBytes)
        {
            using (var memoryStream = new MemoryStream(pdfBytes))
            {
                var request = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = objectKey,
                    InputStream = memoryStream,
                    ContentType = "application/pdf"
                };

                await _s3Client.PutObjectAsync(request);
            }
        }
    }
}

在 try 代码块之前,指定要从 IronPDFZip 目录读取的文件为"sample.pdf"。 然后使用 GetPdfFromS3Async 方法检索 PDF 字节,并将其传递给 LoadPdf 方法。

增加内存和超时

根据正在处理的文档大小和同时处理的文档数量,Lambda 函数中分配的内存量会有所不同。 作为基准,在 aws-lambda-tools-defaults.json 中将内存设置为512 MB,超时设置为300秒。

{
    "function-memory-size": 512,
    "function-timeout": 300
}
JSON

当内存不足时,程序会引发错误:'Runtime exited with error: signal: killed.' 增加内存大小可以解决此问题。 有关更多详细信息,请参阅故障排除文章: AWS Lambda - 运行时退出信号:已终止

发布

要在 Visual Studio 中发布,右键单击项目并选择 'Publish to AWS Lambda...',然后配置必要的设置。 您可以在 AWS 网站 上阅读有关发布 Lambda 的更多信息。

试一试!

您可以通过 Lambda 控制台 或通过 Visual Studio 激活 Lambda 函数。

常见问题解答

如何在 AWS 上使用 C# 对文档执行 OCR?

您可以使用 IronOCR 将 OCR 应用于存储在 Amazon S3 存储桶中的文档,将其与 AWS Lambda 集成。这涉及创建一个 C# 的 Lambda 函数,从 S3 检索文档,使用 IronOCR 处理这些文档,然后将结果上传回 S3。

在 AWS Lambda 中使用 C# 设置 OCR 需要哪些步骤?

要使用 C# 在 AWS Lambda 上设置 OCR,您需要下载 IronOCR 库,在 Visual Studio 中创建 AWS Lambda 项目,配置您的函数处理程序以使用 IronOCR 进行处理,然后部署您的函数。此设置允许您将图像转换为可搜索的 PDF。

在 AWS Lambda 上运行 OCR 的推荐配置是什么?

为了在 AWS Lambda 上使用 IronOCR 运行 OCR 时获得最佳性能,建议至少设置 512 MB 的内存分配和 300 秒的超时。这些设置有助于管理大文件或多个文档的处理。

如何处理 AWS Lambda 中的“运行时退出错误:信号:已终止”?

此错误通常表示您的 Lambda 函数已耗尽分配的内存。增加 Lambda 函数配置中的内存分配可以解决此问题,特别是在处理大型文档时使用 IronOCR。

我可以在部署前本地测试我的 AWS Lambda OCR 函数吗?

是的,您可以使用 Visual Studio 的 AWS 工具包在本地测试您的 AWS Lambda OCR 函数。此工具包提供了一个本地环境以模拟 Lambda 的执行,使您能够在部署前调试和完善函数。

AWS Lambda 项目中的 Dockerfile 有什么用途?

AWS Lambda 项目中的 Dockerfile 用于创建一个容器镜像,该镜像定义了您的 Lambda 函数的执行环境和依赖项。这确保了您的函数在 AWS 中正常运行所需的所有组件。

在 AWS Lambda 上使用 .NET 8 的 IronOCR 需要其他依赖项吗?

在 AWS Lambda 上使用 .NET 8 时,除了 IronOCR 库和必要的 AWS SDK 包之外不需要其他依赖项。这简化了执行 OCR 任务的集成过程。

将 C# OCR 与 AWS Lambda 集成的前提条件是什么?

在将 C# OCR 与 AWS Lambda 集成之前,您需要安装 S3 的 AWS SDK、IronOCR 库和 Visual Studio 的 AWS 工具包。您还需要配置一个用于存储和检索文档的 S3 存储桶。

How do I log OCR results in an AWS Lambda function using IronOCR?

In your AWS Lambda function, use the Lambda context's `Logger.LogLine` method to log OCR results. This allows you to track and verify the OCR output processed by IronOCR.

Is it necessary to install additional dependencies for IronOCR in .NET 8 when deploying to AWS Lambda?

No additional dependencies are required for utilizing the IronOCR library in a .NET 8 AWS Lambda project, aside from setting the correct paths and configuring necessary packages like AWSSDK.S3 for S3 operations.

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

准备开始了吗?

Nuget Downloads 6,236,385版本:2026.9刚刚发布

立即获取您的免费30 天试用密钥
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索"IronOCR"
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在这里下载Windows安装程序。

  1. 下载并解压IronOCR到你的解决方案目录中的~/Libs位置
  2. 在Visual Studio解决方案资源管理器中,右键点击引用。选择浏览,“IronOCR.dll”

许可证售价$999

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户