用Python让多人“共享”扫描仪

    谢作如 谢集

    

    

    

    扫描仪是办公室中最常见的设备之一。虽然智能手机上配置的摄像头像素越来越高,人们习惯于用“随手一拍”来替代过去的“扫描”动作,但毕竟拍摄的效果不好,得到的图片往往不够平整。笔者学校创客空间中有一台爱普生扫描仪,虽然平时用处不大,但关键时刻总需要它的帮忙。为了方便使用,我们希望将其设置为网络共享,随时随处可以使用,最大限度地提升其利用率。

    2020年3月,我们曾经利用虚谷号和Python将家里的惠普一体机(型号为“M126a”)改造为网络版的一体机,使其支持远程打印、远程扫描等功能。但是很遗憾,我们暂时找不到这台爱普生扫描仪在arm64系统下的驱动程序,只能将其安装在X86架构下的拿铁熊猫上,经过一番折腾,总算实现了多人共享,普通扫描仪变身为网络扫描仪(如图1)。

    ● 思路分析

    因为之前已经成功地在一体机上实现网络扫描的功能,我们再次选择这样的做法,即利用Python写一个Web服务器,通过访问网页来操作扫描仪,具体方法如下:

    用Python的Flask框架写一个Web服务器,运行在连接扫描仪的迷你电脑上。用户通过网页发送扫描命令,Python将调用系统的命令驱动扫描仪,得到图片后再借助格式转换工具转化为JPEG格式,最后通过网页显示图片,提示用户下载。这一过程描述起来有点复杂,但执行速度其实很快,而且对用户来说过程“透明”:点击网页的“扫描”按钮,一会儿就能得到图片,是很好的体验。基于Web的扫描仪应用系统的运行流程如图2所示。

    这一做法的优势很明显,只要能上网的终端都可以使用,操作非常简单,部署起来也方便。创客空间中有各种迷你电脑或者闲置的电脑,只要装上Linux系统,配置好扫描仪的驱动即可。至于为什么要选择Linux,是因为Linux下有支持命令行的扫描仪软件scanimage和格式轉换软件imagemagick。在Windows下,类似功能的软件很难找到。

    ● 程序实现

    Flask是Python的轻量级Web开发框架,也是浙教版必修二《信息系统与社会》模块的教学内容之一。

    1.功能测试

    先在Jupyter上编写代码,模拟一下核心功能,即扫描。

    启动扫描命令(如图3)。

    图片转换命令(如图4)。

    很顺利,一张图片就出来了,Python就这么神奇。

    2.代码编写

    借助教材中的案例,我们开发了一个很简单的Web应用。核心代码仅仅一个文件——webscan.py。如图5所示,“templates”中是作为模板的两个静态网页。“static”中放两个js文件,借助jquery实现了文件列表的排序功能。“static”文件中的scan文件夹,则用来存放扫描文件(如图6)。

    “webscan.py”代码中加了如下几条路由,具体介绍如下页表所示。

    限于篇幅,下页图7的代码仅仅提供了扫描功能的部分,如果需要完整代码和相关的网页模板(“index.html”和“list.html”文件),请访问虚谷号的GitHub,或者向编辑索取。

    ● 系统应用

    这个基于Web的扫描仪应用系统,最后命名为“WebScan”。代码用vscode编写,在Anaconda、mPython等环境中测试通过,支持Python3.5及以上版本。在虚谷号、MacOS和Ubuntu等系统上都能成功部署(如下页图8)。

    客户端使用Chrome、Safari、Edge和Firefox等浏览器,都能够正常访问。同样,在手机上访问、操作也很正常。

    1.扫描文件(如下页图9)

    2.浏览文件(如下页图10)

    我们把Web服务器的地址做成二维码贴在扫描仪上面,手机一扫就打开页面,然后开始操作,非常方便。

    ● 拓展思考

    在京东和淘宝上,我们都没有找到价格在1000元内的具备网络共享功能的平板扫描仪。具备网络功能的,要么是高拍仪,要么是动辄上万的高速扫描仪。将办公室中的普通扫描仪配上迷你电脑,然后放在学校的公用办公区域,方便师生们使用,应该是一个不错的创意应用。

    想象一下,教师们带着文稿走到扫描仪前面,放好,然后拿出手机扫一下二维码。点击网页上的按钮,十几秒钟后,扫描的图片就到了手机里了。这不是很方便吗?学生没有手机怎么用呢?比如插上U盘,按下按钮开始扫描,扫描图片直接存入U盘带走。要实现这样的功能,编程起来也很简单。有了Python,解决这些问题一点都不困难。

相关文章!
  • 高等教育人工智能应用研究综述

    奥拉夫·扎瓦克奇-里克特 维多利亚·艾琳·马林【摘要】多种国际报告显示教育人工智能是当前教育技术新兴领域之一。虽然教育人工智能已有约

  • 基于学生主体设计“学案”,发展

    李春艳摘 要:新课程改革的推进发展促使教师在初中教学活动中更加重视培养学生的核心素养,促进学生全面发展。在素质教育理念下,学生学

  • 小学高年级作文教学问题及对策

    戴春雅【摘? 要】写作能力的培养是语文教学的重要组成部分,它是基于学生的听、说、读能力,对学生的写作能力展开培养,进而促进学生综合能