构建作文批改系统——四

构建作文批改系统——四

前面的工作暂告一段落。(前)后续工作已由组内其他成员实现。本次要实现的是一个全新的功能模块——教师端的部分功能。

1.多模态输入:支持OCR识别作文。支持上传pdf识别作文。

2.智能识别(批改):识别比喻/拟人等常见修辞,识别高级修辞。识别错别字,病句,标点误用。识别语病,病句,语法错误等。

实现OCR

使用pytesseract以及tesseract

后者需要安装在本地。下载地址

记得在安装时,别忘了额外勾选中文包。

开始实现:

app.config['ALLOWED_EXTENSIONS_OCR'] = {'png', 'jpg', 'jpeg', 'gif', 'pdf'} # 支持多种格式
# 这里指定为你自己的路径
pytesseract.pytesseract.tesseract_cmd = r'D:\Project\OCR\tesseract.exe'

核心代码其实就三行:

# 使用Tesseract进行OCR识别
img = Image.open(filepath)
img = img.convert('L').point(lambda x: 255 if x > 180 else 0) #这一句是为了提高识别率,也有其他方法。
text = pytesseract.image_to_string(img, lang='chi_sim')
print(text) #测试用

**测试:**在test文件里制定好路径,发送一下POST请求即可。

with open(image_path, 'rb') as img_file:
	files = {'file': img_file}  # 将文件加入到 request 的文件列表中

	# 发送 POST 请求
	response = requests.post(url, files=files)

在这里插入图片描述

结果:

**可以发现其实是有识别错误的情况的。。。**正确率大概90%吧。

实际上:对清晰,白底黑字的图片识别效果比较好。但对有格子背景之类的图片识别效果非常不好

**实现读PDF:**使用pdfplumber.

把test和状态码返回前端即可。

# 提取PDF文本
		text = ""
		with pdfplumber.open(filepath) as pdf:
			for page in pdf.pages:
				text += page.extract_text() + "\n"

实现批改:

这里我们简单使用学校提供的deepseek API来实现,好好写prompt就行了。

只需写一个后端接口,集三种功能于一身:

def recognize_text():
	# 此方法需要传入的参数:
	# 1.文本 2.一个int变量function_id
	# 文本就是作文,id用于选择不同的功能
	# id=1:识别修辞手法
	# id=2:识别错别字与标点符号错误,并提供改正建议
	# id=3:识别语法错误与病句并提供修改建议
    ...

根据不同的function_id我们选择不同的promptuser——context即可:

payload = {
    "model": "DeepSeek-R1",
    "messages": [
       {
          "role": "system",
          "content": prompt
       },
       {
          "role": "user",
          "content": f"{user_context}\n以下为作文内容:\n{data['text']}"
       }
    ],
    "temperature": 0.7,
    "stream": False
}

例如功能2:

elif function_id == 2:
    prompt = "你是一位专业的语文老师,你的任务是检查以下作文中的错别字与标点符号误用,并提供详细的改正建议。"
    "请注意以下几点:\n"
    "1. 识别作文中的书写错误与标点符号的不恰当使用。\n"
    "2. 提供每个错误的改正建议。\n"
    "3. 在必要时,简要解释错误的原因。\n"
    "4. 保持对作文整体内容的理解,确保建议符合语境。"
    "5. 无需给出你的思考过程"
    user_context = "请帮我检测这篇作文中的错别字与标点符号误用的情况。"

测试一下功能3:

在这里插入图片描述

看到控制台正常返回了批改结果即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值