好吧,我承认有那么一点标题党。不过说起标题党这事儿,咱先来看看支付BAO,最近几天搞得全国人民都不安心工作的“集五福”:


一行代码扫出“敬业福”_java


好(shua)好(hou)的“集五福”活动,怎么又叫 AR 了?


我们来让李老板家的百科解释下什么是 AR:


增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。


可是,哥好歹当年在学校也是研究计算机视觉和图形学出身啊。据我所知的 AR 的画风不是应该这样:



或者这样的嘛:



怎么就变成摄像头识别文字了?


看着手中的 App,我不禁开始怀疑,难道我是学了假的 AR……


一行代码扫出“敬业福”_java_02


后来旁边人跟我说,你没看扫到“福”之后有个烟花的效果吗?人家这就是虚实结合!


一行代码扫出“敬业福”_java_03


好吧!这 OCR 文字识别+五毛特效,我也可以分分钟给你搞一个啊。


说干就干。想起咱们教室的“编程实例”中就有一个“验证码识别”的例子,直接改改就行。


一行代码扫出“敬业福”_java_04


顺便再科普一下 OCR:


OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程


反正我只是打算识别出“福”字,那么问题就很简单了。装备上别人已经打造好的工具:


  1. 安装 PIL 库

    pip install pillow

  2. 下载安装 ocr 的库,这里我们选择 tesseract-ocr

    https://github.com/tesseract-ocr/tesseract

  3. 下载安装Python 的 tesseract 驱动模块

    pip install pytesseract

  4. 下载 tesseract 的简体中文训练数据集(放在 tessdata 目录里)

    https://github.com/tesseract-ocr/tessdata/raw/master/chi_sim.traineddata


然后做一张带有文字的图片:


一行代码扫出“敬业福”_java_05


最后,一行代码识别文字(import 啥的当然不算数啦!):

from PIL import Image

import pytesseract

print pytesseract.image_to_string(Image.open('/yout/path/to/fu.jpg'),)


一行代码扫出“敬业福”_java_06


搞定。


核心功能都有了,你再加上摄像头拍摄、图像处理、反馈特效,也只是时间问题。大过年的,我也编不下去了。


当然,这种通用 ocr 模块并不总那么靠谱,比如:


一行代码扫出“敬业福”_java_07


正所谓,祸兮福所倚,福兮祸所伏,大概就是这个道理吧……


什么?你说我这个识别太弱了?可是马云爸爸家的也没好到哪里啊!


一行代码扫出“敬业福”_java_08


所以你真以为我会去满世界的找“福”字吗?年轻人啊,还是应该多提高自己的姿势水平哟。


最后,就用这段小代码给大家送上新年祝福。希望各位勤劳好学的宝宝们,在酒足饭饱之后、吐槽春晚之余、麻将点炮之前,别忘了给家中有理想有追求的小伙伴们推荐我们的公众号“Crossin的编程教室”。


来年我们一起用代码躁起来!


一行代码扫出“敬业福”_java_09