一种基于手机摄像头的英文菜单扫描识别翻译应用程序
2017-04-14福建省厦门双十中学
福建省厦门双十中学 连 龙
一种基于手机摄像头的英文菜单扫描识别翻译应用程序
福建省厦门双十中学 连 龙
本研究的目的在于设计出一款基于手机摄像头的英文菜单扫描识别翻译应用程序,解决语言不通无法看懂菜单的问题。通过扫描菜单条目来快速知道菜品的内容,节约时间又能让旅行者点到自己想要的食物,防止点错菜等尴尬场面的发生。本研究使用了Swift和Objective-C平台,使用了如OpenCV、Tesseract等开源类库,通过和指导老师在一起的调试工作,最终达到扫描条目,识别菜名,显示菜品信息的目的,有效方便使用者外出旅行。
菜单;扫描;识别;翻译;手机;摄像头;应用程序;光学字符识别
一、研究目的
本研究的目的在于设计出一款基于手机摄像头的英文菜单扫描识别翻译应用程序,通过这项应用程序,国人在英语国家点餐时就可以解决语言不通无法看懂菜单的问题。通过扫描来快速知道菜品的内容(如菜品中文名、图片及评价),节约时间又能让旅行者点到自己想要的食物,防止点错菜等尴尬场面的发生。
二、理论基础与识别翻译原理
应用程序主要使用的光学字符识别(OCR)算法是通过对图片扫描从而获取图片中文字的算法。本文使用的OCR算法的实现方式在于首先将图片进行预处理,成为可识别图像,再采用极端区域过滤算法,采集文字区域。之后分割图片,进行扫描识别,最终将识别结果拼接起来成为文字。这款应用先用光学字符识别算法对摄像头采集的菜谱图片进行扫描识别,从中采集出字符组成单词,再将对应菜品名称进行模糊搜索,获得名称所对应的条目并显示其信息。
三、应用程序算法部分的设计与实现
1.基础平台
本次应用程序开发过程使用了苹果的Xcode开发软件和Swift 3编程语言以及对应的iOS SDK 10.3,程序代码采用开发者签名以保证通过苹果程序安装验证。
2.所用框架
为了加快项目过程,此项目选用了OpenCV和Tesseract来实现算法。 OpenCV是一个开源计算机视觉与机器学习识别类库(OpenCV About Page,2017),在本应用程序中,OpenCV识别字符区域位置和文字大小,识别结果将传递给Tesseract进行光学字符识别。Tesseract是一种开源的光学识别引擎,它可被直接使用或者API来提取图片中的打字机打出的字符、手写字符和打印字符并且支持多种语言(Tesseract Wiki,2017)。此应用使用了Tesseract的iOS版来提取字符。此项目参考了SwiftOpenCV项目,采取Swift+Objective-C混编的方式调用OpenCV和Tesseract函数。
3.算法实现
在引入了头文件至Swift的情况下,本应用程序先使用AVCaptureSession类创建了一个captureSession用于捕获摄像头的视频流,再添加一个预览层previewLayer到主显示界面上用于实时显示视频流,在之后采集视频流和识别搜索。扫描后的信息将被发送到服务器上对菜名进行模糊搜索,以网页的形式将所需显示信息返回手机应用,手机使用WKWebView控件来显示网页。网页侦听特定动作并给予反馈,如点击“查看完整描述”就能查看特定菜品的详细描述。
四、应用程序交互部分的设计与实现
本应用程序的图形界面使用了storyboard,ViewController中心放置了UIImageView用于在视频预览层上显示扫描框和文字区域框,预览层由Swift生成,添加在主显示控制器中。
扫描之后会显示详细内容显示页面,主要的内容是一个WKWeb-View用于显示所需要的详细信息所在的网页,网页使用HTML编写。
五、对同类产品的查新研究
本研究的同类产品为翻译类软件,如有道词典,支持扫描单词获取释义,这类软件与本研究的产品差别在于本研究能显示菜品的具体信息,帮助旅行者获得菜品图片和评价而词典不具备这些功能,只能提供中文翻译,因此本产品能给使用者带来很多便利。
六、最终应用程序使用效果与研究结论体会、未来发展方向
用户只需将摄像头对准文字,点击屏幕进行扫描,程序会将图像中的名称转为可处理的文字,并搜索出相近菜品名称并显示。无论是对印刷字体还是手写字体,甚至是对具有背景纹路干扰的菜单进行扫描,该应用程序都能获得较好的识别结果,显示出信息页面。
此研究可以让外出旅游的中国人在英语国家点餐时快速知道菜品内容,节约时间又能点到想要的食物,防止点错菜等场面发生。此应用程序目前还在发展阶段,支持的菜品种类还不够多,在后期可能打算与国内外菜品或点评网站合作,增加菜品数量和评价等对使用者有重要意义的信息。
七、对光学字符识别用于菜单翻译可行性的讨论分析
本研究的成果应用程序在大多数情况下都能正常识别出菜品名称,证明了光学字符识别用于菜单扫描的可行性。在光学字符识别下不能识别的字符基本会在模糊搜索中被忽略,达到搜索最近结果的目的。因此光学字符识别作为菜单翻译的基础算法是具有可行性的。
[1]Optical character recognition Wikipedia[EB/OL].https:// en.wikipedia.org/wiki/Optical_character_recognition,2017.
[2]OpenCV About Page[EB/OL].http://www.opencv.org/,2017.
[3]Tesseract Wiki[EB/OL].https://github.com/tesseract-ocr/ tesseract/wiki,2017.