核酸报告核查太繁琐?复旦博士生写了130行代码搞定
东方网记者傅文婧、通讯员殷梦昊4月7日报道:打开“健康云”、将核酸报告截图、上传提交统计……这一套操作已经是大学校园里师生配合疫情防控的“常规动作”。但人工核查往往费时费力,又容易出错怎么办?复旦大学信息科学与工程学院博士生李小康日前开发出一项小程序,几分钟就能快速核查数百人的核酸并完成截图,大大提高了核查效率和精度。
从1小时到2分钟
信息科学与工程学院生物医学工程专业博士生李小康,担任学院2019级信息1班辅导员。学校进入准封闭管理之后,忙于抗疫的他,对一项繁琐的日常工作产生了思考。原来,近期学校经常需要开展全员核酸检测,为确保每位在校学生都已参加,学校要求每位班级辅导员都要收集学生的“健康云”截图,如果核查发现有人还没参加核酸,就要及时催促其尽快检测,确保当天“不漏一人”。
李小康担任志愿者
“这个工作听起来好像很简单,但实际做的时候,一个班级的截图可能就需要花上半小时核查,如果是人数多的院系可能需要更久,还可能会看错看漏。”李小康说。
他想,这件事情单调枯燥又费时,重复性很强,正符合计算机程序的特点。写一个代码程序用于自动核查核酸完成截图的想法,在他脑海中产生。
程序一写好,李小康就在自己班级的核酸截图数据上进行验证,准确率果然很高,甚至检测出了之前人工核查没有发现的问题。并且,程序运行时间很短,80多张图只需要20多秒,大大节约时间和人力。
后来,李小康了解到,信息科学与工程学院研工组组长高丽梅每次需要核查学院所有研究生的核酸截图,要花很长时间,特别辛苦。为了减轻高老师的工作负担,李小康也让她使用自己的程序进行核查。800幅截图,原来要几个人枯燥核对一个多小时,现在只需等2分钟就拿到结果。程序目前已在该学院服务2周。
一个多小时跑通代码
说起程序原理,李小康认为并不复杂。作为生物医学工程专业博士生,研究方向是医学影像与人工智能,他平常会接触很多图像处理方法。即使是在现在抗疫工作繁忙的情况下,导师汪源源老师和郭翌老师还是坚持每周找他讨论科研进展,关心他的科研和生活,从未间断。得益于长期的科研习惯和代码敏感性,面对自动核查核酸截图这件事情,李小康第一时间想到以前学到过的OCR (Optical Character Recognition,光学字符识别)技术。
“OCR可以把图像中的文字识别出来,转换为文本信息,就方便用来核查了。而且因为核酸截图是打印字体,识别率非常高,几乎可以做到100%准确。”李小康说。
一张截图中的文本信息很多,包括脱敏处理的姓名、证件类型、证件号码、采样时间、组织机构等内容,但不是所有信息都有用。其中,姓名、采样时间、是否已采样最为关键,是需要检索筛选出的内容。
为此,他想到了Python语言中的正则表达式——可以搜索到字符串中的特定模式内容。“使用正则表达式就可以把想要的信息从OCR识别的文本中筛选出来。最后,确认好每张截图里的姓名、检测时间和是否已采样等信息后,再把所有人的结果输出到Excel文件中,方便人工确认。”
经过思考,李小康的程序思路就基本确定为OCR文字识别+正则表达式筛选。说干就干。3月15日晚,他花了一个多小时就写出了初始代码,共130行,发现确实能够跑通,且运行效率很高。
当然,当中也遇到了几个技术难题——OCR技术的实现、学生提交截图类型不统一、截图数量多时的程序等待焦虑等。李小康逐一尝试工具、分析图像特点,寻找到了最佳解决方案。
程序输出的Excel文件
未来有望覆盖全校
李小康说,自己开发这个程序的初衷是为了减少自己和身边老师的工作量。“虽然原理也很简单,只要是会写代码的人第一时间就会明白是怎么回事,但是不做相关工作的感受不到这件事情的费时费力,自然也不会想出办法。我只是用我学到的知识解决实际工作中的困难。”他说。
李小康把这件事发到朋友圈之后,不少学工的同事表示很感兴趣,他也把代码分享了出去,让有需求的老师们都能及时使用。
“因为程序使用python语言编写,代码注释也写得很完整,只要会使用python,就可以很快上手。”为了方便不会编程的老师使用,李小康最后还把程序进行了封装。“大家需要用的时候,只要在命令行输入一行代码就可以运行,非常简单。”
据悉,学校信息办已与李小康对接。“他的思路和做法给我们很大启发。”相关负责人介绍,正在收集二级单位管理需求,研究制定相关方案,开发全新小程序纳入学校“一网通办”平台。预计在不久的将来,师生们就可不用再通过微信手动收集核酸截图,而是通过小程序直接上传图片,二级单位负责人可在后台随时查看统计结果。