一行代码扫出“敬业福”

一行代码扫出“敬业福”

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

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

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

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

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

或者这样的嘛:【查看动图 2】

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

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

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

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

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

顺便再科普一下 OCR:

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

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

  1. 安装 PIL 库

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

    tesseract-ocr/tesseract

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

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

    github.com/tesseract-oc

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

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

from PIL import Image
import pytesseract
print pytesseract.image_to_string(Image.open('/your/path/to/fu.jpg'), lang='chi_sim')

搞定。

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

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

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

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

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

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

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



其他文章及回答:

学习编程的过程中可能会走哪些弯路,有哪些经验可以参考? - Crossin 的回答
你是如何自学 Python 的? - Crossin 的回答
在这个看脸的时代,如何用 GUI 提高 python 程序的颜值? - Crossin的编程教室 - 知乎专栏
ECharts+Python 给你的数据做“美颜” - Crossin的编程教室 - 知乎专栏
今天,你抢到票了吗 - Crossin的编程教室 - 知乎专栏
Python 与 Excel 不得不说的事 - Crossin的编程教室 - 知乎专栏
Python-Excel 模块哪家强?- Crossin的编程教室 - 知乎专栏
爆款游戏《贪吃蛇大作战》的 Python 实现 - Crossin的编程教室 - 知乎专栏
NBA 举办编程马拉松 - 数据分析时代的到来 - Crossin的文章 - 知乎专栏
想用 Python 做数据分析?先玩玩这个再说 - Crossin的文章 - 知乎专栏
用 Python 实现你的量化交易策略 - Crossin的文章 - 知乎专栏
Python 抓取网页乱码原因分析 - Crossin的编程教室 - 知乎专栏

Crossin的编程教室

微信ID:crossincode
论坛:Crossin的编程教室
QQ群:453300655

编辑于 2017-01-24

文章被以下专栏收录

    本专栏旨在为编程初学者提供浅显易懂的入门科普。微信公众号:Crossin的编程教室(crossincode),内有面向零基础学习者的 Python 入门教程。代码问题可上 bbs.crossincode.com 发帖提问。