USTC-NP2016秋季网络程序设计
这门课的第一堂,老师说要“玩个大的”,因为自己基础不太好,便打了退堂鼓,但是由于一直以来接受的都是传统的“灌输式”教学方法,孟宁老师这种类似团队做项目,让同学们自己来学习分享的教学方法十分吸引我,于是选择了这门课,果然受益匪浅。
课程主要目标
这门课程的主要目标是通过学习神经网络和深度学习等机器学习算法来实现出一个完整的对血常规检验报告的OCR识别、学习与分析系统,主要对年龄与性别进行了预测。
//项目的最后效果就是,用户上传一张血常规报告单的图片,后台首先进行OCR识别出图片中的项目,将其存入MongoDB,然后会根据机器学习算法生成的模型对用户数据进行预测。
项目地址
项目总览
本项目分两大部分,前端展示和后台OCR及预测;三大模块,web模块,图像OCR模块,学习预测模块。
项目环境配置及运行
环境配置
安装numpy,python的数据科学库
1 $ sudo apt-get install python-numpy
安装opencv,
1 $ sudo apt-get install python-opencv
安装pytesseract( OCR识别库pytesseract开源项目: pytesseract)
$ sudo apt-get install tesseract-ocr
$ sudo pip install pytesseract
$ sudo apt-get install python-tk
$ sudo pip install pillow
安装Flask框架
$ sudo pip install Flask
安装mongodb
$ sudo apt-get install mongodb # 如果提示no module name mongodb, 先执行sudo apt-get update
$ sudo service mongodb started
$ sudo pip install pymongo
安装Tensorflow,当前最流行的深度学习平台
$ sudo apt-get install python-numpy
$ sudo apt-get install python-imaging
$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.0rc0-cp27-none-linux_x86_64.whl
运行
$ cd BloodTestReportOCR
$ python view.py # upload图像,在浏览器打开http://yourip:8080
各模块说明
Web模块
view.py:
Web 端上传图片到服务器,存入mongodb并获取oid,目前并不完善。
图像识别模块
imageFilter.py
实现了图像的透视,剪裁,识别等,OCR进行了简单的封装,以便于模块间的交互,规定适当的接口
imageFilter = ImageFilter() # 可以传入一个opencv格式打开的图片
num = 22
print imageFilter.ocr(num)