这篇文章的代码主要是将核酸检测的手机截图(目前实现的是甘肃省)转换为表格形式,便于相关工作人员进行统计分析;
- 由于gitee暂时不能克隆,可以按照下面结构新建项目并填入相应的文件。
- 如果你没有使用过paddleocr请一定阅读readme.md文件。
- 环境:windows+ python + PaddleOCR
项目结构
文件解释
解释上图中各个文件及文件夹作用:
img
存放待检测的图片;main.py
程序入口;result.csv
检测结果;readme.md
请务必阅读该文件。
结果展示
主要取图片中的日期、时间、检测机构、结果、被检人姓名。
. main.py
文件代码
from pathlib import Path
import cv2
import numpy as np
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory
def gen_text(img):
START = 0
result = ocr.ocr(img, cls=True)
for line in result: # 选择起始检测位置(假设 仅支持查询以下的才是有效内容)
if line[1][0].startswith("仅支持查询"):
coordinate = np.array(line[0])
START = int(max(coordinate[:, 1])) + 1
break
if START > 1: # 如果是核酸检测截图,则运行图片转文字
date, org, det_res, tested_person = 0, 0, 0, 0
image = cv2.imread(img)[START:, :]
result = ocr.ocr(image, cls=True)
for line in result:
if line[1][0].startswith("检测时间"):
if date != 0:
with open("result.csv", "a+", encoding="utf8") as f:
f.write(str(date) + "," + str(org) + "," + str(det_res) + "," + str(tested_person) + "\n")
print(date, org, det_res, tested_person)
date, org, det_res, tested_person = 0, 0, 0, 0
# 去除字段中多余文字
text = line[1][0].replace("检测时间:", "").replace("检测机构:", "").replace("被检人:", "")
if text.startswith("2022-"): # 日期及时间
text = text[:10] + "," + text[10:]
date = text
else:
if len(text) > 6: # 检测机构
org = text
else:
if text == "阴性" or text == "阳性": # 检测结果
det_res = text
else:
tested_person = text # 被检人
if __name__ == '__main__':
p = Path("./img")
for file in p.glob("**/*.*"):
if file.is_file(): # 是否为文件
img_path = str(file.absolute()) # 绝对路径的文件名
if img_path.lower().endswith("jpg") or img_path.lower().endswith("png") or img_path.lower().endswith(
"jpeg"): # 目前仅支持jpg png jpeg格式图片
gen_text(img_path)
README.md
内容
covid_19_img_rec
介绍
- 该脚本用于识别核酸检测结果的手机截图,并将其转换为csv文件(可以用excel打开)。
- 目前支持甘肃的,如需拓展其他省请联系我;
由于该仓库刚新建,gitee审核三天后其他人才可以看到,因此将其暂放在阿里云盘。
太坑了,刚试了阿里云也分享不了,所以您就按照项目结构新建目录及相应文件吧!!!- 仓库地址
软件架构
img
待检测图片所在文件夹,将需要检测的图片全部放入该文件夹main.py
程序入口result.csv
结果文件
安装教程
- 安装Anaconda及Pycharm
- 安装PaddleOCR
- 新建虚拟环境
conda create --name paddle_env python=3.8 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- 激活虚拟环境
conda activate paddle_env
- 安装paddlepaddle
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
- 安装paddleocr
pip install paddleocr -i https://mirror.baidu.com/pypi/simple
对于Windows环境用户:直接通过pip安装的shapely库可能出现[winRrror 126]
找不到指定模块的问题。建议从这里下载shapely安装包完成安装。 - 如果pip install 某些包失败,尝试一下
conda install package_name
;
- 新建虚拟环境
- 安装其他依赖包
使用说明
- 将待检测图片放入
img
文件夹; - 运行
main.py
文件即可获得结果文件result.csv
; - 第一次运行时需要下载,推理模型,因此启动时间会长一些;
- 后期正常运行,一张图片耗时大约10sec左右;
- 建议一次放入图片不超过200张;
- 每次运行完毕,备份result.csv文件至其他位置然后删除;
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
- 微信: i_biology,联系请备注covid。
特技
- 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
- Gitee 官方博客 blog.gitee.com
- 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
- GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
- Gitee 官方提供的使用手册 https://gitee.com/help
- Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/
------友天下士,读古今书!