use*_*380 5 tesseract amazon-ec2 aws-lambda
我的目标是在AWS Lambda中运行tesseract-ocr.
我已经构建了一个试图镜像Lambda环境的EC2实例.在没有参数的情况下执行tesseract在两种环境中都成功.但是,任何实质性图像处理的尝试,例如此代码:
tess = child_process.exec('tesseract input.tif output -l eng -psm 1 hocr', function(error, stdout, stderr) {
...
Run Code Online (Sandbox Code Playgroud)
在我的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
Run Code Online (Sandbox Code Playgroud)
Lambda承担具有管理权限的IAM角色({"效果":"允许","操作":" ","资源":" "})
tesseract将"处理中的错误"错误作为顶级捕获所发出.我打算使用tesseract,并尝试进一步缩小问题范围.
我是怎么来的
我想知道出了什么问题 - 或者如何诊断它.
戴夫,谢谢你
简短的回答:输出必须放在 /tmp 目录中,例如
tesseract input.tif /tmp/output -l eng -psm 1 hocr
Run Code Online (Sandbox Code Playgroud)
答案稍长:tesseract 在底层调用 fopen wb,显然这在 /var/task 中是被禁止的。
几天前我就会注意到这一点,但 Lambda 尚未传播我的部署包。因此,有一次我尝试将输出放入 /tmp 目录中,但没有效果 - 但那是因为 Lambda 正在执行我的函数的过时版本。解决方案是始终在调用 update-function 之前删除-function。
| 归档时间: |
|
| 查看次数: |
2373 次 |
| 最近记录: |