整理 | 于轩

出品 | 程序人生 (ID:coder _life)

这段时间以来,全国各地的疫情发展牵动人心。为了更好地配合疫情防控,复旦大学自三月初以来启动了常态化核酸筛查工作。

这一工作要求辅导员挨个检查学生“健康云”核酸完成截图,确保“不漏一人”。听上去简单,做起来难。面对几十甚至上百张重复性高的截图,人工核查往往耗时耗力,一不小心还会看错看漏。

为了解决这一难题,信息科学与工程学院博士生李小康写出130行代码,快速开发出了一项小程序。

这项小程序大大提高了核酸核查的速度和精度,使得原来需要几个人核对一个多小时的800幅截图,现在只需2分钟就能拿到结果。

图源:微博截图

随后,李小康的事迹火上热搜,《人民日报》也为他点赞:“知识就是力量!”

灵光一现,说干就干

据复旦大学官方介绍,李小康是信息科学与工程学院的一名博士生,专业为生物医学工程,研究方向是医学影像与人工智能。在平时的科研生活中,他经常会接触到很多图像处理方法。

除此之外,李小康也是学院2019级信息1班辅导员。在学校进入准封闭管理之后,他同时还担任志愿者一职。

李小康正在做志愿者(图源:复旦大学公众号)

面对日常繁琐的抗疫工作,得益于长期的科研习惯和代码敏感性,李小康萌生了写一个代码程序用于自动核查核酸完成截图的想法。

李小康与学工同事的聊天(图源:复旦大学公众号)

说干就干,3月15日晚,李小康花了一个多小时就搞定了初始代码。程序一写好,他就验证了自己班级的核酸截图数据,发现准确率很高,甚至检测出了之前人工核查时没发现的问题。

同时,程序运行的时间也很短,80多张图只需要20多秒,大大提升了核查的精度和速度,也减轻了相关人员的工作负担。

程序实现原理并不复杂

如此高效的程序是怎么实现的呢?说起原理,李小康认为并不复杂。

他首先想到了OCR(Optical Character Recognition,光学字符识别)技术,这一技术可以识别出图像中的文字,并转换为文本信息。

由于图片中的信息并不是全都有用,李小康又想到了Python中的正则表达式,它可以把想要的信息从OCR识别的文本中筛选出来。

程序实际运行过程(图源:复旦大学公众号)

基于OCR文字识别+正则表达式筛选的这一思路,李小康开发的程序实现了将所需信息从识别的文本中筛选出来。在确认好每张截图的相关信息后,将所有人的结果输出到一个Excel文件中,方便人工确认。

程序输出的Excel文件(图源:复旦大学公众号)

学以致用,积极战疫

谈及开发程序的初衷,李小康表示自己只是为了减少自己和身边老师的工作量。因为程序是用Python编写的,代码注释也很完整,所以会使用Python的可以很快上手。

同时为了方便不会编程的老师使用,李小康还把程序进行了封装,只需简单输入一行代码就能运行。

用李小康的原话来说:“虽然原理也很简单,只要是会写代码的人第一时间就会明白是怎么回事,但是不做相关工作,感受不到这件事情的费时费力,自然也不会想出办法。我只是用我学到的知识解决实际工作中的困难。”

复旦大学官方透露,学校信息办已经和李小康对接,正在根据需求开发新的小程序。预计不久之后,师生们就不用再手动收集核酸截图,只需通过小程序直接上传图片就能查看统计结果。

参考链接:

  • https://mp.weixin.qq.com/s/RogQcUAsZszW5HkYwYcV-w

  • https://weibo.com/2803301701/LnusD1U8P

往期推荐

一不小心节约了 591 台机器!

功能强大!IntelliJ IDEA 2022.1正式发布

这样实现分布式锁,才叫优雅!

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

好文章,我在看❤️

