云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

京东云_主机服务器_学生机

小七 141 0

我想分享如何创建一个Facebook Messenger机器人,它能够对手机通过Facebook Messenger平台拍摄的收据图像执行OCR(光学字符识别)。用户需要将收据上传到FB messenger,机器人会回复OCR结果。

我们将使用OCR引擎,并提供以下选项:

SAP Leonardo机器学习基金会(基于云)我们自己的OCR引擎与Tesseract OCR(安装在本地机器上)

用户可以选择使用SAP Leonardo或Tesseract解决方案,基于Facebook Messenger bot菜单界面。

架构图

架构包含两个主要组件

ScanReceiptBotApp是一个运行在SAP Cloud Foundry上的NodeJS应用程序,负责处理bot会话状态(获取和处理收据图像),并执行对Tesseract OCR引擎的后端调用和对SAP Leonardo推断服务进行OCR的web调用。Tesseract OCR引擎是一个Python flask应用程序,在本地机器上运行,将图像接收转换为OCR,并将结果发送回ScanReceiptBotApp.

后端系统和SAP Cloud Foundry之间的连接使用SAP Cloud Connector桥接。

必备组件

我们需要SAP Cloud帐户Foundry和Facebook开发者

SAP Cloud Foundry子账户SAP API业务创建Facebook Messenger机器人的Facebook开发者帐户

在本地计算机上安装以下软件(我使用的是Ubuntu 18.04.1 LTS)

SAP Cloud Connector(2.11.3)Python(3.6.7)Tesseract(4.0.0-beta.1版)OpenCV(4.0.0)NodeJS(8.11.4)

让我们通过后续步骤来构建一个!

步骤1–配置SAP Leonardo OCR

转到SAP API Business Hubhttps://api.sap.com/注册一个帐户。搜索"SAP Leonardo Machine Learning Foundation–Functional Services"(SAP Leonardo机器学习基础-功能服务),点击进入下一步。

在下一个屏幕上,搜索"ocr",选择"Expression Service for Optical Character Recognition"。

点击Show API Key并记下键。稍后我们将在Facebook Messenger Bot应用程序中使用该键。

步骤2–配置Tesseract OCR引擎

我们将创建一个Python flask服务器应用程序,从URL读取图像并将其转换为文本。

为了提高OCR结果的质量,首先对输入图像进行预处理,产生如下扫描仪效果:

我们不会涵盖每个框的所有细节,数据更新,如果您有兴趣了解更多信息,请参阅本文:https://www.pyimagesearch.com/2018/09/17/opencv-ocr-and-text-recognition-with-tesseract/

安装所需的库并使用此命令运行服务器。应用程序正在端口3000上运行。

对来自URL的图像执行OCR(示例:https://d85ecz8votkqa.cloudfront.net/support/help\u center/Register\u Order\u Receipt.JPG),执行来自Postman的httpget请求,国内大数据,如果没有错误,我们将得到JSON响应:

结果还不错!

第3步-配置SAP Cloud Foundry

我们将创建两个应用程序,它们将托管在SAP Cloud Foundry中:

appnode demo,用于处理与OCR Tesseract引擎的连接。我们将使用SAP Cloud Connector实现此目的。ScanReceiptBotApp是NodeJS Facebook Bot应用程序。

为本地托管的OCR Tesseract引擎配置SAP Cloud Connector。您可以看到OCR Tesseract引擎正在我的本地机器上运行,端口为3000。

在SAP Cloud Foundry上,将目标设置为指向我的本地机器。

创建connectivity、destination和xsuaa服务实例。你可以参考我的博客怎么做。

部署应用程序。请在我的Git上找到配置文件。注意应用程序路由URL(https://appnode-demo-pxxxxtrial.cfapps.eu10.hana.ondemand.com/). 我们将在Facebook Bot应用程序上使用此信息。

在您的计算机中创建一个文件夹并将其命名为bot1,并创建以下文件:应用程序.js以及清单.yml. 完整的源代码在这里。在应用程序.js,我们需要更新以下行:ocr:SAP Leonardo ocr token我们从"步骤1–配置SAP Leonardo ocr"中获得它。token:我们将在下一步获得的Facebook页面标记。ocrhost:appnode演示应用程序路由我们从"步骤3–配置sapcloudfoundry"获得的URL。uid:是您的SAP Cloud Foundry用户id。pwd:是您的SAP Cloud Foundry密码。

安装以下组件:

注意应用程序正在端口5000上运行。您可以使用此命令在本地运行应用程序,以测试是否存在任何错误。我们稍后会将该应用程序部署到SAP Cloud Foundry。

这是与SAP Leonardo和Tesseract OCR交互的功能。基本上,我们从Facebook Messenger附件中获取图像,将其提供给OCR功能并获得结果。

Facebook机器人Messenger设置

创建一个Facebook页面来托管机器人。

登录到https://developers.facebook.com/并创建新的应用程序ID。输入显示名称,联系电子邮件,然后单击创建应用程序ID.

选择产品并添加Messenger。单击设置继续。

在Messenger平台页面上,向下滚动到令牌生成部分。选择您创建的页面(我的案例是OCRBot)。

授权该页面并单击"确定"继续。

将生成页面访问令牌。复制该令牌,我们将在ScanReceiptBotApp中使用:应用程序.js.

编辑ScanReceiptBotApp:应用程序.js我们在前面创建了令牌,并将其分配给第77行的token变量。保存文件。

使用cf push命令将应用程序部署到SAP Cloud Foundry。

等待部署完成,检查是否有错误。注意路线URL信息。

返回Facebook开发者网站并导航到Webhooks部分。点击设置Webhooks.