C++ AWS lambda 中的 OCR 应用程序

C++ OCR application in AWS lambda

本文关键字:OCR 应用程序 中的 lambda AWS C++      更新时间:2023-10-16

我一直在为 aws 中基于 lambda 的(无服务器)应用程序探索稳定且可扩展的架构,以开发 ocr 应用程序。

我已经在 aws lambda 中成功实现并测试了 opencv 和 tesseract-ocr 模块的 python 版本。

我有兴趣在 aws lambda 中的 c++ 编程语言中做同样的事情,这样我就可以在 c++ 中使用 c++ tesseract Tess_Base_API,这样我们就不必将我现有的基于 c++ 的代码库转换为 python 代码。

经过一些研究,我发现可以通过两种方式实现:

1)静态构建opencv,tesseract库(.a文件),然后静态编译C++源代码以创建没有动态libs依赖项的可执行文件。之后,可以使用 aws lambda 中 Python 中的子进程模块执行这个静态生成的C++可执行文件。

2) 创建一个包含 opencv 和 tesseract 动态库(.so 文件)的包,并使用 aws lambda 中 Python 中的子进程模块再次运行 C++ 可执行文件(通过使用"LD_LIBRARY_PATH"指向这些动态库包的路径)。

首先,我尝试通过此链接静态构建opencv,但由于它基于alpine Linux环境,因此没有成功。我也无法在任何地方获得任何此类用法,所以我对这种方法是否有效感到困惑。

在过去的几天里,我一直在探索此功能,是否有人已经这样做了,或者有任何关于如何在 aws lambda 中完成它的信息?

谢谢

适用于C++的 AWS Lambda 运行时支持打包您的应用程序及其依赖项。 唯一的问题是依赖项必须在链接时知道(即不使用 dlopen)。如果您的代码使用 dlopen,则必须修改 zip 包并手动将该库添加到其中。

在此处查看完整示例 https://github.com/awslabs/aws-lambda-cpp/tree/master/examples/s3