复旦博士用130行代码搞定核酸统计,2分钟解决人工一小时工作量相关推荐

  1. 复旦博士写了130行代码搞定核酸统计

  2. resnet50代码_13、SOTA论文实践-学习ResNet(80行代码搞定残差backbone网络)

    0.论文 Camera Distance-aware Top-down Approach for 3D Multi-person Pose Estimation from a Single RGB I ...

  3. python做事件研究法_35行代码搞定事件研究法(上)

    作者简介: 祝小宇,个人公众号:大猫的R语言课堂 这期大猫课堂将会教大家如何用35行R代码写出最有效率的事件研究法. 注意,本代码主要使用data.table完成,关于data.table包的相应知识 ...

  4. 35行代码搞定事件研究法(下)

    作者简介: 祝小宇,个人公众号:大猫的R语言课堂 前文推送: 35行代码搞定事件研究法(上) Hello亲爱的小伙伴们,上期已经讲到如何对单一事件日计算超额收益,本期将会教大家如何针对多个股票多个事件 ...

  5. 国外stripe支付,超简单几行代码搞定

    国外stripe支付,超简单几行代码搞定 海外的项目 需要stripe支付 很简单 几行代码 先加入依赖: compile 'com.stripe:stripe-android:6.1.2' 总共两种 ...

  6. java微信支付代码_10行代码搞定微信支付(Java版)

    原标题:10行代码搞定微信支付(Java版) 微信支付痛点 对于大多数同学来说,要开发微信支付可不简单.附上微信支付官方文档网页链接 从文档上可以看出,你需要解决很多问题,我就随便挑几个吧. xml与 ...

  7. 万万想不到 10行代码搞定一个决策树

    01决策树模拟实验 文章目录 01决策树模拟实验 要求 决策树简单介绍 搭建环境 产生数据集 划分训练集和测试集 生成决策树 Cross-Validation法 可视化决策树 10行代码搞定决策树 要 ...

  8. 35行代码搞定事件研究法(上)

    作者简介: 祝小宇,个人公众号:大猫的R语言课堂 这期大猫课堂将会教大家如何用35行R代码写出最有效率的事件研究法. 注意,本代码主要使用data.table完成,关于data.table包的相应知识 ...

  9. python数学公式编辑工具_1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器...

    原标题:1行代码搞定Latex公式编写,这个4.6M的Python小插件,堪称论文必备神器 来源:量子位 关注前沿科技 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧箫 发自 凹非寺 ...

最新文章

  1. datafactory生成mysql数据_测试数据生成工具DataFactory的使用
  2. zoj 3209 Dancing links/hust 1017
  3. 盐城大数据产业园人才公寓_住在永川大数据产业园人才公寓,是一种怎样的体验?...
  4. [CTF][Web][PHP][JavaScript]弱类型问题
  5. 知了堂学习笔记-CSS样式整理(一)
  6. 在jQuery代码中,实现转跳
  7. java--DBUtils和连接池
  8. 服务器与服务器之前文件传输,客户端与服务器的文件传输
  9. cuda+cudnn安装(cudnn下载失败解决),环境配置以及遇到的问题记录!
  10. Matlab GUI编程技巧(四):m文件与simulink之间数据传递
  11. IOS菜鸟初学第八篇:接入京东联盟sdk,可打开任意京东的链接
  12. 绘制中国象棋棋盘 - CSS Pseudo Elements 的使用
  13. Oracle数据库有哪些应用结构?
  14. C/C++: __builtin_popcount 函数及其一些 __builtin函数
  15. 基于Matlab仿真极化双基地雷达系统(附源码)
  16. (华硕)笔记本电脑启动提示BOOTMEG is missing
  17. 新员工碰到新问题 公司论坛帮解决
  18. 只说董超正在家里拴 3gp转换软件
  19. Sipeed麦克风阵列板练习
  20. 抗阿达木单抗的抗体可能与阿达木单抗治疗过程中静脉和动脉血栓事件相关

热门文章

  1. 单继承模式下的JAVA和C++
  2. css3书页翻转,CSS3实现3D翻书效果
  3. python3.4安装matplotlib_在python3.7下怎么安装matplotlib
  4. wordpress category.php,wordpress自定义分类目录模板
  5. java integer == int_Java中int和Integer的区别详解
  6. idea base64encoder没有jar包_老师,免费版的IDEA为啥不能使用Tomcat?
  7. python后端接口怎么写_看看人家那后端API接口写得,那叫一个优雅!
  8. 简单理解极大似然估计MLE
  9. 操作系统之进程管理:17、死锁
  10. [Python]网络爬虫(11):亮剑!爬虫框架小抓抓Scrapy闪亮登场!