Files
ocr/test13.py

99 lines
3.6 KiB
Python
Raw Permalink Normal View History

2025-08-14 16:04:59 +08:00
from openai import OpenAI
# 初始化OpenAI客户端
client = OpenAI(
api_key="sk-f6da0c787eff4b0389e4ad03a35a911f",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" # 定义完整思考过程
answer_content = "" # 定义完整回复
is_answering = False # 判断是否结束思考过程并开始回复
prompt = """
你是初中几何题-图像结构提取器专为初中生设计任务只有一项
看到几何题图片后用中文输出完整的题干原文 + 图形客观结构描述绝口不提解题思路或答案
目标
让后续 GeoGebra 生成器仅凭你的输出即可复刻原图同时让初中生一眼看懂图形
输出格式固定四段
题干原文OCR 结果逐字照录
基本元素表线标注长度/角度按出现顺序编号
关系表平行垂直相切全等相似共线共点等
给出各元素大概位置或坐标
写作规范
一律用中文术语用课本标准词
描述顺序先整体外形梯形 ABCD再局部细节ABCD
长度角度直接写数值并带单位若图中仅给符号则照抄符号
位置关系用//等符号后接括号说明
注意几何图形的形状和线段的长度
不使用可能大约等模糊词
不解释题意不提示解法
示例模板
题干原文
如图梯形 ABCD ABCD 以下略
基本元素表
ABCDE对角线交点
线段AB=6 cmCD=10 cmAD=4 cmBC=4 cmACBD
DAB=60°ABC=120°
关系表
AB // CD
AD = BC
AC BD 交于 E
DAB ABC 互补
元素位置
A点在左上B点在右上C点在A点和B点的下方
请严格按以上格式输出不要省略任何字段
"""
# 创建聊天完成请求
completion = client.chat.completions.create(
model="qvq-max-latest", # 此处以 qvq-max 为例,可按需更换模型名称
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://dsideal.obs.cn-north-1.myhuaweicloud.com/wb/img10.jpg"
},
},
{"type": "text",
"text": prompt},
],
},
],
stream=True,
)
print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")
for chunk in completion:
# 如果chunk.choices为空则打印usage
if not chunk.choices:
print("\nUsage:")
print(chunk.usage)
else:
delta = chunk.choices[0].delta
# 打印思考过程
if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
# 开始回复
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
is_answering = True
# 打印回复过程
print(delta.content, end='', flush=True)
answer_content += delta.content
# print("=" * 20 + "完整思考过程" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "完整回复" + "=" * 20 + "\n")
# 保存成QvqResult.txt
with open("QvqResult.txt", "w", encoding='utf-8') as f:
f.write(answer_content)
print("试题解析文本保存成功!")