Amazon ec2 tesseract ocr在EC2上工作,而不是在lambda上工作
我的目标是在AWS Lambda中运行tesseract ocr 我构建了一个EC2实例,试图镜像Lambda环境。在这两种环境中,无参数执行tesseract都会成功。但是,任何实质性图像处理的尝试,例如本代码:Amazon ec2 tesseract ocr在EC2上工作,而不是在lambda上工作,amazon-ec2,tesseract,aws-lambda,Amazon Ec2,Tesseract,Aws Lambda,我的目标是在AWS Lambda中运行tesseract ocr 我构建了一个EC2实例,试图镜像Lambda环境。在这两种环境中,无参数执行tesseract都会成功。但是,任何实质性图像处理的尝试,例如本代码: tess = child_process.exec('tesseract input.tif output -l eng -psm 1 hocr', function(error, stdout, stderr) { ... 在我的EC2盒上成功运行,但在Lambda中失败,出现以
tess = child_process.exec('tesseract input.tif output -l eng -psm 1 hocr', function(error, stdout, stderr) {
...
在我的EC2盒上成功运行,但在Lambda中失败,出现以下错误:
Error: Command failed: Tesseract Open Source OCR Engine v3.04.00 with Leptonica
Error during processing.
at ChildProcess.exithandler (child_process.js:648:15)
at ChildProcess.emit (events.js:98:17)
at maybeClose (child_process.js:756:16)
at Process.ChildProcess._handle.onexit (child_process.js:823:5)
Error code: 1
Signal received: null
Lambda正在使用具有管理权限的IAM角色({“Effect”:“Allow”,“Action”:“Resource”:“})
“处理过程中出错”错误由tesseract发出,作为顶级的“全部捕获”。我将用仪器测试tesseract,并试图进一步缩小问题的范围
我是如何来到这里的:
- 我的EC2机器是在us-east-1(amzn-ami-hvm-2014.09.2.x86_64-ebs(ami-146e2a7c))中运行Amazon Linux的t2.micro
- 我安装了节点0.10.33和aws-sdk@2.0.23,与Lambda版本匹配
- 我从源代码中编译了tesseract和leptonica。添加了一个rpath,并已运行ldd以确认找到了所有依赖项
- tesseract二进制文件和liblept.so都在我的根目录(/var/task)中
Dave简短回答:输出必须进入/tmp目录,例如
tesseract input.tif /tmp/output -l eng -psm 1 hocr
回答稍微长一点:tesseract在引擎盖下调用fopen wb,显然这在/var/task中是禁止的
几天前我可能会注意到这一点,但Lambda并没有传播我的部署包。因此,有一次我试图将输出放入/tmp目录中,没有效果——但b/c Lambda正在执行我的函数的一个过时版本。解决方案是在调用更新函数之前总是删除函数。hi,您是否可以发布一个示例?我还与aws lambda一起致力于tesseract,这将非常有帮助。