前言
转眼间网络程序设计这门课就要结课了,虽然没有做出什么贡献,但是看着项目从无到有以及同学们的踊跃分享还是感到十分欣慰。记得在第一节课老师就说过二八定律,现在有了深刻体会,作为后面80%的我在面对各位大佬的疯狂pr时感到了各种恐惧。
无论如何,作为完全没有软件工程基础的我在经历了一个完整的项目之后对开发过程有了进一步的认识。
项目简介
项目原型是以深度学习和神经网络为工具,以大数据为基础,来辅助医生判断的病例生成系统。
具体过程是将血常规检验报告的图片识别出年龄、性别及血常规检验的各项数据,在识别后与该病人病例相结合进行深度学习,训练出模型后再根据用户拍照或者上传的图片进行识别预测其年龄和性别。
注:目前只支持独墅湖科教区创新医院化验单识别。
运行环境
#安装numpy
sudo apt-get install python-numpy # http://www.numpy.org/
#安装opencv
sudo apt-get install python-opencv # http://opencv.org/
#安装OCR和预处理相关依赖
sudo apt-get install tesseract-ocr
sudo pip install pytesseract
sudo apt-get install python-tk
sudo pip install pillow
#安装Flask框架、mongo
sudo pip install Flask
sudo apt-get install mongodb # 如果找不到可以先sudo apt-get update
sudo service mongodb started
sudo pip install pymongo
#安装numpy
sudo apt-get install python-numpy
#安装PIL
sudo apt-get install python-imaging
#安装Tensorflow
pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc0-cp27-none-linux_x86_64.whl
#运行demo
cd BloodTestReportOCR
python view.py # upload图像,在浏览器打开http://localhost:8080
文件介绍
view.py
Web 端上传图片到服务器,存入mongodb并获取oid,稍作修整,希望能往REST架构设计,目前还不完善。前端采用了vue.js, mvvm模式。
imageFilter.py
对图像透视裁剪和OCR进行了简单的封装,以便于模块间的交互,规定适当的接口
imageFilter = ImageFilter() #
可
以
传
入
一
个opencv
格
式
打
开
的
图
片
num = 22
print imageFilter.ocr(num)
ocr函数 - 模块主函数返回识别数据
用于对img进行ocr识别,他会先进行剪切,之后进一步做ocr识别,返回一个json对象
如果剪切失败,则返回None
@num 规定剪切项目数
perspect函数做 - 初步的矫正图片
用于透视image,他会缓存一个透视后的opencv numpy矩阵,并返回该矩阵