美文网首页
复旦博士生写Python脚本识别核酸截图,是如何做出来的?

复旦博士生写Python脚本识别核酸截图,是如何做出来的?

作者: python大数据分析 | 来源:发表于2022-04-10 13:26 被阅读0次

    最近复旦大学一博士生写Python脚本去核查核酸截图的故事,被人民日报公众号报道出来,夸赞用所学贡献青春力量!

    首先非常肯定这位博士学以致用的精神,虽然技术不难,但是能帮助到疫情,还是值得学习。

    看到知乎上很多人在酸说博士用这么简单的东西,也能上人民日报?

    我想说技术不在于难易,只要能解决眼前之急,帮助到他人,那就是有价值的。

    所以也想和看到这篇文章的小伙伴说一句,永远不要为实现NB的技术而沾沾自喜,真正让你骄傲的是这项技术是否改变了这世界,哪怕只有微不足道的变化。

    看人民日报报道的细节,是用Python做的脚本,我来梳理下这个过程,以及实现的技术。

    1、导入Python的OCR库来识别图片,生成文本字符串

    细心观察便可发现,身边到处都是OCR的身影,文档扫描、车牌识别、证件识别、银行卡识别、票据识别等等。

    OCR本质是图像识别,其包含两大关键技术:文本检测和文字识别。

    先将图像中的特征的提取并检测目标区域,之后对目标区域的的字符进行分割和分类。

    Python中OCR第三方库非常多,比如PaddleOCR、cnocr、easyocr等等。一般安装好后,可以直接import导入,传入图片路径参数,直接调用接口函数即可识别该图片。

    比如书像PaddleOCR里的接口调用

    from paddleocr import PaddleOCR, draw_ocr
    
    # Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
    # 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")  
    img_path = './imgs/test.jpg'
    result = ocr.ocr(img_path, cls=True)
    for line in result:
        print(line)
    

    你只需要传入核酸截图的路径地址,就可以直接输出文本信息

    输出:

    17:28
    检测结果查询
    检测结果【阴性】
    姓名 朱卫军
    采样时间 2022-04-08 12:28
    试剂编码 48
    检测项目 新冠抗原
    

    通过ocr的图片文本识别,会出现上面的结果,可以看到时间、姓名、检测结果等各种各样的信息

    2、通过正则表达式来识别文本信息,提取关键词

    我们得到上面的文本信息,还需要进行整理提取,分别别类填到excel表里

    这里就需要用到正则表达式来处理文本,把关键文本提取出来,这里要提取的是时间、姓名、检测结果、试剂编码、检测项目等.

    说到正则表达式,正则表达式(Regular Expression)通常被用来检索、替换那些符合某个模式(规则)的文本。

    此处的Regular即是规则、规律的意思,Regular Expression即“描述某种规则的表达式”之意。

    那我们来提取下上面的文本信息

    # 导入re模块
    import re
    
    strs = '''17:28
              检测结果查询
              检测结果【阴性】
              姓名 朱卫军
              采样时间 2022-04-08 12:28
              试剂编码 48
              检测项目 新冠抗原'''
    
    name = re.findall('(?<=姓名 ).*',strs)
    time = re.findall('(?<=采样时间 ).*',strs)
    result = re.findall('(?<=【).*(?=】)',strs)
    print(name)
    print(time)
    print(result)
    

    输出结果:

    ['朱卫军']
    ['2022-04-08 12:28']
    ['阴性']
    

    3、将结果输出到excel表格

    当用正则表达式提取出关键信息后,再用pandas将数据输出到excel中,这里需要对数据进行适当调整即可

    import pandas as pd
    import numpy as np
    
    info1 = name + time + result
    info1 = np.array(info1).reshape(1,3)
    
    df = pd.DataFrame(info1,columns=['姓名','时间','检测结果'])
    df.to_excel('核酸结果.xlsx', index=False)
    

    大家也可以拿自己的核酸结果去试试

    相关文章

      网友评论

          本文标题:复旦博士生写Python脚本识别核酸截图,是如何做出来的?

          本文链接:https://www.haomeiwen.com/subject/npjvsrtx.html