我在一个小的Tesseract项目上进行工作和测试,并完全相信http://aalvarez.me/blog/posts/building-an-ocr-service-with-tesseractjs-in-aws-lambda.html,我在Lambda中运行了一个Tesseract项目,该项目接受s3事件并处理上传到s3的图像。

下一个目标是研究处理来自AWS IoT的图像。主要障碍是您无法通过MQTT发送图像。

我的方法是在MQTT主题上发送图像的缓冲区/二进制流,然后IoT规则触发相同的lambda进行处理。

但是首先我需要有一个有效的二进制流(没有真正的硬件和摄像头,但FYI,我是后端人员)才能通过IoT发送,因此我修改了项目,不仅要存储图像上执行的OCR的结果,而且还要存储图像的二进制流/缓冲区。

我需要这样做是因为AWS Cloudwatch会截断日志记录,因此当我注销Lambda函数加载的s3对象的数据有效负载时,您得到的只是严重截断的缓冲区对象。

dataBody: <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 90 00 00 01 90 08 06 00 00 00 80 bf 36 cc 00 00 20 00 49 44 41 54 78 5e ed 9d 09 f8 76 df 58 ... >


因此,我添加了一些代码,如下所示使用DynamoDB updateItem和SET来设置db项的属性,并使用原始缓冲区按以下方式使用OCR来执行

            "UpdateExpression": "SET img = :attrValue",
        "ExpressionAttributeValues": {
            ":attrValue": { "B": dataBody }


那行得通,属性是在项目中创建的,其中包含大字符串,我认为这是原始字符串,但格式可能不同

现在,如果我采用该大字符串并将其作为MQTT有效负载发送并触发规则,则Lambda将触发,但是当我转换有效负载并尝试对其进行处理时,Tesseract会抱怨

TypeError:无法读取null的属性“ mime”

该错误可能是将IoT负载转换为缓冲区进行处理的结果,因为当读取原始s3对象时,它现在与原始缓冲区完全不同,因此不存在mime属性。现在我正在挑选数据

let ocrBuffer = Buffer.from(iotEvent)

ocrBuffer: <Buffer 69 56 42 4f 52 77 30 4b 47 67 6f 41 41 41 41 4e 53 55 68 45 55 67 41 41 41 5a 41 41 41 41 47 51 43 41 59 41 41 41 43 41 76 7a 62 4d 41 41 41 67 41 45 ... >


缓冲区和处理图像等方面的新手,但是我怀疑将其存储到DynamoDB的过程以某种方式更改了原始缓冲区或将其包装在某些东西中,因此我需要正确地更改/解开它,使其与以89而不是69开头的原始缓冲区。

是否有人对哪里出了问题以及应该从哪里开始寻找任何想法。

现在,我可以将图像上传到s3,我想以某种方式保存有效负载,以便可以将其用作测试有效负载以通过IoT Service使用

谢谢
标记

最佳答案

您的问题的症结似乎是来自Tesseract的以下消息:

TypeError:无法读取null的属性“ mime”

这至少有明确的原因。将数据发送到Tesseract时,听起来好像没有设置Content-type http标头。

examples from Tesseract中,看起来好像需要Content-type头,这很有意义,因为它需要知道要向其发布哪种文件。

因此,我认为这里的问题是您的Lambda函数如何将数据发布到Tesseract,特别是如何设置Content-type和Content-Disposition标头?

尽管您的二进制数据可能存在问题,但我现在可能暂时不关注它,因为这似乎不是Tesseract所抱怨的事情。

您可以尝试做的一件事就是非常简单地使用curl将(本地)文件发布到Tesseract。假设此方法有效,请将HTTP请求与您的Lambda函数产生的请求进行比较,然后从那里向后工作。我怀疑您没有内容问题,或者至少没有当前问题。

关于javascript - Javascript,Tesseract,AWS IoT,Dynamodb和缓冲区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48272990/

10-09 20:13
查看更多