李小康正在做志愿者 本文图均为 复旦大学供图
三月初以来,复旦大学启动常态化核酸筛查工作,要求辅导员必须核查学生“健康云”核酸完成截图,确保“不漏一人”。
人工核查费时费力又易出错,为此,信息科学与工程学院生物医学工程专业博士生李小康快速开发一项小程序,几分钟就能快速核查数百人的核酸完成截图。
李小康是信息科学与工程学院的一名辅导员,他表示,核查截图这件事单调枯燥又费时,重复性很强,正符合计算机程序的特点。于是,他有了想法,写一个代码程序来自动核查。
李小康最初写程序时和学工同事的聊天
程序一写好,李小康就在自己班级的核酸截图数据上验证,准确率果然很高,甚至检测出了之前人工核查没有发现的问题。程序运行时间很短,80多张图只需要20多秒。
该学院研工组需要核查学院所有研究生的核酸截图,原来要几个人核对一个多小时。用了李小康的程序后,800幅截图,现在只需等2分钟就拿到结果,程序目前已在该学院服务2周。
说起原理,李小康认为并不复杂。作为生物医学工程专业博士生,研究方向是医学影像与人工智能,他平常会接触很多图像处理方法。得益于长期的科研习惯和代码敏感性,面对自动核查核酸截图这件事情,李小康第一时间想到以前学到过的OCR (Optical Character Recognition,光学字符识别)技术。
“OCR可以把图像中的文字识别出来,转换为文本信息,就方便用来核查了。而且因为核酸截图是打印字体,识别率非常高,几乎可以做到100%准确。”李小康说。
程序实际运行过程
一张截图中的文本信息很多,包括脱敏处理的姓名、证件类型、证件号码、采样时间、组织机构等内容,但不是所有信息都有用。其中,姓名、采样时间、是否已采样最为关键,是需要检索筛选出的内容。为此,他想到了Python语言中的正则表达式——可以搜索到字符串中的特定模式内容。
“使用正则表达式就可以把想要的信息从OCR识别的文本中筛选出来。最后,确认好每张截图里的姓名、检测时间和是否已采样等信息后,再把所有人的结果输出到Excel文件中,方便人工确认。”经过思考,李小康的程序思路就基本确定为OCR文字识别+正则表达式筛选。
3月15日晚,他花了一个多小时就写出了初始代码,共130行,发现确实能够跑通,且运行效率很高。
当然,当中也遇到了几个技术问题——OCR技术的实现、学生提交截图类型不统一、截图数量多时的程序等待焦虑等。李小康逐一尝试工具、分析图像特点,寻找到了最佳解决方案。
“虽然原理也很简单,只要是会写代码的人第一时间就会明白是怎么回事,但是不做相关工作的感受不到这件事情的费时费力,自然也不会想出办法。我只是用我学到的知识解决实际工作中的困难。”他说。
为了方便不会编程的老师使用,李小康把程序进行了封装。“大家需要用的时候,只要在命令行输入一行代码就可以运行,非常简单。”
复旦大学信息办已与李小康对接,正在收集学校各二级单位管理需求,研究制定相关方案,开发全新小程序纳入学校“一网通办”平台。
责任编辑:高文 图片编辑:乐浴峰