# Python期末项目
**Repository Path**: huang_zehao/python-final-project
## Basic Information
- **Project Name**: Python期末项目
- **Description**: No description available
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-01-19
- **Last Updated**: 2021-01-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Python期末项目
撰写人:黄泽豪
撰写日期:2021-01-19
修改日期:2021-01-20
----
## 项目名称
### “文本胶囊”——在线文本识别与纠错网站
### 项目意义
本项目通过Python和百度API中的文本处理与自然语言处理服务,将三种文本识别功能和一种文本纠错功能添加到项目中,旨在解决人们对文本处理的三大问题:
- 1.将大量线下文本进行手动添加到线上,即打字问题;
- 2.无法准确辨别文本中的文字,即文字识别问题;
- 3.对大量文本进行错别字修改,即文本纠错问题。
## 问题表述
本Python项目主要调用了百度API中文本处理与自然语言处理服务,将三种文本识别与一种文本纠错功能以在线网站形式呈现,通过网站的功能来解决诸如文员等工作者在工作中要通过打字添加大量线下文本等耗费时间的问题,以及教育工作者在批改学生作业时出于公正客观的态度,对学生手写字体过于潦草而无法快速准确辨别的问题,同样包括对大量文本进行错别字查找和修改的纠错问题。

## 解决方案
### 整体项目规划
| 步骤 | 步骤描述 | Python基础知识点 |
| --- | --- | --- |
| 第一步 | 调用百度API | API的调用 |
| 第二步 | 通过Flask架构网站,呈现网站页面和实现网站功能 | Flask的使用和函数 |
| 第三步 | 通过MySQL数据库进行对注册和登陆信息的录入和读取 | MySQL数据库的调用 |
| 第四步 | 对调用出的API所返回的参数进行选择和呈现 | 列表和字典取值 |
| 第五步 | 实现日志的读取和页面呈现 | 日志 |
| 第六步 | 修改样式,优化网站 | HTML、CSS |
| 第七步 | 进行云端部署 | Pythonanywhere |
### 编程功能基本描述
1. API的调用
整个项目的第一步应该去寻找最能实现项目的API并进行调用,在这里我选择调用百度的API,通过获取百度API的服务许可(client_id、client_secret、access_token),并阅读API文档,将文本处理和自然语言处理的服务代码放置到我的webtest.py文件中,增删或修改一些代码,解决bug,使网站功能得以初步实现。
- API的调用占整个项目工作的15%,API的学习成本大约为20天。
2. Flask的使用
项目第二步是将调用好的API通过Python的Flask进行网站架构,通过def等函数将API的功能实现在前端页面中,同样将事先编写好的初步的HTML文档和网站的CSS样式连接入网站,并通过代码的增删和修改,解决诸如API调用成功却无法在网站进行功能实现等bug,使整个项目网站得以基本呈现。
- Flask的使用占整个项目工作的35%,Flask的学习成本大约为30天。
3. MySQL数据库的调用
项目第三步是往基本架构好的网站中添加数据库,使得用户可以进行注册和登陆,注册信息会录入数据库中,并通过数据库读取可以进行登陆,整个网站得到进一步完善。首先,应先通过MySQL数据库建立自己的一个数据库,并通过connect函数将我们建立好的数据库导入我们的webtest.py文件中,将其置放于我们的登陆和注册页面的中,牢记数据库连接时需要的**host、port、user、password、db**。
- MySQL数据库的调用占整个项目工作的10%,MySQL的学习成本大约为12天。
4. 选择需要的API返回参数并呈现
项目第四步即是将API功能成功实现后所返回的众多参数进行选择,通过列表和字典取值等方式,将我们所需的参数进行选择并呈现在页面中,将其可视化处理,方便用户观看和获取信息。
- 列表和字典取值占整个项目工作的10%,列表和字典取值的学习成本大约为7天。
5. 日志的读取和呈现
项目第五步便是建立完整的日志记录系统,将整个网站的数据写入日志以及通过读取日志的形式给呈现在网站页面中,并具备独立的后台日志管理文件。
- 日志占整个项目工作的10%,日志的学习成本大约为2天。
6. 网站的优化和样式的修改
项目第六步在网站建立好后,功能得以实现,但网站可能还不够美观,这时就需要用到HTML和CSS的知识对其进行一定的优化了,我们在保证功能完整性的同时也要保证网站的观赏性,只有这样,网站项目才能算大体完成,才能使用户拥有更好的体验感。
- HTML和CSS占整个项目工作的10%,HTML和CSS的学习成本大约为20天。
7. 云端部署
项目第七步即是在云端部署网站,使网站可以通过云端在每台设备上使用,这里我们使用Pythonanywhere进行云端部署,真正完成Python网站项目。
- Pythonanywhere占整个项目工作的10%,Pythonanywhere的学习成本大约为30分钟。
- 由于pythonanywhere有时会延时或者其他原因导致网站的一些功能无法实现,报出500的错误,因此,我在阿里云上购买了新的服务器进行另一份网站部署,阿里云服务器的网站更加稳定。
### 云端项目部署基本描述
1. [Pythonanywhere页面链接](http://hzh0129.pythonanywhere.com/base)
2. [阿里云服务器网站链接](http://47.115.133.22:443/base)
3. 页面结构与功能介绍图

4. 云端功能和部署心得
- > 云端功能:可以上传新的文件以及直接修改文件,可以进行新的部署,在联网情况下可在每一台设备上使用部署好的网站。
- > 部署心得:先在Pythonanywhere官网上注册,拥有自己的账号后,将项目压缩文件包(zip格式)上传,通过控制台进行解压,再移动到创建好的mysite文件夹中,在控制台进行部署操作,使用自带数据库,修改Pythonanywhere给的数据库用户名和密码,更新云端部署,打开网站检测是否部署成功,最终完成云端部署。云端部署还是很简单的,只要把操作步骤学清楚,部署一个网站其实用不了很多时间也不会很麻烦,可以很快将自己的网站部署好,十分值得学习使用。
## 学习/实践心得总结及感谢
### 心得总结
通过本项目,我对自己的Python编程能力有了基本了解,四天时间里我都在弄这个项目,它让我感受最深的便是我自己确实有掌握了Python的一些基本知识,并能成功运用,当然,在一些方面我仍然有缺点,还不太能熟练的进行代码编写,改错能力还不够强,一些bug还是要弄很久才能解决。对于Python的学习,我觉得应该多上点心,不能总是等别人先学完再去问别人,同样的上课时间里认真听讲,课后多做点练习,只要敢于付出努力,收获和回报肯定是有的。当然,你首先不能因为害怕就不去学习,你越是害怕,你就越学不会,编程是要越挫越勇的。编程思维让我能更好更快的完成我的期末项目,但我的编程思维还不够强,所以对于期末项目仍感觉到有一些难度。
### 感谢
- 感谢百度API提供的免费服务
> [百度手写文字识别API文档](https://ai.baidu.com/ai-doc/OCR/hk3h7y2qq)
> [百度数字识别API文档](https://ai.baidu.com/ai-doc/OCR/Ok3h7y1vo)
> [百度通用文字识别API文档](https://ai.baidu.com/ai-doc/OCR/1k3h7y3db)
> [百度文本纠错API文档](https://ai.baidu.com/ai-doc/NLP/Ik6z52gp8)
- 感谢Pythonanywhere提供免费的云端部署服务
> [pythonanywhere官网](https://www.pythonanywhere.com)
- 感谢CSDN技术社区中的博客们提供的技术支持
> [调用百度API进行文本纠错](https://blog.csdn.net/weixin_30847865/article/details/98840519)
> [Python Flask Web 框架入门](https://blog.csdn.net/sinat_38682860/article/details/82354342?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161097732616780262571570%252522%25252C%252522scm%252522%25253A%25252220140713.130102334..%252522%25257D&request_id=161097732616780262571570&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-82354342.first_rank_v2_pc_rank_v29&utm_term=python%20flask)
> [超详细MySQL安装及基本使用教程](https://blog.csdn.net/bobo553443/article/details/81383194?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161097786716780299029267%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161097786716780299029267&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-2-81383194.first_rank_v2_pc_rank_v29&utm_term=mysql)
- 感谢菜鸟教程提供的HTML、CSS和Python3教程
> [HTML 元素](https://www.runoob.com/html/html-elements.html)
> [HTML 颜色名](https://www.runoob.com/html/html-colornames.html)
> [HTML 属性](https://www.runoob.com/html/html-attributes.html)
> [HTML CSS](https://www.runoob.com/html/html-css.html)
> [HTML 区块](https://www.runoob.com/html/html-blocks.html)
> [CSS 语法](https://www.runoob.com/css/css-syntax.html)
> [CSS 背景](https://www.runoob.com/css/css-background.html)
> [CSS 圆角](https://www.runoob.com/css3/css3-border-radius.html)
> [CSS 按钮](https://www.runoob.com/css3/css3-buttons.html)
> [Python3 内置函数](https://www.runoob.com/python3/python3-built-in-functions.html)
> [Python3 错误和异常](https://www.runoob.com/python3/python3-errors-execptions.html)
> [Python3 JSON 数据解析](https://www.runoob.com/python3/python3-json.html)
- **最后,由衷感谢游鸽老师、许智超老师和其他同学们的帮助,大家在我的期末项目中都帮了不少忙,十分感谢大家!**