一体化解决低年级小学生家长帮助孩子生成生字试卷的问题。家长通过手机拍摄生字表,并上传到自己建的本地web服务器,通过ocr识别分析,并自动生成带拼音的word生字测试试卷。
以下是该生字测试系统的详细功能说明:
整个流程: [用户界面] -->[文件上传] -->[OCR文字识别] -->[拼音转换] --> [Word生成] --> [试卷下载]。
Web服务模块:使用Flask框架搭建,提供网页上传界面并处理文件上传(/upload),支持最大16MB文件上传,自动清理临时文件。
OCR识别模块:基于EasyOCR实现自动过滤非中文字符和异常检测机制(空识别结果处理)。
拼音转换模块:使用pypinyin库,带声调输出(如:zhōng)。
Word生成模块:自动创建4列排版表格。标题:22pt宋体居中,汉字:24pt黑色,拼音:14pt灰色。
自建网站布局代码(网页文件存在程序目录下templates文件夹):
upload.html
<!DOCTYPE html>
<html>
<head>
<title>生字测试卷生成器</title>
</head>
<body>
<h2>上传生字表照片</h2>
<form method="post" enctype="multipart/form-data" action="/upload">
<input type="file" name="file" accept="image/*">
<input type="submit" value="生成试卷">
</form>
</body>
</html>
兼容报错页面代码:
error.html
<!DOCTYPE html>
<html>
<head>
<title>错误提示</title>
</head>
<body>
<h3 style="color: red;">错误:{
{ message }}</h3>
<a href="/">返回上传页面</a>
</body>
</html>
初始化配置:
UPLOAD_FOLDER —'./uploads' 上传文件存储目录 ; MAX_CONTENT_LENGTH —— 16 1024 1024 (16MB) 单个文件最大上传尺寸 , ALLOWED_EXTENSIONS —— {'png', 'jpg', 'jpeg'} 允许上传的图片格式 。
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = './uploads'
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16MB
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}
初始化OCR阅读器(第一次运行会自动下载模型):
reader = easyocr.Reader(['ch_sim'])
首先,启动Flask应用。具体来看:1. 目录创建:os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True):确保上传目录存在。exist_ok=True参数表示如果目录已存在,不会抛出异常。
os.makedirs('output', exist_ok=True):创建输出目录,用于存储生成的Word文档。同样使用exist_ok避免重复创建的问题。2启动Web服务:app.run(host='0.0.0.0', port=5000, threaded=True):这里配置了Flask开发服务器的启动参数:host='0.0.0.0':允许外部访问,而不仅仅是本地。port=5000:指定服务运行的端口。threaded=True:启用多线程处理请求,提高并发能力。
if __name__ == '__main__':
# 创建必要目录
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
os.makedirs('output', exist_ok=True)
# 启动Web服务
app.run(host='0.0.0.0', port=5000, threaded=True)
函数ind